STM32: загрузка и извлечение таблицы векторов из SRAM

Я хотел бы запустить мою программу из области SRAM устройства.

Мне казалось совершенно ясным, что я должен выполнить следующие шаги:

  1. Изменить регистр смещения векторной таблицы SCB->VTOR (расположен в 0xE000ED08), чтобы указать начало области SRAM, так как именно там находится моя векторная таблица: 0x20000000
  2. Сбросьте устройство, чтобы оно снова получило значение инициализации указателя стека и адрес обработчика сброса.

К сожалению, всякий раз, когда я выпускаю reset init команда в OpenOCD, значение SCB->VTOR очищается. Следовательно, значение инициализации указателя стека и адрес обработчика сброса выбираются из 0x00000000 вместо 0x20000000,


Вопрос

Как мне получить мой STM32F4 для извлечения таблицы векторов из 0x20000000?

1 ответ

Решение

Просто загрузите SP (MSP) от 0x20000000 (=VTOR) и PC от 0x20000004 (=VTOR+4) вручную.

reset init Команда обычно сбрасывает весь чип, а не только ядро ​​- и VTOR будет инициализирован до нуля даже тогда.

Другие вопросы по тегам