bigfanofiot 发表于 2024-3-18 10:52:56

关于STM32H743异常重启的问题

小弟最近使用STM32H743做了一个项目,运行了RT-Thread系统,组件主要使用了lwip、littleffs文件系统,硬件设计上有一个看门狗芯片,手册给出的喂狗时间是1.7S左右。

我在软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_mdelay 100个毫秒。

现在遇到问题是,10几台设备,每次连续运行,10几个小时后就有1-2台重启了,由于不能连接仿真器、串口等调试工具,问题查起来非常麻烦,我开始怀疑是不是进入hardfault导致重启,
然后就在RTT的hardfault回调里面加入了测试代码,将hardfault信息直接写入到flash里面保存,这样重启后拆机读取看看,人为制造hardfault测试是可以信息保存到flash的并读取的。

这样修改后,进行了测试,然而重启的设备里面没有任何hardfault信息,已排除意外掉电造成的重启。

各位坛友有没有遇到类似的情况?

庄永 发表于 2024-3-18 11:36:12

上电读取重启标志,判断是什么引起的复位,RCC相关章节可以看一下。

bigfanofiot 发表于 2024-3-18 15:04:11

庄永 发表于 2024-3-18 11:36
上电读取重启标志,判断是什么引起的复位,RCC相关章节可以看一下。

这个试过了,排除了软件调用复位指令,掉电复位。

感觉像是喂狗线程卡死,但是找不到原因。。

eric2013 发表于 2024-3-19 07:27:48

bigfanofiot 发表于 2024-3-18 15:04
这个试过了,排除了软件调用复位指令,掉电复位。

感觉像是喂狗线程卡死,但是找不到原因。。

保存下这个看看。

STM32H7各种复位原因查找方法
https://www.armbbs.cn/forum.php?mod=viewthread&tid=110699&fromuid=58
(出处: 硬汉嵌入式论坛)

另外你当前的工程是怎么个喂狗机制。

bigfanofiot 发表于 2024-3-19 13:19:33

eric2013 发表于 2024-3-19 07:27
保存下这个看看。

STM32H7各种复位原因查找方法


硬件设计上有一个看门狗芯片,软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_mdelay 100个毫秒。

eric2013 发表于 2024-3-19 15:33:15

bigfanofiot 发表于 2024-3-19 13:19
硬件设计上有一个看门狗芯片,软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_ ...

当前得先锁定下是不是这个喂狗导致的。如果是这个喂狗导致的,那估计是卡死在其他高优先级中断里面了。

2859932063 发表于 2024-3-19 15:38:57

bigfanofiot 发表于 2024-3-19 13:19
硬件设计上有一个看门狗芯片,软件里面开了一个线程喂狗,喂狗线程优先级是最高的,喂狗周期是rt_thread_ ...

开软件定时器喂狗

bigfanofiot 发表于 2024-3-20 10:54:21

eric2013 发表于 2024-3-19 15:33
当前得先锁定下是不是这个喂狗导致的。如果是这个喂狗导致的,那估计是卡死在其他高优先级中断里面了。

喂狗线程的优先级是最高的,比喂狗线程还高的只有RTT内核自己了

cumtjdxcz 发表于 2024-3-20 16:33:56

把看门狗芯片去掉,看看还死机?

pokemonds 发表于 2024-3-20 17:09:30

看看有没有进MemManage_Handler中断

bigfanofiot 发表于 2024-3-21 13:22:49

pokemonds 发表于 2024-3-20 17:09
看看有没有进MemManage_Handler中断

没有定义这个中断函数

bigfanofiot 发表于 2024-3-21 13:26:20

pokemonds 发表于 2024-3-20 17:09
看看有没有进MemManage_Handler中断

RTT里面这个异常会进入hardfault的,但是我的串口终端没有任何信息记录(最近买了离线串口数据记录模块)
页: [1]
查看完整版本: 关于STM32H743异常重启的问题