Получение исключения (доступ к хранилищу ошибок) после возврата из ISR с помощью mret в процессоре E21 RISCV - PullRequest
1 голос
/ 02 марта 2020

При выполнении команды mret при возврате из прерывания, в самой следующей операции записи CPU вызывает исключение с excode как 7 (ошибка доступа к хранилищу) .

Затем значение mstats.MPP изменится на 00 (режим пользователя). Впрочем, процессор ранее был в машинном режиме. Это хорошо согласно спецификации RISCV. Я настроил прерывание в векторном режиме CLI C.

Я не могу найти причину, по которой процессор попадает в исключение. Но если я принудительно изменю значение mstatus.MPP на машину перед выполнением какой-либо операции записи, все будет работать нормально. Здесь нет исключений. Такое поведение является неожиданным.

Буду признателен за некоторые советы по устранению этой проблемы !!

...