您好!
我收到的数据中止对我来说毫无意义。
我使用的是 TMDX570LC4357HDK 电路板、CCS v11.1.0.00012和 TI 20.2.5.LTS 编译器。
我最近在 ESM FIQ 中创建了一个关于 UNDEF 中止的论坛帖子。 我在这个问题上得到了帮助、购买了使用链接器脚本确保闪存的 ECC 数据正确。 我不再获得任何 ESM 中断。 我在这里描述的这个问题在同一个应用程序中几乎同时发生。 我的应用具有两个相同的 HDK 板、它们通过 SPI 相互通信。 如果我没有连接它们的 SPI 引脚、因此没有通信和 SPI 中断、我就不会遇到这个问题。 也许缺少这些中断只是使问题变得更加罕见、所以我还没有看到它、或者 也许中断 是造成问题的原因。 我有两个应用程序- Peer0和 Peer1 -该问题仅存在于其中一个应用程序上,而不管每个对等程序运行在哪个 HDK 上。
在 IRQ 中断内、我将获得数据中止。 我在 ISR 失败之前执行过很多次。 根据调试调用堆栈和 R14_ABT 寄存器、这应该是失败的指令:
00000846: 4913 ldr r1, [pc, #0x4c] ;reads 0x08001C8C into R1
00000848: 9803 ldr r0, [r13, #0xc]
0000084a: 6008 str r0, [r1]
0000084c: 4914 ldr r1, [pc, #0x50] ;reads 0x08001C90 into R1
0000084e: 9803 ldr r0, [r13, #0xc]
00000850: 43C0 mvns r0, r0
00000852: 6008 str r0, [r1]
显然、这 毫无意义、因为这不是一个读取/写入操作。 r0和 R1的值表明 尚未 执行第0x84C 行、因为 该值或 R1为 0x08001C8C。
DFSR 的值为 0x00001008、表示"同步外部中止"-这意味着 MVNS 指令是问题方- 因此这是错误的、还是 r14_ABT 是错误的?
DFAR 的值为 0x07FFFFEC、这不是发生中止时任何寄存器的值。
根据 ARMv7-R TRM、表 B5-8 、DFSR[10、3:0]为01000b 意味着 DFAR 有效、这对我来说并不正确。
根据 B5.4.3节、使用数据中止来报告指令提取上的外部中止。 这让我相信、与当前正在执行的代码无关的问题已经发生、并且上述大多数信息都是一个错误。
如何调试该数据中止、或者是否缺少某些内容?
非常感谢、
Adam