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-EP:异步复位原因

Guru**** 2451970 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1191954/tms570lc4357-ep-asynchronous-reset-cause

器件型号:TMS570LC4357-EP
主题中讨论的其他器件:TMS570LC4357HALCOGEN

大家好、  

我们使用的是 TMS570LC4357、并且在执行期间会得到异步异常。 当我们在调试模式下查看它时、程序控制停留在矢量表位置0x00000004。 是否可以找到异常地址的原因? 它是否存储在任何寄存器中?

谢谢、

Subash

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Subash、

    请参阅我的说明。 它是 UNDEF 例外。

    7.未定义指令异常(UNDEF)

    https://software-dl.ti.com/hercules/hercules_docs/latest/hercules/FAQ/FAQ.html#troubleshooting-abort-exceptions

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    感谢你的答复。 CPU 在 SVC 模式下执行并且 生成未定义的异常。 CPSR[3:0]设置为11011,R14_SVC 为 0x0000D5E0,R14_UND 为0x00000008。 如何找出异常生成的指令?

    谢谢、

    Subash

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    0xD5E0-0x8处的指令是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    实际上、我发现它是数据中止、我正在尝试找出此问题的根本原因。 我已附上一些快照供您参考。 如果您提供一些输入、这会很有用。 在 DFSR 寄存器中将 SD 标志设置为1。

       

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    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寄存器中的数据正确。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否从 CP15寄存器列表中共享 ADFSR (辅助数据故障状态寄存器)的值?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    非常感谢您的意见。 我发现堆栈下溢问题、因为堆栈大小在"hL_sys_core.asm"中硬编码为0x1000、而不是来自链接器文件。 我增大了该值、它工作正常。

    此致、

    Subash

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可以从 HALCoGen GUI 更改堆栈大小。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    非常感谢!  这是非常有用的信息。

    谢谢、

    Subash