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

最近在跑RT-Thread操作系统,发现系统跑久了出现死机的情况:
RT-Thread系统 hard fault on thread:erx故障分析_第1张图片
初步分析可能造成的原因:
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

你可能感兴趣的:(RT-Thread,RT-Thread,线程,内存分配,堆栈)