Jef*_*ffV 5 embedded arm interrupt cortex-m3 program-counter
我有一个使用STM32F103(ARM Cortex M3)的嵌入式项目,它在发布模式下偶尔会遇到硬故障.作为恢复的一部分,我想从硬故障之前检索PC值并将其存储起来以便稍后在电池备份区域中进行调试.
如何在硬故障点确定程序计数器的值?显然,PC现在设置在硬故障中断的位置.
我应该在哪里看?它有一个普通模式寄存器组的地址吗?
谢谢!
Cortex-M3使用了与"经典"ARM完全不同的异常处理模型,例如,它没有在另一篇文章中提到的"中止模式".我建议你阅读这个应用笔记.例如,对于硬故障:
SCB-> BFAR的值表示导致总线故障的存储器地址,如果SCB-> CFSR寄存器中的BFARVALID位置1,则该值有效.SCB-> MMFAR的值表示导致存储器管理故障的存储器地址,如果SCB-> CFSR寄存器中的位MMFARVALID置1,则该值有效.
要确定异常时的PC值,需要检查堆栈; 处理器在执行处理程序之前推送R0-R3,R12,PC和LR.使用的堆栈可以是Main(如果LR的第2位为0)或Process(否则).有关详细信息,请参阅应用说明的第13页.
| 归档时间: |
|
| 查看次数: |
13065 次 |
| 最近记录: |