Как стать автором
Поиск
Написать публикацию
Обновить
0
0

Пользователь

Отправить сообщение

Я не уверен, что так можно сделать за счет этих настроек. В CubeIde не знаю, можно или нет, но в keil можно было в качестве костыля прикрепить *.ini файл c PC = 0x0800A000, и тогда отладка начиналась с нужного адреса.

Ну в целом если вы вызываете Reset вы и должны попадать сначала в загрузчик, попробуйте его запускать в режиме отладки с залитым основным приложением и посмотрите откуда идет обращение.

Если у вас по адресу 0х08000000 уже есть программа она ничего не знает, о приложении которое лежит в более старших адресах и вы сами должны перейти в bootloader на стартовый адрес основной программы. Примерно так будет выглядеть код перехода на основную программу в bootloader.

#define MAIN_PROGRAM_START_ADDRESS        (uint32_t)0x0800A000

int main () {
  __disable_irq();
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, MAIN_PROGRAM_START_ADDRESS);
  jumpAddress = *(__IO uint32_t*) (MAIN_PROGRAM_START_ADDRESS + 4);
  Jump_To_Application = (pFunction) jumpAddress;
  __set_MSP(*(__IO uint32_t*) MAIN_PROGRAM_START_ADDRESS);
  Jump_To_Application();
} 

Правильнее выполнить перенос таблицы векторов прерываний в обработчике прерывания Reset, так как main не первая выполняемая функция.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность