[其他] MCU 死机问题定位

[复制链接]
8964|32
 楼主| tpgf 发表于 2023-8-24 08:50 | 显示全部楼层 |阅读模式
1. AXF文件反汇编
在C:\Keil_v5\ARM\ARMCC\bin下 fromelf -c xxx.axf -o xxx.txt 生成一个txt文件

2. Ozone调试AXF
非侵入式调试首选,连接之后不复位,重新下载,并选择AXF文件进行调试。
4223464e6a95421a38.png

查看Register窗口,如果LR寄存器数值为0XFFFF_FFF9 表示为返回线程模式,并使用主堆栈(SP=MSP)
如果LR寄存器数值为0XFFF_FFFD 表示为使用线程堆栈(SP=PSP)

LR寄存器非以上值时,SHIFT+F10 跳过while(1),直到HardFault_Handler顶层目录,再查看LR寄存器

7257664e6a94877e30.png
优先查看PSP寄存器,找到对应内存信息后保存该片信息。

分析时找到上面保存的内存片信息中的flash地址(通常为0x08xxxxxxxxx)找到

再将flash地址最低位清零,在反汇编文件中找对应地址

把内存片中的flash地址 遍历一遍找到调用关系

3. 错误分析
7530264e6a93b8c50f.png
可以通过Registers->CPU->Peripherals->SCB 中查看错误标志分析

cm_backtrace
打开该组件后会在HardFault时打印AXF文件名称、出错线程、堆栈信息、寄存器信息。
找到addr对应data中的flash地址
使用addr2line -e xxx.axf -a -f deadbeef 0800xxxx 就可以输出对应函数和所在.c的行号

Ozone及addr2line.exe在我的链接中自取。
————————————————
版权声明:本文为CSDN博主「墨染 锦年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44710568/article/details/127753045

mollylawrence 发表于 2023-10-5 09:05 | 显示全部楼层
检查电源是否正常              
10299823 发表于 2023-10-5 09:32 | 显示全部楼层
检查 MCU 的供电电压是否稳定且符合规格要求
everyrobin 发表于 2023-10-5 10:14 | 显示全部楼层
需要重现MCU死机的问题,这可以通过使用一些测试工具或者设备来实现。
benjaminka 发表于 2023-10-5 10:43 | 显示全部楼层
中断处理程序是否正确配置和处理              
tifmill 发表于 2023-10-5 11:18 | 显示全部楼层
检查代码中的内存使用情况,包括堆栈和堆的使用
averyleigh 发表于 2023-10-5 11:33 | 显示全部楼层
看门狗定时器用于检测 MCU 是否运行正常
mollylawrence 发表于 2023-10-5 12:05 | 显示全部楼层
所有的硬件连接正确无误,包括电源供应、时钟信号、引脚连接等。检查是否有短路、开路或接地等问题。
macpherson 发表于 2023-10-5 12:19 | 显示全部楼层
如果电源电压不稳定或过低,可能会导致MCU死机。
claretttt 发表于 2023-10-5 13:02 | 显示全部楼层
可以使用Keil、IAR等编译器自带的调试工具来分析MCU的代码和寄存器状态。
wwppd 发表于 2023-10-5 13:26 | 显示全部楼层
仔细检查MCU的代码逻辑,包括中断处理程序、循环等。
ingramward 发表于 2023-10-5 13:43 | 显示全部楼层
可以使用仿真器对代码进行调试,观察程序运行状态,以排除代码问题
maqianqu 发表于 2023-10-5 13:54 | 显示全部楼层
查找潜在的逻辑错误、无限循环、死锁等问题
hudi008 发表于 2023-10-5 14:02 | 显示全部楼层
如果MCU与其他外部设备进行通信或交互,可以先断开这些设备,看看是否还会出现死机问题
1988020566 发表于 2023-10-5 15:04 | 显示全部楼层
检查MCU的电源供应情况,包括电源稳定性、电源电压和电流是否满足要求。确保电源供应没有波动或噪声。
wwppd 发表于 2023-10-5 15:19 | 显示全部楼层
MCU死机可能是由于硬件连接问题导致的
plsbackup 发表于 2023-10-5 15:34 | 显示全部楼层
程序跑飞、死循环、缓冲区溢出等              
mollylawrence 发表于 2023-10-5 17:20 | 显示全部楼层
检查MCU的代码,查看是否有错误或者不合理的逻辑,这可能会影响MCU的正常运行。
modesty3jonah 发表于 2023-10-5 17:32 | 显示全部楼层
检查所有硬件连接是否正确且稳固              
yorkbarney 发表于 2023-10-5 20:35 | 显示全部楼层
需要检查程序中的错误和漏洞,以确保程序的正确性和稳定性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2384

主题

17635

帖子

21

粉丝
快速回复 在线客服 返回列表 返回顶部