看门狗作用:在嵌入式领域,有些系统需要长期运行在无人看守的环境。在运行过程中,难免不出现系统死机的情况,这时就需要系统自身带有一种自动重启的功能。watchdog一般是一个硬件模块,其作用就是在系统死机时,帮助系统实现重新启动。
看门狗工作方式:watchdog在硬件上实现了计时功能,启动计时后,用户(软件)必须在计时结束前重新开始计时,俗称“喂狗”,如果到了约定的时间还没有重新开始计时,那么它就认为系统死机了,就自动重启系统。
看门狗原理图:
uboot以及一般的bootloader都会关闭看门狗,这是因为bootloader较简单,没有复杂的功能,不会出现死机的情况。如果不关闭看门狗,则需要不断“喂狗”,因此为了节省资源,减少不必要的操作都会关闭看门狗。
通过WTCON寄存器可以实现看门狗的关闭或者使用。
以S3C2440芯片为例,WTCON寄存器:
由上图可知,WTCON地址为0x53000000,该寄存器最后一位置零就可以关闭看门狗,为了方便,可以将整个寄存器置零
汇编代码:
#define pWTCON 0x53000000
disable_watchdog:
ldr r0, =pWTCON
mov r1, #0x0
str r1, [r0]