ARM Вектор стол - PullRequest
       6

ARM Вектор стол

1 голос
/ 06 февраля 2020

2.3.4. Таблица векторов

Таблица векторов содержит значение сброса указателя стека и начальные адреса, также называемые векторами исключений, для всех обработчиков исключений. На рисунке 2.2 показан порядок векторов исключений в таблице векторов. Наименее значимый бит каждого вектора должен быть равен 1, что указывает на то, что обработчиком исключений является код Thumb, см. Состояние Thumb.

Это смущало меня, я определил свои векторы следующим образом:

vector_table:
.word _estack 
.word Reset_Handler  
.word Hard_Fault

, и мой обработчик сброса заканчивается на 0x8000020 <Reset_Handler>:, поэтому LSB равен 0. Но мой процессор работает отлично. Я использую Cortex M7.

1 Ответ

2 голосов
/ 06 февраля 2020

Компилятор делает это автоматически. После предложения Джестера я посмотрел на hexdump и обнаружил, что он был изменен с 0x0800 0020 на 0x0800 0021

Однако, если глобальный символ не был определен как .tpye foo, %function или .thumb_func, компилятор не изменит его значение, и он приведет к серьезной ошибке, так как Cortex M7 поддерживает только набор команд большого пальца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...