一、出错点
软件一直运行在硬错误中断的死循环里
二、排查方案
在debug模式下,暂停软件运行,如图圈出来三个寄存器:
- R14(LR):决定使用哪个物理地址保存上下文(运行过程),当LR的值为0xFFFFFFFD时,使用的寄存器是PSP,为0xFFFFFFE9时,使用的是MSP寄存器
- MSP和PSP:同一个逻辑地址下的两个物理寄存器,一个为MSP,一个为PSP,在不同的工作模式使用不同的物理寄存器
- 在官方的《HardFault的诊断.pdf》中有具体介绍
找到寄存器地址后,打开Memory窗口,在Address输入0x20001DD8,找到存储器保存下来的上下文寄存器,找出出错的寄存器地址
到运行汇编Disassembly窗口点击右键,找到show Disassembly at address…打开后输入出错寄存器地址回车之后就可以跳转到出错语句运行处