Исключение сброса данных при записи в периферийный регистр
Моя программа вызывает исключение прерывания данных, когда я записываю любое значение в адрес периферийного регистра (Multi I/O SPI Interface). Я использую процессор Renesas RZ/A1L с ядром Cortex A9.
Интересно, что в другом проекте тот же исходный код и та же инструкция хранилища не приводят к такому исключению.
Перед выполнением инструкции сохранения должно быть что-то, что запрещает запись по этому адресу или приводит к конфликту доступа к этому адресу.
Интересно сделать отдельные шаги над критическими инструкциями в разборке, иногда приводя к тому, что не возникает никаких исключений, и могут быть выполнены следующие инструкции. Но даже тогда запись или чтение (загрузка / сохранение) в и из следующего регистра в той же области памяти может привести к тому же поведению.
1 ответ
Исключение было поднято MMU. Раздел памяти, который содержал адреса для регистров интерфейса SPI multi I / O, не был настроен в MMU.
Почему один шаг в разборке не вызвал исключение абортов данных MMU до сих пор не решен.