看门狗定时器(WDT)强制嵌入式微处理器或微控制器响应无效的软件状态而进行复位(硬件复位)。这样的状态可能很简单,例如由软件错误、宇宙射线或EMI(电磁干扰)之类的事件引起的触发寄存器位。我们常见的联网设备中,串口服务器、DTU、工业路由器等都有看门狗保护功能。
防止微处理器锁定是WDT的典型应用。通常,嵌入式软件具有一个“主循环”,该主循环可调用多个子程序来指导各种活动。然后,在循环的顶部将WDT复位一次。如果循环由于任何原因无法正确执行,则看门狗将启动,并且设备将被重置。
具有WDT的系统特别适合检测误码。瞬时位错误是由中断引起的,包括软存储故障以及EMI放电到存储设备及其接口中。这些位错误会导致暂时的极性反转,导致数据进出嵌入式处理器。当在获取程序信息时发生此位错误时,微处理器将开始执行错误代码。潜在地,处理器可能开始执行操作数而不是操作码。当处理器开始执行此错误代码时,它将无法正确执行为看门狗服务的代码。在超时间隔之后,看门狗将导致处理器复位。在正确设计的系统中,此重置将更正原始错误。
还要注意,WDT无法立即检测到故障。根据定义,WDT必须在重置处理器之前达到预定时间间隔的末尾。这个事实解释了为什么在WDT可以纠正失控条件之前,应选择最短的超时间隔来到期。
WDT可以位于微处理器(例如MAXQ2000微控制器)内部,也可以作为独立IC外部使用,也可以作为支持ASIC的一部分嵌入。无论WDT是内部的还是外部的,每种设备类型都有其优点和缺点。内部计时器可以节省金钱,但可能会受到失控代码的影响。外部WDT的实现成本稍高,但它具有独立的时钟源,因此具有更好的可靠性。如果配置正确,则无法通过失控代码来绕过或禁用它。
● 如果设计正确,则不能意外禁用其软件。
● 时钟源与系统时钟分开。
● 在最小/最大看门狗超时周期内可用。
● 复位输出可以连接到其他需要复位的系统IC。
● 监视一个或多个电源轨(某些微处理器中的内部掉电电路不太准确)。
● 超时时间可通过使用电容器完全调节。
● 实施需要一些成本。
● 温度范围内的超时时间可能会有很大差异。
● 需要一根微处理器I / O线。
● 由于微处理器具有节能功能,因此必须计算超时以匹配高速和低速时钟模式。
● 成本基本上为零。
● 为了保存调试信息,它可以在重置之前触发中断。
● 使用方便。
缺点
● 有时双向复位引脚可以连接到其他需要复位的系统IC。
● 当处理器从高速更改为低速或进入睡眠模式时,可以修改超时。
● 看门狗超时时间随温度的变化较小。
每个WDT的核心都是计数器寄存器。时钟源连续递增计数器寄存器,当它溢出时,看门狗逻辑将强制系统复位。为防止这种复位,您必须定期执行“维修看门狗”过程中的清零计数器寄存器。外部WDT IC具有数字输入,可在每次从低到高或从高到低的转换时清除计数器寄存器。对于内部WDT,“服务”实现有所不同。例如,可以通过设置寄存器位(MOVE WDCN.0,#1)来服务MAXQ2000的WDT。PIC微控制器和其他微处理器使用专用指令(CLRWDT)来服务计数器寄存器。
正确运行的软件应提供具有足够规律性的数字信号转换,以使计数器寄存器永远不会溢出。但是软件可能陷入无限循环或开始失控执行,因此不会清除计数器寄存器。这种情况最终会触发重置。WDT周期是计数器溢出所需的时间。为防止复位,看门狗服务之间的间隔必须短于超时时间。
一些WDT包含比基本计数器结构更高级的功能。常见的变化是“窗口式”或“最小/最大” WDT。当看门狗维修太慢或太快时,此功能会发出复位信号。如果在计数器寄存器中的数字低于某个阈值时有清除计数器寄存器的信号到达,则器件将触发系统复位。简而言之,如果维修太快,看门狗会发出系统复位信号,从而在晶体振荡器开始以晶体标称频率的谐波运行时阻止微处理器工作。另一个功能是通过逻辑输入(外部看门狗)或寄存器位(内部看门狗)禁用WDT。
WDT的变化丰富,而工业路由器中的看门狗功能是对产品稳定运行的保护方式,是看门狗定时器中的一种。这种保护机制可以助力联网项目通讯过程中的稳定性,达到不因联网设备宕机造成的数据中断。为数据传输工作提供良好的应用基础。