当前位置:首页 > 工业控制 > 工业控制
[导读]看门狗本该抓住死机,却常在现场变成莫名重启的来源。单片机系统如果没有把喂狗条件和最坏执行时间绑定,复位既可能误触发,也可能在真正卡死时失效。

看门狗本该抓住死机,却常在现场变成莫名重启的来源。单片机系统如果没有把喂狗条件和最坏执行时间绑定,复位既可能误触发,也可能在真正卡死时失效。

误复位的第一类原因是任务阻塞路径被低估。主循环平时几十毫秒走完,一旦遇到 Flash 擦写、传感器超时、通信重连或等待锁,就可能超过看门狗周期。若喂狗点放在循环尾部,任何一个慢分支都会让系统看起来像死机;若喂狗点散在多个驱动里,某个底层函数即便上层任务已经失控,仍可能继续喂狗,把故障掩盖过去。最危险的是在中断里喂狗,因为主任务卡住时中断仍会运行,看门狗完全失去监控意义。

更稳妥的策略是集中喂狗,并让它依赖关键任务心跳。控制、通信、存储和安全监测各自按周期更新状态,只有所有必需任务都在期限内前进,监控任务才执行喂狗。对可能长时间运行的合法操作,要么拆成可让出的小段,要么在进入前显式切换到受控的长周期窗口,而不是让它偷偷越过预算。单片机固件资源有限,更需要把“系统仍健康”的条件写清楚,而不是把喂狗当成定时器回调。

窗口看门狗又引入另一条边界:太晚喂会复位,太早喂也会复位。它能发现程序跑飞后疯狂循环喂狗的情况,但前提是窗口要覆盖真实调度抖动。独立看门狗通常使用低速内部时钟,本身误差可能很大;低温、低压或不同批次都会改变实际超时时间。若窗口按典型值卡得太紧,现场温度一变,正常任务就可能被判为过早或过晚。启动阶段和低功耗唤醒阶段尤其容易出问题,因为任务尚未进入稳定节拍,却已经被窗口规则约束。

设窗口时要先做时间账。统计关键任务的最短正常循环、最长正常循环、合法阻塞上限和看门狗时钟最坏误差,再给窗口留出调度余量。启动、固件升级、深睡唤醒和故障自检可以使用独立状态机管理,不能混用运行态窗口。若系统进入低功耗后看门狗继续计时,要么保证唤醒周期小于下限,要么使用支持暂停或独立低功耗喂狗的机制。窗口下限也要防止异常快循环反复清狗,否则程序跑飞到空转路径时仍可能被误认为健康。单片机看门狗配置若只在室温空载下通过,现场误复位几乎不可避免。

排查时应在复位前保存最小故障现场,包括复位原因、最后一次成功心跳、当前任务号和关键锁状态。只知道发生了看门狗复位,无法判断是某个任务太慢、窗口太窄,还是时钟漂移。还应记录最近一次窗口内喂狗时间,避免把过早喂和过晚喂都归成同一类故障。通过故障注入让任务卡死、让通信超时、让 Flash 写入变慢,再观察看门狗是否按预期动作,才能证明它既不误杀,也不放过真故障。若故障现场写入非易失存储,还要确保它不会再次拉长复位前窗口。

因此,看门狗不是简单定期清零,而是一份健康判据。把喂狗资格交给任务进度,再按最坏时序设置窗口,复位才会指向真正异常。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

PWM 波形偶尔抖一下,后级电机或电源环路就可能把它放大成噪声和发热。单片机定时器虽然能自动翻转引脚,但更新时刻和死区配置不对,输出并不会天然稳定。

关键字: 单片机 PWM 定时器

I2C 偶发不响应时,复位主控往往只能暂时恢复,因为总线状态可能已经被外部器件留在半截事务里。单片机若没有处理 SDA 锁低和上拉边界,软件重新初始化也未必能重新拿回总线。

关键字: 单片机 I2C SDA

参数偶尔丢失或升级后配置变乱,常常不是存储单元突然坏了,而是写入流程没有尊重 Flash 的物理边界。单片机内部 Flash 若把擦写粒度和掉电窗口处理得太粗,少量配置也会被写成高风险操作。

关键字: 单片机 Flash 掉电保护

ADC 数值缓慢漂移时,问题未必在传感器,也未必靠平均就能消掉。单片机内部转换器如果没有满足采样保持和参考回流条件,软件读到的只是前端妥协后的电压。

关键字: 单片机 ADC 传感器

设备偶发重启时,很多人先怀疑程序跑飞,其实更常见的是电源刚好落在不稳定边界。单片机若没有把欠压复位和上电延时配成一条完整启动链,复位脚会比软件更早暴露问题。

关键字: 单片机 复位 晶振

计时偏差通常不是某个 delay 写错,而是时间基准从源头就不稳定。单片机定时若同时受晶振误差、分频取整和同步延迟影响,软件看到的一秒就可能不是硬件世界的一秒。

关键字: 单片机 计时偏差 晶振

待机电流比预算高,问题不一定出在芯片休眠模式选错,而是板上仍有电气状态没有收干净。单片机进入低功耗前,如果 IO 和唤醒源没有逐项定义,电池寿命会被细小电流慢慢吃掉。

关键字: 单片机 耗电 IO

串口链路少几个字节时,线缆和干扰常常先背锅,但真正原因可能藏在时钟误差和缓冲余量里。单片机串口若只按平均吞吐设计,突发报文一来就会暴露尾部丢字。

关键字: 单片机 串口 缓冲水位

在嵌入式开发的全流程里,程序烧录是连接代码与硬件的最后一公里。很多新手工程师刚接触单片机时,总以为烧录就是“插上线点一下下载按钮”这么简单,直到在量产阶段遇到几十台设备同时烧录效率极低、在现场维护时拆开机壳重新烧录成本极...

关键字: 单片机 编程器烧录

在嵌入式系统中,看门狗(Watchdog Timer, WDT) 是防止程序跑飞的最后一道防线。但“滥用”或“乱喂狗”反而会让看门狗失效——该复位时不复位,不该复位时却误复位。本文将梳理看门狗的正确配置方法,并剖析三种典...

关键字: 看门狗 嵌入式系统
关闭