STM32: загрузка и извлечение таблицы векторов из SRAM
Я хотел бы запустить мою программу из области SRAM устройства.
Мне казалось совершенно ясным, что я должен выполнить следующие шаги:
- Изменить регистр смещения векторной таблицы
SCB->VTOR
(расположен в0xE000ED08
), чтобы указать начало области SRAM, так как именно там находится моя векторная таблица:0x20000000
- Сбросьте устройство, чтобы оно снова получило значение инициализации указателя стека и адрес обработчика сброса.
К сожалению, всякий раз, когда я выпускаю reset init
команда в OpenOCD, значение SCB->VTOR
очищается. Следовательно, значение инициализации указателя стека и адрес обработчика сброса выбираются из 0x00000000
вместо 0x20000000
,
Вопрос
Как мне получить мой STM32F4 для извлечения таблицы векторов из 0x20000000
?
1 ответ
Решение
Просто загрузите SP
(MSP) от 0x20000000
(=VTOR) и PC
от 0x20000004
(=VTOR+4) вручную.
reset init
Команда обычно сбрасывает весь чип, а не только ядро - и VTOR
будет инициализирован до нуля даже тогда.