我在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中看到预先中止堆栈跟踪。