标签:
armdebug调试hardfault杂谈 |
分类: ARM调试技术 |
当前在我司代码中关于各种硬件异常的处理基本上是在屏幕上打印错误类型,并没有进一步的处理。本文讨论了一些针对Cortext-M3/M4处理器的方法,通过对寄存器数据的解读,在大多数情况下能够定位产生HardFault的位置和原因,方便在不能使用仿真器的时候或错误难以复现的情况下用来定位问题。最后用一个实例,描述了通过本文所述方法打印错误信息,并定位错误位置和原因的过程。
不考虑其他细节,M3内核在发生中断时首先自动将如下8个寄存器压栈。因此在中断处理函数中,发生中断时正常执行时的寄存器数值已经被压入了堆栈中。在中断处理函数开始执行时,除了PC,