硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2032|回复: 15
收起左侧

[其它] 怎么根据hard fault信息排查程序问题

[复制链接]

33

主题

203

回帖

302

积分

高级会员

积分
302
发表于 2022-3-3 09:13:13 | 显示全部楼层 |阅读模式
编译器是mdk。使用了一款M0芯片,只能串口调试。现在出现了hard fault, 只能由map,list和寄存器信息排查。而网上的资料都需要在线调试。怎么根据这么有限的信息排查呢?

2022-03-01_163439,JPEG.jpg


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2022-3-3 09:22:49 | 显示全部楼层
楼主得先说下用的那款M0,Flash和RAM地址和范围是多少。
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-3 09:43:26 | 显示全部楼层
eric2013 发表于 2022-3-3 09:22
楼主得先说下用的那款M0,Flash和RAM地址和范围是多少。

ble芯片,st17h66
2022-03-03_094213,JPEG.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2022-3-3 10:42:22 | 显示全部楼层
PC是hardfault异常入栈时的值吧,从数值来看已经异常了。指向了保留区,估计有野指针,内存溢出之类的问题。

LR返回值是附近地址代码可以看看。(这个是remap区,应该是重映射的512KB Flash)
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-3 11:24:25 | 显示全部楼层
本帖最后由 diiiiiii 于 2022-3-3 11:31 编辑
eric2013 发表于 2022-3-3 10:42
PC是hardfault异常入栈时的值吧,从数值来看已经异常了。指向了保留区,估计有野指针,内存溢出之类的问题 ...

2022-03-03_112237,JPEG.jpg

这是map文件的一部分。是这样找吗?

回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2022-3-3 11:32:52 | 显示全部楼层
diiiiiii 发表于 2022-3-3 11:24
这是map文件的一部分。是这样找吗?

调试状态看反汇编,go to address更方便。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-3 11:41:05 | 显示全部楼层
byccc 发表于 2022-3-3 11:32
调试状态看反汇编,go to address更方便。

只有串口打印
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2022-3-3 11:50:20 | 显示全部楼层

可以软件调试你的工程,不接硬件,仅仅看下相关地址附近的代码。
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-9 14:13:56 | 显示全部楼层
本帖最后由 diiiiiii 于 2022-3-9 14:20 编辑
eric2013 发表于 2022-3-3 11:50
可以软件调试你的工程,不接硬件,仅仅看下相关地址附近的代码。

2022-03-09_133620,JPEG.jpg

你好,如上图,是找PC地址处的函数吗?


回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-9 14:23:33 | 显示全部楼层
2022-03-09_142106,JPEG.jpg
怎么反汇编不成功?
回复

使用道具 举报

4

主题

26

回帖

38

积分

新手上路

积分
38
发表于 2022-3-9 16:11:18 | 显示全部楼层
cmbacktrace库接管下hardfault_handler,addr2line输出下栈调用信息
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-10 10:28:35 | 显示全部楼层
zbianbiaos 发表于 2022-3-9 16:11
cmbacktrace库接管下hardfault_handler,addr2line输出下栈调用信息

这个芯片sdk使用了类似cc2540的os
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2022-3-10 11:08:18 | 显示全部楼层
diiiiiii 发表于 2022-3-9 14:13
你好,如上图,是找PC地址处的函数吗?

对。

另外你飞线SWDCK和SWDIO,将bug问题锁定下,你觉得是否可行。
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-10 12:30:39 | 显示全部楼层
eric2013 发表于 2022-3-10 11:08
对。

另外你飞线SWDCK和SWDIO,将bug问题锁定下,你觉得是否可行。

1.txt (1.66 MB, 下载次数: 0)

如附件,没有在PC附近的函数。

这个芯片的swd不能用。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2022-3-10 12:39:26 | 显示全部楼层
diiiiiii 发表于 2022-3-10 12:30
如附件,没有在PC附近的函数。

这个芯片的swd不能用。

移植个hardfault组件吧,比如SEGGER的,我一直在用,还行,所有的fault信息都串口打印出来。

其它问题不清楚了,帮不上了。
回复

使用道具 举报

33

主题

203

回帖

302

积分

高级会员

积分
302
 楼主| 发表于 2022-3-10 13:05:19 | 显示全部楼层
eric2013 发表于 2022-3-10 12:39
移植个hardfault组件吧,比如SEGGER的,我一直在用,还行,所有的fault信息都串口打印出来。

其它问题 ...

多谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 20:52 , Processed in 0.351809 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表