Отладка исключения ошибки ARM Data Abort - PullRequest
4 голосов
/ 01 сентября 2009

Итак, теперь я понимаю, что получаю исключение ARM Data Abort - я вижу, как перехватить само исключение (неправильный адрес в библиотеке STL), но я хотел бы вернуться к стековому фрейму до исключения , Я использую IAR toolchain, и он говорит мне, что стек вызовов недоступен после исключения - есть ли способ убедить инструмент показать мне стек вызовов? Спасибо за быструю помощь!

1 Ответ

6 голосов
/ 01 сентября 2009

, если вы посмотрите на ARM ARM (Справочное руководство по архитектуре ARM, просто google "arm arm"), Модель программистов -> Режимы процессора и Регистры. Находясь в режиме прерывания, вы получаете привилегию, так что вы можете переключиться с режима отмены на супервизор, а затем сделать копию r13, затем вернуться в режим прерывания и сбросить стек из копии r13. Ваш r14 также сообщает вам, где произошел прерывание.

Я бы не удивился, если бы этот прерывание было из-за выравнивания. Попытка чтения / записи слова с адресом с чем-то отличным от нулей в младших двух битах или полусловом с lsbit набора адресов. На самом деле, если вы берете регистр связи и дамп регистров (r0-r12), так как прерывание и пользователь / супервизор используют одно и то же пространство регистров, вы можете посмотреть на инструкцию, которая вызвала прерывание, и адрес, чтобы увидеть, действительно ли это было проблема выравнивания или что-то еще. Обратите внимание, что на ПК впереди одна, две или три инструкции, в зависимости от режима большого пальца или руки, в которой произошел прерывание, если вы вообще не используете большой палец, то об этом не о чем беспокоиться.

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