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