gpt4 book ai didi

embedded - ARM Cortex M3 如何确定硬故障前的程序计数器值?

转载 作者:行者123 更新时间:2023-12-04 13:55:17 26 4
gpt4 key购买 nike

我有一个使用 STM32F103(ARM Cortex M3)的嵌入式项目,它在 Release模式下偶尔会出现硬故障。作为恢复的一部分,我想从硬故障之前检索 PC 值并将其存储以便以后在电池供电区域进行调试。

我将如何确定硬故障点的程序计数器的值?显然,PC 现在被设置为它在硬故障中断中的位置。

我应该在哪里看?它有正常模式寄存器组的地址吗?

谢谢!

最佳答案

Cortex-M3 使用与“经典”ARM 完全不同的异常处理模型,例如它没有在另一篇文章中提到的“中止模式”。我建议你阅读 this app note .例如,对于硬故障:

The value of SCB->BFAR indicates the memory address that caused a Bus Fault and is valid if the bit BFARVALID in the SCB->CFSR register is set. The value of SCB->MMFAR indicates the memory address that caused a Memory Management Fault and is valid if the bit MMFARVALID in the SCB->CFSR register is set.



要确定异常时的 PC 值,您需要检查堆栈;处理器在执行处理程序之前推送 R0-R3、R12、PC 和 LR。使用的堆栈可以是 Main(如果 LR 的第 2 位为 0)或 Process(否则)。有关详细信息,请参阅应用说明的第 13 页。

关于embedded - ARM Cortex M3 如何确定硬故障前的程序计数器值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com