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