随着基于ARM的项目的开发,我们随机获取数据,也就是当我们使用它时,我们得到数据中止中断。但是当我们使用r14或r13检查寄存器映射时,数据中止并不总是在同一点,即使检查函数回调。无论如何,我是否可以准确地获取有关数据中止的根本原因的信息?我已经尝试了ref 2,但是当我捕获有关中断的数据时却无法得到相同的结果。
相关 ARM Data Abort error exception debugging ARM: HOW TO ANALYZE A DATA ABORT EXCEPTION
答案 0 :(得分:0)
按照上面Keil链接中的说明检查链接寄存器(r14)将显示触发数据中止的指令。从那里你必须弄清楚为什么它触发了数据中止以及如何发生这种情况,这是困难的部分。
根据我的经验,最有可能发生的是您访问了无效指针。由于许多原因,它可能无效。以下是一些候选人:
如您所见,很多事情可能是ARM数据中止的根本原因。找到根本原因是使ARM软件/固件开发变得如此有趣的部分原因!祝你好运搞清楚。