主题中讨论的其他器件:TMS570LC4357、 HALCOGEN
大家好、
我们使用的是 TMS570LC4357、并且在执行期间会得到异步异常。 当我们在调试模式下查看它时、程序控制停留在矢量表位置0x00000004。 是否可以找到异常地址的原因? 它是否存储在任何寄存器中?
谢谢、
Subash
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
我们使用的是 TMS570LC4357、并且在执行期间会得到异步异常。 当我们在调试模式下查看它时、程序控制停留在矢量表位置0x00000004。 是否可以找到异常地址的原因? 它是否存储在任何寄存器中?
谢谢、
Subash
您好、Subash、
请参阅我的说明。 它是 UNDEF 例外。
7.未定义指令异常(UNDEF)
CPU 在 ARM 状态下执行32位字对齐 ARM 指令。 CPU 在 Thumb 状态下执行32位和16位半字对齐 Thumb 指令。 从快照中、我相信 Thumb 在您的项目中被使用:指令是16位对齐的、并且 SPSR 的 T 位(第5位)被置位。
因此、具有预取中止的指令地址为 R14_abt - 0x4、对于数据中止、地址为 R14_abt - 0x8。 在快照中、它是导致数据中止的 POP 指令:POP {R4、R5、R6}
指令 PUSH 和 POP 始终使用 sp 寄存器作为基地址。 SP 寄存器的值是多少?
TCM 上的 ECC 一直被启用。 使用 BTCM (SRAM)之前是否初始化了? 因为 ECC 检查是在读取操作上完成的(例如 POP)、而 ECC 计算是在写入操作上完成的(例如推送)。 具有未初始化 ECC 代码的 ECC 保护 BTCM 的读取操作将始终为您提供数据中止。
SRAM (BTCM)的 ECC 数据位于从0x08400000开始的存储器中。
请检查0x08400000处的 ECC 数据+ SP 的值是否与 R4和 R5寄存器中的数据正确。