文章目录
- 硬件看门狗
- 软件看门狗
- 差异分析
- 延申
- 窗口看门狗
硬件看门狗
硬件看门狗的本质上是一个定时器电路。通常存在一个输入,输入到MCU的RST端。在正常工作状态下,MCU每隔固定时间间隔会输出一个信号给RST端,实现对看门狗端清零。如果在指定的时间内未收到清零请求,那么看门狗电路会输出一个复位信号给到MCU,实现复位操作,防止MCU死机。
通常来讲,系统运行后就已经开启了看门狗的计数器。看门狗就开始了自动计数,如果看门狗计数溢出后,就会引起看门狗中断从而造成系统复位。因此,在使用看门狗芯片时需要注意看门狗的电路设计和软件实施。
软件看门狗
软件看门狗技术的原理和硬件开门狗的技术原理相通,只是通过软件的方法实现。一般来说,一个定时器/计数器就可以实现软件开门狗的设计。设计思路大体如下:
1. 在初始化过程中设置定时器/计数器的方式设定定时时间的处置,并且打开中断;
2. 根据定时时间,在主程序中按照一定时间间隔(小于定时时间周期)执行复位定时器的指令;
3. 另外,在定时器的中断服务程序中,应设置一条无条件转移指令——将定时器的命令转移至程序初始化的入口。
差异分析
硬件看门狗与软件看门狗的差异分析 | |
---|---|
相同点 | 都是通过定时器实现;定时时间到没有喂狗就进行复位 |
都是需要在规定的时间内喂狗 | |
都是靠软件进行喂狗 | |
差异点 | 硬件看门狗芯片一般还附带了延迟复位和电源检 测的功能,软件则没有 |
软件看门狗很容易屏蔽关闭,只需修改其中的寄存器,而硬件看门狗一旦启动不断电就停不下来 | |
软件看门狗很容易启动,只需修改其中的寄存器。硬件一般是收到第一个喂狗信号后就启动 | |
硬件看门狗上电后收到第一个喂狗脉冲就完成了初始化,软件看门狗则需要配置相关的寄存器(或者调用相关的看门狗子程序) |
延申
窗口看门狗
窗口看门狗由从 APB1 时钟分频后得到时钟驱动。通过可配置的时间窗口来检测应用程序非正常的过迟或过早操作。 窗口看门狗最适合那些要求看门狗在精确计时窗口起作用的程序。
工作流程如下:
1.首先需要设置两个窗口值。假设总计数为1024,窗口值1为512,窗口值2为256。
2.当计数处于1024~512区间内,系统出现喂狗行为,则会产生复位信号;
3.当计数处于512~256区间内,系统出现喂狗行为,则重新开始计数;
4.当计数处于256~0区间内,系统出现喂狗行为,则会产生复位信号。