Используя STM32H753, у меня есть загрузочный код в банке 1, сектор 0 (0x08000000
), который обнаруживает и переходит к коду приложения в банке 2, сектор 0 (0x08100000
).В коде приложения я пытаюсь стереть и переписать банк 1 сектор 0, но MCU блокируется (без вывода обработчика ошибок), когда я устанавливаю FLASHH7_CR_START
слишком рано после сброса.
Код приложения довольносложный и включает в себя множество функций чипа, но ни обмен банка, ни FLASH CRC.Известно, что обработчик ошибок работает.
Вещи, которые я пробовал:
- занято, подождите 50-100 мс после сброса перед удалением;успешно
- перенаправить стирание / перезапись в банк 1, сектор 5;успешно (без занятого ожидания)
- код приложения оставляет кэши отключенными;по-прежнему не удается
- сравнить банк регистров FLASHH7 при сбросе и через 100 мс;без изменений
- проверить ошибки в
SR
и очистить все обнаруженные с помощью CCR
;ошибок не найдено - проверка
WRP
и PRAR
регистров;защита не установлена - проверьте исправления rev6 (19 июня 2019 г.);нет соответствующих проблем
Загрузочный код не разрешает прерывания или кэширование, и код приложения записывает в VTOR
.
Кажется, что-то еще зависит от удаленияЗагрузочный сектор STM32H7 (или недавно выполненный сектор).Чего мне не хватает?