2016-12-13 3 views
1

Я студент-инженер и в настоящее время изучаю процессор cortex m3 и модель обработки исключений. У меня возникла и протестирована ошибка использования, ошибка шины, жесткая неисправность с соответствующими обработчиками ошибок.Как сгенерировать ошибку управления памятью в микроконтроллере cortex m3

Но я не знаю, как генерировать ошибку управления памятью (без учета MPU в контексте)

есть ли другой способ генерировать ошибку управления памятью?

Заранее спасибо

+0

У меня нет прямого опыта работы с m3 на низком уровне, поэтому я не могу ответить утвердительно, но я считаю, что выполнение инструкции «Незаконный доступ» приведет к ошибке MM. Вы должны быть в состоянии либо вступить в нее с вашим отладчиком, либо написать код, который заставляет команду отправлять при запуске. – gelliott181

ответ

0

Цитирую Architecture Reference Manual (курсив мой):

Неисправность MemManage обрабатывает ошибки защиты памяти, которые определяются Отделом защиты памяти или фиксированными ограничениями защиты памяти, для транзакций с памятью и данными.

Другими словами, если вы не хотите программировать MPU, вы будете иметь, чтобы искать один из этих основных ограничений, а также очевидное место, чтобы начать смотреть это the memory map. Не Execute Никогда не звучит, как ограничение для меня, и конечно же, в то время как Cortex-M3 TRM немного расплывчатым («исключение вина»), архитектура говорит:

XN указывает на выполнение Никогда область. Любая попытка выполнить код из областей области XN, генерирует исключение MemManage.

Там мы идем. Похоже, самый простой способ - просто входить в область System (0xE0000000 - 0xFFFFFFFF), поскольку это всегда XN независимо от конфигурации MPU.