- 硬件部分:
- 看门狗,又叫watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗(kicking the dog/service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT清零,如果超过规定的时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,使MCU复位。防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
- 流程:进入IO配置——>选择逻辑设备——>设置看门狗配置寄存器——>设置看门狗数据寄存器(循环喂狗)
- 软件部分:
-
kernel watchdog :
- Hardlockup:NMI Watchdog(NMI非可屏蔽中断)【CPU不仅无法执行其它进程,而且不再响应中断】
- SoftLockup:高精度的计时器hrtimer(一般来源于APIC)【CPU被内核代码占据,以至于无法执行其它进程】 -
用户态watchdog:【并非所有的系统宕机都是因为内核线程lockup引起的,用户线程一样有可能到时系统宕机的情况】
- watchdog程序会通过softdog.ko创建一个叫做/dev/watchdog1的设备(timer 设备),并且定期往它写东西(用于更新时间戳)。 -
外部 watchdog:通过BMC实现、通过iTCO实现
-