ARM:从数据中止异常处理程序

时间:2016-01-14 13:28:35

标签: assembly exception-handling arm

我在Zynq ARM中运行FreeRTOS。 在ARM系统上,我得到一个数据中止异常。该 由于地址不对齐而引发异常 给memcpy()。 我现在想得到memcpy()的调用者。那 是:我想重温“lr”的价值时 在memcpy中,在异常发生之前。 我可以设置断点到数据异常向量,但是当断点时 点击“lr”已经存入。是否有可能 从内部检索用户模式库的“lr” 中止模式?也许用cp15协处理器读取? 谢谢康拉德

解决方案: 在FreeRTOS_DataAbortHandler里面我添加了一个断点和行

#       define MODE_USR        0x00000010
#       define I_BIT           0x80
#       define F_BIT           0x40 
mrs     r1, cpsr
msr     cpsr_c,  #(MODE_USR|I_BIT|F_BIT)

在单步执行最后一行后,我可以在XSDK中看到预先中止堆栈跟踪。

0 个答案:

没有答案