打印
[其他]

MCU 死机问题定位

[复制链接]
2661|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文件进行调试。


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

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


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

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

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

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

3. 错误分析

可以通过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死机的问题,这可以通过使用一些测试工具或者设备来实现。

使用特权

评论回复
5
benjaminka| | 2023-10-5 10:43 | 只看该作者
中断处理程序是否正确配置和处理              

使用特权

评论回复
6
tifmill| | 2023-10-5 11:18 | 只看该作者
检查代码中的内存使用情况,包括堆栈和堆的使用

使用特权

评论回复
7
averyleigh| | 2023-10-5 11:33 | 只看该作者
看门狗定时器用于检测 MCU 是否运行正常

使用特权

评论回复
8
mollylawrence| | 2023-10-5 12:05 | 只看该作者
所有的硬件连接正确无误,包括电源供应、时钟信号、引脚连接等。检查是否有短路、开路或接地等问题。

使用特权

评论回复
9
macpherson| | 2023-10-5 12:19 | 只看该作者
如果电源电压不稳定或过低,可能会导致MCU死机。

使用特权

评论回复
10
claretttt| | 2023-10-5 13:02 | 只看该作者
可以使用Keil、IAR等编译器自带的调试工具来分析MCU的代码和寄存器状态。

使用特权

评论回复
11
wwppd| | 2023-10-5 13:26 | 只看该作者
仔细检查MCU的代码逻辑,包括中断处理程序、循环等。

使用特权

评论回复
12
ingramward| | 2023-10-5 13:43 | 只看该作者
可以使用仿真器对代码进行调试,观察程序运行状态,以排除代码问题

使用特权

评论回复
13
maqianqu| | 2023-10-5 13:54 | 只看该作者
查找潜在的逻辑错误、无限循环、死锁等问题

使用特权

评论回复
14
hudi008| | 2023-10-5 14:02 | 只看该作者
如果MCU与其他外部设备进行通信或交互,可以先断开这些设备,看看是否还会出现死机问题

使用特权

评论回复
15
1988020566| | 2023-10-5 15:04 | 只看该作者
检查MCU的电源供应情况,包括电源稳定性、电源电压和电流是否满足要求。确保电源供应没有波动或噪声。

使用特权

评论回复
16
wwppd| | 2023-10-5 15:19 | 只看该作者
MCU死机可能是由于硬件连接问题导致的

使用特权

评论回复
17
plsbackup| | 2023-10-5 15:34 | 只看该作者
程序跑飞、死循环、缓冲区溢出等              

使用特权

评论回复
18
mollylawrence| | 2023-10-5 17:20 | 只看该作者
检查MCU的代码,查看是否有错误或者不合理的逻辑,这可能会影响MCU的正常运行。

使用特权

评论回复
19
modesty3jonah| | 2023-10-5 17:32 | 只看该作者
检查所有硬件连接是否正确且稳固              

使用特权

评论回复
20
yorkbarney| | 2023-10-5 20:35 | 只看该作者
需要检查程序中的错误和漏洞,以确保程序的正确性和稳定性。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1364

主题

13994

帖子

8

粉丝