Задать вопрос
@IvanVamDam

Как запустить программу (XIP) из внешней QSPI FLASH STM32?

Здравствуйте, пытаюсь настроить старт программы МК STM32H743 из внешней памяти W25Q64 (8 МБ) соединенный по интерфейсу QSPI. Я смог сделать рабочий загрузчик памяти, убедился в корректности его работы при помощи утилиты STM32CubeProgrammer. Memory mapping работает корректно.
Касаемо самой проблемы, то я гружу во внутреннюю FLASH МК программу закгрузчика, которая конфигурирует MPU, QSPI, включает MemoryMappedMode, а также копирует адрес целевой программы (0x90000000 - адрес QSPI) в регистр MSP и переходит в ResetHandler (адрес 0x90000000+4).
Когда я гружу все это в МК целевая программа не стартует из внешней памяти, хотя под дебагом видно, что ResetHandler лежит в области внешней FLASH. 68617ad86ebfb403802915.png
При этом если я пытаюсь сделать шаг то программа начинает вертеться где-то во внутренней FLASH, при этом взводится бит IBUSERR в регистре CFSR, что может быть вызвано ошибкой во время выборки инструкции. Возможно я не так настраиваю модуль MPU, я пробовал разные варианты, но все равно не получается стартовать из внешней памяти. КЭШ тоже пробовал включать и отключать, при этом если КЭШ включен изначально, то перед прыжком в целевую программу он должен быть отключен. Был бы рад услышать мысли по поводу данной проблемы.
  • Вопрос задан
  • 24 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы