[麦麦茶水间] 【每周分享】看门狗有哪些类型?

[复制链接]
37|0
dffzh 发表于 2025-10-31 14:20 | 显示全部楼层 |阅读模式
看门狗是一种用于监控系统是否正常运行的机制,当系统出现故障(如程序跑飞、死锁、死循环)时,能强制系统复位,使其恢复到一个已知的初始状态。
看门狗可以从不同角度来分类。
一、 按硬件/软件实现划分
这是最基础也是最常见的分类方式。
1. 硬件看门狗
工作原理:一个独立的硬件计时器芯片(或作为微控制器内部的一个独立外设)。CPU需要在一个设定的时间间隔(“喂狗时间”)内,通过特定的I/O口向看门狗发送一个“喂狗”信号(通常是电平翻转或特定序列)。如果看门狗在超时前收到信号,计时器会清零并重新开始计时;如果超时仍未收到信号,看门狗就会输出一个复位信号给CPU的复位引脚,强制系统重启。
优点:
高可靠性:独立于CPU运行。即使CPU本身死机、程序跑飞,只要时钟还在,看门狗就能独立完成计时和复位动作。
抗干扰能力强:不易受软件bug的影响。
缺点:
增加硬件成本:需要额外的芯片或占用芯片内部资源。
应用场景:几乎所有对可靠性有要求的嵌入式系统、工业控制、汽车电子、医疗设备等。
2. 软件看门狗
工作原理:通过操作系统内核或一个高优先级的监控任务来实现。它监控一个或多个被保护的任务(或整个系统)的运行状态。被保护的任务需要定期“喂狗”(例如,更新一个计数器或发送心跳信号)。监控任务如果发现某个任务在规定时间内没有喂狗,就认为该任务已死锁或崩溃,进而采取恢复措施,如重启该任务或整个系统。
优点:
灵活性高:可以监控系统的特定部分(如某个关键线程),而无需重启整个系统。
无硬件成本。
缺点:
可靠性较低:如果整个操作系统崩溃(如内核Panic)或高优先级任务被阻塞,软件看门狗本身也可能失效,导致监控失灵。
应用场景:复杂的操作系统(如Linux, Windows)、大型应用程序中,用于监控关键进程或服务。
二、 按功能与集成度划分
1. 独立看门狗(IWDT)
这通常指硬件看门狗,强调其物理上的独立性。它是一个完全独立的芯片,与主CPU分离。这是最可靠的形式。
2. 窗口看门狗(WWDT)
这是硬件看门狗的一种更高级的形式。
工作原理:它不仅规定了喂狗的最后期限(超时时间),还规定了一个最早喂狗时间,形成了一个“时间窗口”。喂狗操作必须在这个时间窗口内完成。
喂得太早(在窗口开启前)-> 复位;
喂得太晚(在窗口关闭后)-> 复位;
只在窗口期内喂狗 -> 正常。
优点:可以有效防止因程序异常(例如陷入一个循环中频繁喂狗)而导致的看门狗失效,安全性更高。
应用场景:对安全性要求极高的场合,如汽车电子(符合ISO 26262标准)、航空电子等。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

195

主题

1680

帖子

23

粉丝
快速回复 在线客服 返回列表 返回顶部