|
|
|
Отладка программы под бутлоадер. |
|
|
|
Sep 14 2018, 13:34
|
Частый гость
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008
|
Подскажите как отладчику указать, чтоб он стартовал с определенного адреса? Читал, что вроде как нужно в скаттер файле определить точку входа через команду ENTRY. Только как это сделать я не знаю, что указывать в ее параметрах? Или это не то? Сам файл у меня тот, что предлагается стандартно (с измененной адресацией под бут) Код ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; *************************************************************
LR_IROM1 0x08005000 0x0000B000 { ; load region size_region ER_IROM1 0x08005000 0x0000B000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x200000C0 0x00001F40 { ; RW data .ANY (+RW +ZI) } }
|
|
|
|
|
Sep 15 2018, 04:30
|
Ally
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050
|
Цитата(maxntf @ Sep 14 2018, 16:34) Подскажите как отладчику указать, чтоб он стартовал с определенного адреса? Эт зависит от отладчика. В общем случае смотреть надо скрипты отладчика под каждый конкретный чип. Например J-Link прежде чем загрузит отладочную версию программы выполняет кучу скриптов. Там и нейтрализация WDT, и активизация схем тактирования, и операции с памятью и т.д.
|
|
|
|
|
Sep 15 2018, 11:00
|
Частый гость
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008
|
Цитата(scifi @ Sep 15 2018, 13:37) SP=*(int*)0x08000000 PC=*(int*)0x08000004 Это куда? Вот файлик debug.ini Код FUNC void Setup (void) {
SP = _RDWORD(0x08005000); // Setup Stack Pointer PC = _RDWORD(0x08005004); // Setup Program Counter XPSR = 0x01000000; // Set Thumb bit
}
Setup(); LOAD %L INCREMENTAL nocode // load debug info without performing reset Там бы дописать что-то типа: Код IF(RESET) Setup(); Только возможно ли такое? У меня сейчас получается что при загрузке отладчика срабатывает функция Setup(), а когда я нажимаю в нем Reset то SP и PC сбрасываются. И получается что нужно перезагружать отладчик.
|
|
|
|
|
Sep 15 2018, 12:18
|
Частый гость
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008
|
Цитата(scifi @ Sep 15 2018, 14:27) Кстати, вот что-то интересное пишут. Спасибо! То, что нужно. Код FUNC void Setup (void) {
SP = _RDWORD(0x08005000); // Setup Stack Pointer PC = _RDWORD(0x08005004); // Setup Program Counter XPSR = 0x01000000; // Set Thumb bit
}
Setup(); LOAD %L INCREMENTAL nocode // load debug info without performing reset
FUNC void OnResetExec(void) { Setup(); }
Сообщение отредактировал maxntf - Sep 15 2018, 12:20
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|