STM32F7 зависает после перезагрузки системы - PullRequest
0 голосов
/ 23 декабря 2018

У меня следующая проблема:

STM32F7 Flash начинается с 0x0800 0000. Моя программа работает нормально.Затем я сдвигаю свой код во FLASH на 0x0802 0000, чтобы освободить место для будущего загрузчика.Я изменил свой файл MemoryMap.xml:

<MemorySegment start="0x08020000" name="FLASH" size="0x80000" access="ReadOnly"/>

и соответствующий файл flashplacement.xml:

<ProgramSection alignment="0x100" load="Yes" name=".vectors" start=" 0x8020000"/>

и начал отладку .... Программа работает нормально, пока не произойдет ошибка соединения, котораязапускает перезагрузку системы с помощью вызова HAL_NVIC_SystemReset.В результате получается зависшее приложение, а это не тот случай, когда мой код находится в начале FLASH (0x0800 0000). Кто-нибудь знает, почему это происходит?

С уважением

/ Kostas

1 Ответ

0 голосов
/ 24 декабря 2018

Ответ довольно прост.Вы не можете просто переместить начальный адрес памяти.Ваш микро получит значение указателя стека и адрес процедуры обработчика сброса с того же адреса, что и обычно.Вам необходимо, чтобы этот загрузчик уже мигал (по крайней мере, таблица векторов и обработчик сброса, который установит новую таблицу векторов, установит указатель стека приложения и передаст управление в ваш обработчик сброса приложения

...