关于STM32H743异常重启的问题
小弟最近使用STM32H743做了一个项目,运行了RT-Thread系统,组件主要使用了lwip、littleffs文件系统,硬件设计上有一个看门狗芯片,手册给出的喂狗时间是1.7S左右。我在软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_mdelay 100个毫秒。
现在遇到问题是,10几台设备,每次连续运行,10几个小时后就有1-2台重启了,由于不能连接仿真器、串口等调试工具,问题查起来非常麻烦,我开始怀疑是不是进入hardfault导致重启,
然后就在RTT的hardfault回调里面加入了测试代码,将hardfault信息直接写入到flash里面保存,这样重启后拆机读取看看,人为制造hardfault测试是可以信息保存到flash的并读取的。
这样修改后,进行了测试,然而重启的设备里面没有任何hardfault信息,已排除意外掉电造成的重启。
各位坛友有没有遇到类似的情况?
上电读取重启标志,判断是什么引起的复位,RCC相关章节可以看一下。 庄永 发表于 2024-3-18 11:36
上电读取重启标志,判断是什么引起的复位,RCC相关章节可以看一下。
这个试过了,排除了软件调用复位指令,掉电复位。
感觉像是喂狗线程卡死,但是找不到原因。。 bigfanofiot 发表于 2024-3-18 15:04
这个试过了,排除了软件调用复位指令,掉电复位。
感觉像是喂狗线程卡死,但是找不到原因。。
保存下这个看看。
STM32H7各种复位原因查找方法
https://www.armbbs.cn/forum.php?mod=viewthread&tid=110699&fromuid=58
(出处: 硬汉嵌入式论坛)
另外你当前的工程是怎么个喂狗机制。 eric2013 发表于 2024-3-19 07:27
保存下这个看看。
STM32H7各种复位原因查找方法
硬件设计上有一个看门狗芯片,软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_mdelay 100个毫秒。 bigfanofiot 发表于 2024-3-19 13:19
硬件设计上有一个看门狗芯片,软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_ ...
当前得先锁定下是不是这个喂狗导致的。如果是这个喂狗导致的,那估计是卡死在其他高优先级中断里面了。 bigfanofiot 发表于 2024-3-19 13:19
硬件设计上有一个看门狗芯片,软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_ ...
开软件定时器喂狗 eric2013 发表于 2024-3-19 15:33
当前得先锁定下是不是这个喂狗导致的。如果是这个喂狗导致的,那估计是卡死在其他高优先级中断里面了。
喂狗线程的优先级是最高的,比喂狗线程还高的只有RTT内核自己了 把看门狗芯片去掉,看看还死机? 看看有没有进MemManage_Handler中断 pokemonds 发表于 2024-3-20 17:09
看看有没有进MemManage_Handler中断
没有定义这个中断函数 pokemonds 发表于 2024-3-20 17:09
看看有没有进MemManage_Handler中断
RTT里面这个异常会进入hardfault的,但是我的串口终端没有任何信息记录(最近买了离线串口数据记录模块)
页:
[1]