嵌入式技术william hill官网
直播中

李杰

7年用户 1335经验值
私信 关注
[问答]

程序进入硬件错误中断hard_fault如何寻找原因?

程序运行后,会卡死,进入硬件错误中断,但我不知道问题出在哪?该如何解决?
在MDK环境下,进入调试模式,运行后进入rt_hw_hard_fault_exception函数死循环里
2.jpg
在while(1)上方有打印错误信息,我想打印出来,但串口打印不出来
2.jpg
[串口打印:
2.jpg
于是我通过,MDK调试里的栈与寄存器地址跳转,但跳转不到发生的地方,只能跳转到hard_fault发生的地方。
栈的函数与变量值:
2.jpg
寄存器值:
2.jpg
通过栈的函数的caller跳转后
2.jpg
求助,我应该怎么样才能找到错误发生的地方?
再次通过lr地址查找后发现,地址跳转到
lr地址跳转后:
2.jpg
那是不是说明在刚进入rt_schedule_insert_thread函数时,被硬件错误中断打断,进入硬件中断处理函数呢?如果是这样,还是不清楚真正的原因,希望有大佬解答

回帖(3)

张杰

2023-2-13 13:45:30
可以参考这样,换个思路来解决。
比如
默认BSP啥也没改,那报告具体BSP版本号(git sha1)
默认可以,改动后有问题,用排除法
举报

李杰

2023-2-13 13:45:44
感谢,通过这个方法只能定位到是timer_stack出了问题,虽然最终还是不清楚这个调试方法,但问题解决了。
问题是main函数线程栈设置太小,导致系统卡死
举报

张杰

2023-2-13 13:45:52
栈保护需求很大
举报

更多回帖

发帖
×
20
完善资料,
赚取积分