RT-Thread系统 hard fault on thread:erx故障分析

本文分析了RT-Thread操作系统运行过程中出现死机的问题,并探讨了可能的原因,包括内存分配不足、内存泄漏等。提出了检查动态内存分配、外设配置等解决措施,并通过调整线程堆栈大小成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在跑RT-Thread操作系统,发现系统跑久了出现死机的情况:
这里写图片描述
初步分析可能造成的原因:
1.网络堆栈、buff分配小了;
2.否是内存越界,一般erx任务是比较简单的;
3.内存泄漏 ,线程申请不到空间;
4.使用memset memcpy 内存操作的时候覆盖额外内存;
5.线程堆栈开的是否太小。
可能的解决办法:
1.检查动态内存分配malloc;
2.检查数组,特别是取变量地址的使用;
3.查外设配置,使用没使能的外设也可能会造成hard fault;
最后根据lr异常寄存器的值定位到出现错误的函数里面(学会调试很重要),是任务调度函数调用时出错,线程切换时可能由于内存资源分配的原因造成死机,重新分配线程堆栈大小,就没有出现死机的情况了。为防止系统意外出现死机的情况,根据需要可以增加看门狗检测,检测到系统运行异常重新启动。

更多技术文章浏览请关注:

百家号:
https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh

头条号:
https://www.toutiao.com/c/user/8115738721/#mid=1646025109246987

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值