Я создавал приложение для «голого железа» на ARM Cortex A9 Pandaboard и часто сталкивался с прерыванием выборки инструкций. Когда я выгружаю регистр IFSR, я получаю 0x1008. Я прочитал справочное руководство и понял, что 1008 — это синхронное внешнее прерывание. Проблема в том, что означает синхронное внешнее прерывание и откуда оно берется? Спасибо за вашу помощь.
Синхронное внешнее прерывание на ARM
Ответы (1)
В разделе ARMv7 ARM "Прерывания памяти VMSA" подробно рассматривается этот вопрос. можно было бы ожидать (учитывая, что это авторитетное определение архитектуры), но подвести итог чуть менее чем на 14 страницах;
Прервать означает, что ЦП пытался выполнить доступ к памяти, который по какой-либо причине не мог быть завершен, поэтому возникает исключение.
Прерывание внешнего происходит извне по отношению к процессору, т. е. от чего-то на шине. Другими словами, доступ не сработал в MMU, вышел на шину, а либо какое-то устройство, либо сам интерконнект вернулся и сказал: «Эй, я не могу с этим справиться».
синхронное внешнее прерывание означает, что вам скорее повезло, поскольку отладка не будет совершенно отвратительной — в случае прерывания предварительной выборки это означает, что IFAR
будет содержать действительный VA для неисправную инструкцию, чтобы вы точно знали, что ее вызвало. Неприятной альтернативой является асинхронное внешнее прерывание, которое представляет собой не более чем прерывание, чтобы сказать: «Эй, что-то, что вы сделали некоторое время назад, на самом деле не сработало. Нет, я тоже не знаю, что это было». ."
Итак, вы пытаетесь выполнить инструкции из чего-то, что вы считаете памятью, но таковой не является. Без каких-либо дополнительных подробностей фактической причиной может быть что угодно, от опечатки жестко запрограммированного адреса до хитрых таблиц страниц, устаревших записей TLB, когерентности кеша и т. д. и т. д.
TTBRn
для последовательного обхода стола? Помните, что сами атрибуты в записях таблицы влияют только на доступ к ЦП, транслируемый MMU — обходчик таблиц MMU — это отдельный интерфейс.
- person Notlikethat; 16.12.2014