看门狗watchdog

一、介绍

看门狗可以使系统在异常情况下能自动复位,是在一定时间内可以被复位的计数器。

1.从软硬件控制类型划分,看门狗可分为硬件狗和软件狗。

硬件看门狗:是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零,使其不复位。

软件看门狗:将硬件电路上的定时器用mcu的内部定时器代替,类似一种监控软件,使用内部定时器对主程序的运行进行监控,对定时器的时间进行设定,当产生定时器中断时,设置一个变量,有一个初值,在程序的尾部观察其变量是否发生变化 ,如没有发生变化,则说明其发生了复位。

硬件看门狗比软件看门狗稳定,软件看门狗无法检测系统内部定时器自身发生故障。

2.又可分为独立看门狗和mcu自带的看门狗。

mcu自带的看门狗:实际上是mcu芯片自带的定时器,可随时禁用。

独立的看门狗:这种看门狗主要有一个用于喂狗的引脚和一个复位引脚,如果没有在一定时间内改变喂狗脚的电平,复位引脚就会改变状态复位CPU,可作为一个完全独立的进程在主应用程序之外运行,其上电工作后无法停止,但是会更加稳定。

3.从运行模式划分,可分为超时狗,窗口狗。

超时狗:即采用Timeout模式计时,在Timeout时间内都可以喂狗,当检测到超过设定的Timeout时间仍未喂狗则会触发进一步安全保护措施。

窗口狗:在某个特定的窗口周期内喂狗才有效。

超时狗比窗口狗使用更加简单,但是没有窗口狗稳定。

二、名词解释

1.喂狗:就是触发看门狗,计数器会被刷新,重新开始计算。按照喂狗频率,喂狗分为快狗Fast-Mode与慢狗Slow-Mode,即快速喂狗与慢速喂狗。在实际使用中,考虑到初始化到周期任务的时间较长,在Wdg初始化后会先设置WDG的运行模式为Slow-Mode,在周期任务正式运行后再切换为Fast-Mode。

2.杀狗:禁用/关闭看门狗。

3.咬狗:当看门狗启动后,计数器开始自动计数,经过一定时间,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。

三、应用(SBC芯片)

以SBC芯片进行举例说明,配置看门狗(窗口狗)窗口的大小需要在在寄存器中配置。需要查看手册,在SBC初始化中对相关寄存器进行配置。

SBC芯片有一个控制引脚debug是控制芯片是否在debug模式的,在debug模式下(debug引脚置高),看门狗将会失效,即喂狗与否都不会使系统复位。在正常模式下(debug引脚置低),在规定的窗口时间内喂狗可使其正常运行,否则出现系统复位现象,使用示波器或逻辑分析仪输出系统复位引脚的波形,来观察复位信号的情况。

观察结果:

  1. 在debug模式下(debug引脚处于高电平)喂狗函数使能与失能时,系统不会重启复位,观察波形无波形变化,为持续的高电平。如图1

2.在正常模式下(debug引脚处于低电平),喂狗函数使能,系统不会复位,观察波形无波形变化,为持续的高电平,如图1。喂狗函数失能时,系统重启复位,观察波形为高电平复位信号周期性变化,如图2。