JZ2440看门狗分析

xiaoxiao2021-02-28  67

使用WATCHDOG定时器的“WATCHDOG”功能时,在正常的程序中,必须不断重新设置WTCNT寄存器使得它不为零,这个可以保证系统不被重新启动,这称为“喂狗”,当程序崩溃,不能喂狗,计数值达到0后系统将被重新启动,这样程序将重新运行。这就避免了各类系统错误时系统彻底死机。 WATCHDOG需要设置的三个寄存器: (1)WTCON寄存器(WATCHDOG TIMER CONTROL): [0]WATCHDOG功能 :定时器到达0时,0 不输出复位信号 1 输出复位信号 [1]中断使能 :0禁止中断                         1使能中断 [4:3] :分频系数 00:16分频 divider value                            01:32分频                           10:64分频                           11:128分频 [5]定时器启动 :0停止                              1启动 [15:8]预分频系数:0~255 prescaler value WATCHDOG工作的频率=PCLK/(prescaler value +1)/(divider value)。 (2)WTDAT(WATCHDOG TIMER DATA): 设定WATCHDOG定时器的超市周期,在定时器启动后,当计数到0时,WTDAT寄存器的值会自动传入WTCNT寄存器。不过第一次启动WATCHDOG寄存器时WTDAT的值会自动传入WTCNT寄存器 (3)WTCNT(WATCHDOG TIMER COUNT):启动关门狗前,不需赋予初值。启动定时器后,开始减一计数,当计数到0时,如果中断使能并WATCHDOG功能为输出复位信号,则发出复位信号,装在WTDAT的值重新开始计数。 在UBOOT中和KERNEL中常常关闭看门狗,防止重复启动。代码如下 # define pWTCON 0x53000000 ldr r0, =pWTCON mov r1, #0x0 str r1, [r0]
转载请注明原文地址: https://www.6miu.com/read-34066.html

最新回复(0)