Exception handling ARM DFSR\ISFR寄存器

Exception handling ARM DFSR\ISFR寄存器,exception-handling,arm,abort,Exception Handling,Arm,Abort,我正在编写一个异常处理程序,我想利用FSR(故障状态寄存器) 我正在使用Cortex-A9,L1\L2和MMU,操作系统是nucleus 我正在生成不同的异常,但在异常发生后DFSR\ISFR似乎不会更改其值。是否需要启用此功能,或者默认情况下应捕获FSR 跑看一看。故障将取决于故障产生的原因。未映射的页面将始终返回相同的值。关闭外设上的时钟并尝试访问寄存器将发出另一种FSR。这与程序/数据故障的类型有关。您是如何生成不同的异常的。尝试从未映射内存(0xFFFF_FFFF)读取分支到我的数据中止

我正在编写一个异常处理程序,我想利用FSR(故障状态寄存器) 我正在使用Cortex-A9,L1\L2和MMU,操作系统是nucleus

我正在生成不同的异常,但在异常发生后DFSR\ISFR似乎不会更改其值。是否需要启用此功能,或者默认情况下应捕获FSR


看一看。故障将取决于故障产生的原因。未映射的页面将始终返回相同的值。关闭外设上的时钟并尝试访问寄存器将发出另一种FSR。这与程序/数据故障的类型有关。您是如何生成不同的异常的。尝试从未映射内存(0xFFFF_FFFF)读取分支到我的数据中止处理程序。异常前后的DSFR=1和ISFR=10。2.将pc设置为错误指令分支到我的未定义向量,FSR值相同。3.未对齐访问(SCTRL“A”位打开)分支到数据中止向量,FSR相同值(1,10)。4.我对其他CP15规则使用相同的例程,所以我知道我读它们的方式是正确的,可能是其他东西在改变它们<对于未对齐,代码>DFSR&0xf应为1<对于未映射的页面,代码>DFSR&0xf应为5或7。L1页表格是否已完全填充<代码>mrc p15,0,rX,c5,c0,0是指令。您可以查看Linux中的所有内容以供参考。有些CPU似乎有错误。