我们的故障处理程序将异常堆栈保存到 EEPROM 中、当我们在下一次启动时查看它时、程序计数器指向0x42014aca。
您能告诉我们、这是 ROM 代码吗?有什么可能输出?
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.
我们的故障处理程序将异常堆栈保存到 EEPROM 中、当我们在下一次启动时查看它时、程序计数器指向0x42014aca。
您能告诉我们、这是 ROM 代码吗?有什么可能输出?
Charles
我很确定我们没有任何外设。 这里是我们此时保存的一些其他寄存器、
R0=0xffffffff、R1=0x20012058、R2=02e9cb、R3=0x2002c13c、R12=0x2002c4f0、 lr=0x5b4a1、pc=0x42014aca、xpsr=0x1000000
并且设置了 FAULT_FIRMWARM_FLAG_SW_FAULT 标志、
尊敬的 Jeff:
也看起来设置了 fault_firmware_FLAG_SW_FAULT 标志
我认为您的应用程序定义了该标志。 这是什么标志?
Unknown 说:程序计数器指向0x42014aca。
接近0x42014aca 的内存区域是0x40000000 - 0x400FFFFF 的位段别名、这是外设的内存区域。
我很确定我们没有任何外设。 这里是我们此时保存的一些其他寄存器、
R0=0xffffffff、R1=0x20012058、R2=02e9cb、R3=0x2002c13c、R12=0x2002c4f0、 lr=0x5b4a1、pc=0x42014aca、xpsr=0x1000000
我无法在没有上下文的情况下解释这些仅 R1、R2、R3。
请参阅数据表中的故障状态和地址寄存器、因为这些寄存器提供有关故障的额外信息。 请注意、对于上述故障、由于处理器内部存在写入缓冲、您无法依赖故障地址寄存器。 由读取操作引起的故障是精确的、并且故障地址寄存器可以很好地指示违反了的指令。
此应用手册对于诊断故障非常有帮助。 https://www.ti.com/lit/pdf/spma043
如果您认为没有访问任何已启用的外设、那么最可能的故障原因是缺少存储器堆栈或堆。
此帖子解决了我们看到的重启挂起问题