linux 喂狗时间,看门狗喂狗时间及程序

什么是看门狗定时器

linux 喂狗时间,看门狗喂狗时间及程序_第1张图片

看门狗定时器(WDT,Watch Dog TImer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。

看门狗分硬件看门狗和 软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零,因此程序正常工作时, 定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理 上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障 就无法检测到。当然也有通过双定时器相互监视,这不仅加大系统开销,也不能解决全部问题,比如中断系统故障导致定时器中断失效。

看门狗本身不是用来解决系统出现的问题,在调试过程中发现的故障应该要查改设计本身的错误。加入看门狗目的是对一些程序潜在错误和恶劣环 境干扰等因素导致系统死机而在无人干预情况下自动恢复系统正常工作状态。看门狗也不能完全避免故障造成的损失,毕竟从发现故障到系统复位恢复正常这段时间 内怠工。同时一些系统也需要复位前保护现场数据,重启后恢复现场数据,这可能也需要一笔软硬件的开销。

什么是看门狗喂狗

linux 喂狗时间,看门狗喂狗时间及程序_第2张图片

在看门狗( watchdog TImer)中,是一个定时器电路, 一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给WDT清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,使MCU复位。 防止MCU死机。

看门狗喂狗时间

linux 喂狗时间,看门狗喂狗时间及程序_第3张图片

看门狗喂狗的最长时间一般在初始化过程中就已经定义,有个7位递减计数器(WWDG-》CR),就这个计数器和窗口计数器(WWDG-》CFR)决定什么时候喂狗。狗喂早了,复位——“早”体现在 计数器值(tr)》窗口值(wr),也就是计数器值还没有减到窗口值以下;当 0x40 《 计数器值(tr) 《 窗口值(wr) 时,这时候最适合喂狗了,也只有在这时候喂狗才合适;当 计数器的值 从0x40变到0x3F的时候,将产生看门狗复位;当然在要产生复位的前一段时间,如果开启了提前唤醒中断,那么就会进入中断,在中断函数里,我们需要及时喂狗,否则会产生复位。

看门狗通常是放在程序的主循环中,而喂狗的时间可以是一个主循环最长时间的1.5倍作为看门狗的喂狗时间,这样如果超过时间没有回到主循环,程序就自动复位。

看门狗喂狗程序

linux 喂狗时间,看门狗喂狗时间及程序_第4张图片

linux 喂狗时间,看门狗喂狗时间及程序_第5张图片

你可能感兴趣的:(linux,喂狗时间)