看门狗是啥?
1.在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都有可能会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,导致整个系统的陷入停滞状态,发生不可预料的后果。
2.看门狗,即watchdog,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端,一般是连接到单片机。
3.看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。看门狗命令在程序的中断中拥有最高的优先级。
看门狗的类型?
1.软件看门狗和硬件看门狗都是用于监控系统崩溃的工具,它们的作用是在系统出现故障或异常情况时自动恢复系统。
2.软件看门狗是一种程序,运行在操作系统中,通过定时检测系统是否正常运行来判断系统是否崩溃。如果系统出现了故障或死锁,软件看门狗会自动重启系统或执行其他预定义的操作。软件看门狗通常用于嵌入式系统中,可以方便地进行编程和控制。
3.硬件看门狗则是一种独立的硬件设备,它与计算机主板上的芯片相连,可以在操作系统崩溃或无法响应时自动重启系统。硬件看门狗一般具有更高的稳定性和可靠性,因为它不受操作系统的影响。
硬件看门狗
硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。常用的WDT芯片如MAX813,5045,IMP813等
这里以 ADM6316 看门狗芯片为例:
该芯片内置看门狗功能,设备上电时,芯片的VCC电压一旦到达开启阈值电压 VTH,延迟定时器启动,经过延迟时间tRP,复位信号RESET或者/RESET即可输出,实现设备的延迟上电复位;
当喂狗信号WDI收到第一个脉冲电平时,就触发芯片内部的定时器,软件必须在tWD时间内输出喂狗信号WDI,否则复位信号RESET或者/RESET将会在定时时间tWD到达时,进行复位,设备重新复位。
软件看门狗
软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,一般是将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,并启动定时器。程序按时对定时器赋初值(或复位),以免它“饿”了。
这种看门狗是可以被禁用的(只要停止这个定时器即可),大部分CPU都内置看门狗,硬件原理可参考各芯片数据手册。
优点:可以通过程序改变初始时间,也可以随时禁用。
缺点:需要初始化,如果程序在初始化、启动完成前跑飞或在禁用后跑飞,看门狗就无法复位系统,这样看门狗的作用就没有了,系统恢复能力降低。
软硬件看门狗的异同点
相同点:
都是通过定时器实现;定时时间到没有喂狗就进行复位。
都是需要在规定的时间内喂狗。
两者都是靠软件进行喂狗。
不同点:
附加功能:硬件看门狗芯片一般还附带了延迟复位和电源检测的功能软件则没有。
屏蔽方法:软件看门狗很容易屏蔽关闭,只需修改其中的寄存器,而硬件看门狗一旦启动不断电就停不下来。
启动方式:软件看门狗很容易启动,只需修改其中的寄存器。硬件一般是收到第一个喂狗信号后就启动。
初始化:硬件看门狗上电后收到第一个喂狗脉冲就完成了初始化,软件看门狗则需要配置相关的寄存器(或者调用相关的看门狗子程序)