主题中讨论的其他器件:HALCOGEN
您好!
我最近在测试难以跟踪的代码时遇到了预取中止。 这种情况一直发生在发送已知的 CAN 请求、到目前为止、该请求一直正常工作。 虽然我的调试过程导致我怀疑有标准库函数、但我尝试通过查看寄存器来验证这一点、但似乎已达到死区。
根据 基于 Hercules ARMCortex
-R4/5的微控制器(SPNA218)上的中断和异常处理 以及查看暂停时执行的存储器位置(0x0C)、我确定它是 预取中止。 由于此中止 是精确的、我应该能够确定引起中止的指令。 在技术参考手册和 Arm 文档之间、我查看了中止寄存器(SPSR_abt、R14_abt)以及 CP15故障寄存器。 他们让我相信这是 一个精确的外部中止、这是 由系统 模式下在地址0x202020执行的指令引起的。 也就是说、地址属于镜像闪存区域、但是查看存储器映射将位于 保留闪存中。
我有损。 我的初始调试表明存在一个标准库函数问题(看起来很不可能)、但是整个 CAN 响应在 CAN IRQ 处理程序内执行、与 SPSR_abt 信息相悖、并且地址超出了可能的闪存执行范围。 此外、其他不相关和细微的更改也会影响此误差的重现可靠性
如果有任何帮助,将不胜感激
。 