OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/FPGA开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 2942|回复: 14
打印 上一主题 下一主题

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文件进行追溯.
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

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

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

使用道具 举报

543

主题

10万

帖子

32

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
142176
金钱
142176
注册时间
2010-12-1
在线时间
1516 小时
4#
发表于 2017-11-14 01:25:40 | 只看该作者
帮顶
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-3-15
在线时间
33 小时
5#
 楼主| 发表于 2017-11-14 09:15:13 | 只看该作者
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

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

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

使用道具 举报

6

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2017-8-23
在线时间
30 小时
8#
发表于 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 小时
9#
 楼主| 发表于 2017-11-17 13:27:22 | 只看该作者
依宝 发表于 2017-11-17 11:36
我之前程序也出现了这个问题,后面我的解决方案是,把lWIP里的接收中断里面处理数据的程序直接放在MAIN函 ...

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

使用道具 举报

6

主题

33

帖子

0

精华

初级会员

Rank: 2

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

恩,因为做这个东西我本身就是要求我发送的速度快,数据多,接收的少一些,所以如果在中断里处理接收函数对我来说不合理,把它放在外面,每循环一次程序,就处理一次,没有出现什么问题?赡芤蛭叶越邮盏氖凳毙砸蟛皇呛芨
回复

使用道具 举报

78

主题

255

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2014-8-11
在线时间
59 小时
11#
发表于 2017-11-17 17:17:58 | 只看该作者
内存爆了没,log里间断查下内存使用率
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

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

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

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-3-18
在线时间
2 小时
13#
发表于 2019-6-3 11:30:20 | 只看该作者
楼主问题解决没有   同问 楼主  同样的项目环境  也是运行一天才会出现Hard Fault问题
回复

使用道具 举报

9

主题

41

帖子

0

精华

新手上路

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

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

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2018-7-11
在线时间
31 小时
15#
发表于 2019-6-14 12:42:47 | 只看该作者
veblen 发表于 2017-11-17 18:05
在STM32+FreeRTOS中怎么使用查看内存使用率??

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

使用道具 举报

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

本版积分规则



关闭

正点原子STM32/FPGA资料免费下载上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2019-6-29 13:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
三级片电影