C 如何在arm平台上调试随机数据中止问题
在基于ARM的项目上开发时,我们随机得到数据中止,也就是说,当我们使用它时,我们得到一个数据中止中断。但是,当我们使用r14或r13检查寄存器映射时,数据中止并不总是在同一点上,即使检查函数回调也是如此。我是否可以准确地获得有关数据中止根本原因的信息?我尝试了ref,但当我捕获有关中断的数据时,无法获得相同的点 相关的C 如何在arm平台上调试随机数据中止问题,c,embedded,arm,C,Embedded,Arm,在基于ARM的项目上开发时,我们随机得到数据中止,也就是说,当我们使用它时,我们得到一个数据中止中断。但是,当我们使用r14或r13检查寄存器映射时,数据中止并不总是在同一点上,即使检查函数回调也是如此。我是否可以准确地获得有关数据中止根本原因的信息?我尝试了ref,但当我捕获有关中断的数据时,无法获得相同的点 相关的 如上面Keil链接中所述,检查链接寄存器(r14)将向您显示触发数据中止的指令。从这里,您必须弄清楚它为什么会触发数据中止,以及这是如何发生的,这是困难的部分 根据我的经验,最有
如上面Keil链接中所述,检查链接寄存器(r14)将向您显示触发数据中止的指令。从这里,您必须弄清楚它为什么会触发数据中止,以及这是如何发生的,这是困难的部分 根据我的经验,最有可能发生的是您访问了无效指针。它可能因多种原因而无效。以下是一些候选人:
正如您所看到的,很多事情可能是ARM数据中止的根本原因。找到根本原因是使ARM软件/固件开发如此有趣的一部分!祝你好运解决你的难题。嗨,安德鲁,如果我想知道关于案例4的更多信息,我可以使用jtag和ice从寄存器映射中获得这些信息吗,也就是说,我想知道哪条线将重写指针指向的内存。在这种情况下,它提供了一种获得问题区域的方法,但是如果我的接口是10针jtag接口呢?谢谢分享这个答案。它有助于检查此问题的根本原因。