主题中讨论的其他部件:HALCOGEN,
我正在使用TMDX570LC4357HDK板,CCS v.11.1 0.0 .0.0012万和TI 20.2 .5.LTS编译器。
我的应用程序正在HalCoGen生成的esmHighInterrupt()函数的原型中生成UNDEF异常中止。
我在esmHighInterrupt()处理程序的开头添加了一个静态计数器变量,以确定在UNDEF中止之前执行该处理程序的次数。
我的程序在大约18秒后中止,并且处理程序已执行1.8198万 时间,因此大约 为1000Hz。
以下是 ISR程序的ASM:
esmHighInterrupt():
0.1743万c:E92D500F push {r0, r1, r2, r3,r12, R14}
1.744万:EEF8CA10 vmrs R12,fpexc.
1.7444万:E92D1000 stmdb R13!,{R12}
1.7448万:EEF1CA10 vmrs R12,fpscr.
0.1744万c:E92D1000 stmdb R13!,{R12}
1.745万:ED2D0B10 vpush{d0,d1,d2,d3,d4, d5,d6,d7}
1.7454万:E24DD008 SUB R13,R13,#8
r14_und为0x0.1744万C,因此上面的粗体行。 我认为这意味 着UNDEF中止应该是在之前的指令上生成的: vmrs r12,fpscr.
这对我来说似乎很奇怪,因为虽然在禁用FPU的情况下使用FPU指令会导致UNDEF中止,但这是teh处理程序中的第二个FPU指令,并且处理程序已成功执行多次。
我已检查内存浏览器以确保拆卸过程正确显示闪存中有哪些说明-因此我知道没有任何东西损坏了该说明。
我相信ESM中断的来源是一致的:ESM状态2寄存器始终为8,而ESM中断偏移高寄存器始终为0x24。 根据 《TMS570LC43x技术参考手册》的16.4 部分,这意味着它是组2通道15错误。 TMS570LC4357数据表声明此错误为'保留'(表6-45)。
我一定是在某处犯了一个错误,但我看不出在哪里。 导致此UNDEF中止的原因是什么? 还是某种程度上是一种红鲱鱼?
提前感谢!
亚当