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

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

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

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

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


Вопрос

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


person Multisync    schedule 27.01.2015    source источник


Ответы (1)


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

Команда reset init обычно сбрасывает всю микросхему, а не только ядро, и даже в этом случае VTOR будет обнулен.

person Turbo J    schedule 28.01.2015