Search
Write a publication
Pull to refresh
1
0
Send message

Так я хочу отладить основную программу, а не бутлодер.И по моей логике, если я запустил отладку основного приложения и указал в .Id что оно у меня начинается с адреса 0x08010000, то после ресета через IDE я должен попасть на дрес 0x08010000, а не на 0x08000000. И при старте отладки я должен попасть на адрес со смещением, а не на дефолтный.

Так и происходит, если прошивать МК готовыми бинарниками: сначала запускается бутлодер потом он передает управление основной программе. С этим проблем нет, все работает. Проблема начинается когда я пытаюсь в IDE отладить основную программу. При заливки программы в режиме Debug выходит ошибка, о которой я писал выше. Но программа заливается и стартует, правда со своими приколами. При попытке сделать reset, она опять берет не правильные адреса и крашится.

Вы не поняли. У меня загрузчик начинается с 0x08000000, а основная программа с 0x08010000. Так вот когда загружаю основную программу, она зачем то лезет в область загрузчика за адресами, берет оттуда не правильные адреса и пытается их выполнить, естественно при этом выплевывая ошибку. Такое ощущение что недостаточно указать адреса в файле .Id, надо IDE объяснить, что старт программы осуществлять тоже с других адресов.

Даже после выполненных действий при загрузке открывается страница с ошибкой "Break at address "0x8000f40" with no debug information available, or outside of program code.", а в дизассемблере видно попытки чтения данных с адреса 0x08000000, откуда оно и берет переход по адресу 0x08000f40. Но программа загружается и работает.

Information

Rating
Does not participate
Registered
Activity

Specialization

Разработка ПО для микроконтроллеров
Middle