OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13329|回复: 16

STM32运行一天后出现“HardFault_Handler”死机

[复制链接]

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
发表于 2017-11-13 15:14:28 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 veblen 于 2017-11-13 15:15 编辑

我的项目环境是:STM32+FreeRTOS+lwip,系统运行一天后死机,通过串口打印可以发现程序进入到HardFault_Handler中断处理函数中,请问有什么方法可以帮助我尽快定位问题出现在哪里?希望大家不吝赐教,谢谢了!!!

最佳答案

查看完整内容[请看2#楼]

进入Fault后,查看调用栈是解决问题的最好办法,前提是栈的数据还可用. 如果是用KEIL在线调试的,可直接停下来在call stack中查看. 如果是log输出的,要麻烦点,通过数据dump的方式把栈输出来,人工对照map文件进行追溯.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2017-11-13 15:14:29 | 显示全部楼层
进入Fault后,查看调用栈是解决问题的最好办法,前提是栈的数据还可用.
如果是用KEIL在线调试的,可直接停下来在call stack中查看.
如果是log输出的,要麻烦点,通过数据dump的方式把栈输出来,人工对照map文件进行追溯.
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
 楼主| 发表于 2017-11-13 19:32:31 | 显示全部楼层
zmingwang 发表于 2017-11-13 16:27
进入Fault后,查看调用栈是解决问题的最好办法,前提是栈的数据还可用.
如果是用KEIL在线调试的,可直接停下 ...

我自己写了一个栈溢出的函数,然后在主程序中调用它,接着在HardFault_Handler中断处理函数中下断点,程序运行后会断下来,按照网上的方法查看LR、SP寄存器并没有找到出错地方的地址信息,请问该如何正确的定位出错信息?会不会是使用FreeRTOS系统后无法正确地定位信息?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-11-14 01:25:40 | 显示全部楼层
帮顶
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
 楼主| 发表于 2017-11-14 09:15:13 | 显示全部楼层
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-9-19
在线时间
34 小时
发表于 2017-11-15 16:34:29 | 显示全部楼层
楼主,我现在也是用ucos + lwip,测试tcp client端,2s收发一次数据,10分钟就进入 HardFault_Handler!  楼主问题解决了吗?
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
 楼主| 发表于 2017-11-16 10:50:22 | 显示全部楼层
steaven 发表于 2017-11-15 16:34
楼主,我现在也是用ucos + lwip,测试tcp client端,2s收发一次数据,10分钟就进入 HardFault_Handler!   ...

因为你的时间比较短,可以用jLink在线调试,在进入HardFault_Handler里下断点,通过看寄存器中的信息看能不能找到出问题的函数,网上这方面的信息比较多,我就不重复了。重点查看程序有没有访问已经释放了的内存,因为这样的错误可能在系统内存分配不繁忙的时候不会出错,所以我的错误在运行一天后才出现。
回复

使用道具 举报

6

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-8-23
在线时间
34 小时
发表于 2017-11-17 11:36:21 | 显示全部楼层
veblen 发表于 2017-11-16 10:50
因为你的时间比较短,可以用jLink在线调试,在进入HardFault_Handler里下断点,通过看寄存器中的信息看能 ...

我之前程序也出现了这个问题,后面我的解决方案是,把lWIP里的接收中断里面处理数据的程序直接放在MAIN函数里,也就是由接收中断间接的改成接收轮询,后面就一直没有出现这个问题啦
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
 楼主| 发表于 2017-11-17 13:27:22 | 显示全部楼层
依宝 发表于 2017-11-17 11:36
我之前程序也出现了这个问题,后面我的解决方案是,把lWIP里的接收中断里面处理数据的程序直接放在MAIN函 ...

你这样不好,首先浪费了大量CPU时间在轮询上,其次如果接收比较频繁的话,容易掉包。你出现那样的问题很可能是你的网络接收中断没有处理好
回复

使用道具 举报

6

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-8-23
在线时间
34 小时
发表于 2017-11-17 13:40:26 | 显示全部楼层
veblen 发表于 2017-11-17 13:27
你这样不好,首先浪费了大量CPU时间在轮询上,其次如果接收比较频繁的话,容易掉包。你出现那样的问题很 ...

恩,因为做这个东西我本身就是要求我发送的速度快,数据多,接收的少一些,所以如果在中断里处理接收函数对我来说不合理,把它放在外面,每循环一次程序,就处理一次,没有出现什么问题。可能因为我对接收的实时性要求不是很高
回复

使用道具 举报

80

主题

268

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2014-8-11
在线时间
84 小时
发表于 2017-11-17 17:17:58 | 显示全部楼层
内存爆了没,log里间断查下内存使用率
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
 楼主| 发表于 2017-11-17 18:05:14 | 显示全部楼层
战舰水手 发表于 2017-11-17 17:17
内存爆了没,log里间断查下内存使用率

在STM32+FreeRTOS中怎么使用查看内存使用率??
回复

使用道具 举报

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2019-3-18
在线时间
35 小时
发表于 2019-6-3 11:30:20 | 显示全部楼层
楼主问题解决没有   同问 楼主  同样的项目环境  也是运行一天才会出现Hard Fault问题
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
 楼主| 发表于 2019-6-14 12:00:36 | 显示全部楼层
小MCU菜 发表于 2019-6-3 11:30
楼主问题解决没有   同问 楼主  同样的项目环境  也是运行一天才会出现Hard Fault问题

很抱歉,也没有解决,只能暂时先通过看门狗应付过去,如果你有好的办法,希望能够跟我说一说,谢谢了
回复

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2018-7-11
在线时间
38 小时
发表于 2019-6-14 12:42:47 | 显示全部楼层
veblen 发表于 2017-11-17 18:05
在STM32+FreeRTOS中怎么使用查看内存使用率??

uxTaskGetStackHighWaterMark 了解一下;
原子哥的malloc例程了解一下
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2019-1-26
在线时间
24 小时
发表于 2019-7-4 16:20:27 | 显示全部楼层
steaven 发表于 2017-11-15 16:34
楼主,我现在也是用ucos + lwip,测试tcp client端,2s收发一次数据,10分钟就进入 HardFault_Handler!   ...

你好,你解决的吗?我也遇到你这样的问题
回复

使用道具 举报

8

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2016-10-1
在线时间
117 小时
发表于 2022-1-22 22:41:37 | 显示全部楼层
也遇到类似情况
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-6 10:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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