Исключения MicroBlaze AXI4
Я задаюсь вопросом об исключениях шины данных для MicroBlaze. В руководстве по продукту MicroBlaze говорится, что исключение может произойти только в M_AXI_DC, когда кэш выключен? Это не имеет смысла для меня; Означает ли это, что если в строке M_AXI_DC выдается сообщение об ошибке, исключение не сработает, если включено кэширование? В настоящее время у меня C_DCACHE_ALWAYS_USED установлен в 1, так что это не проблема.
Благодарю.
Выдержка из руководства по продукту MicroBlaze:
The data cache AXI4 interface (M_AXI_DC) exception is caused by:
- An error response on M_AXI_DC_RRESP or M_AXI_DC_BRESP,
- OKAY response on M_AXI_DC_RRESP in case of an exclusive access using LWX.
The exception can only occur when C_DCACHE_ALWAYS_USED is set to 1 and the
cache is turned off
1 ответ
Основываясь на моих аппаратных / программных тестах и использовании контроллера AXI BRAM для генерации инъекций ошибок ECC, MicroBlaze не будет выдавать исключение кэша данных или инструкций, если кэширование включено, даже если кэширование отключено непосредственно перед записью; и включается перед чтением, чтобы вызвать исключение. Это также имеет место, если кэш очищается и становится недействительным, а затем сразу же читается обратно.
Это в основном означает, что ECC бесполезен в проектах MicroBlaze, в которых включено кэширование; поскольку они не вызывают никаких аппаратных исключений.
Хотя ответ контроллера AXI BRAM - SLVERR, MicroBlaze будет принимать данные как есть; как будто ничего плохого не могло случиться.
Кто это спроектировал Серьезно
Я предполагаю, что единственный верный метод - использовать прерывания для обнаружения ошибок ECC; которые имеют более низкий приоритет, чем аппаратные исключения.