14. 从0学ARM-exynos4412-看门狗裸机程序编写

看门狗 一、概念

看门狗的简称是WDT(Watch Dog Timer),exynos4412scp中的看门狗定时器(WDT)是一种定时装置。

1. 工作原理

由(一般需要客户编写)软件读写定时器相关的寄存器,打开看门狗,并设定计数时间(以秒或分钟计算),定时器计数计满,由软件清零,以表明系统状态正常,这时,定时器计数重新开始,反复,否则,看门狗认为系统异常或有其他特定事件发生,触发系统复位信号,或提供中断,系统正常后重复定时器计数。

这样只要软件正常运行,就不会出现复位或触发中断。当软件死机或运行出错时,由看门狗定时器对系统进行复位或触发中断,从而保证系统的正常运行。

看门狗的定时时间可以由用户设定,这样可以根据需要在指定的时间内复位系统。

2. 作用

看门狗的作用是微处理器收到干扰进入错误状态后,使系统在一定时间间隔内复位。因此看门狗是保证系统长期、可靠和稳定运行的有效措施。目前大部分的嵌入式芯片内部都集成了看门狗定时器来提高系统运行的可靠性。

4412处理器的看门狗是当系统由于噪音和系统错误而出现故障后,用于处理器的复位操作,也可以作为一个通用的16位定时器来请求中断操作。看门狗定时器产生128个PCLK周期的复位信号。主要特性有如下两个。
1)通用的中断方式的16位定时器。
2)当计数器减到0(发生溢出)时,产生128个PCLK周期的复位信号。

3. Watchdog Timer Block Diagram

Watchdog Timer Block Diagram


看门狗模块包括一个预比例因子放大器,一个四分频的分频器,一个16位计数器。

看门狗的时钟信号源来自PCLK,为了得到宽范围的看门狗信号,PCLK先被预分频,然后再进过分频器分频。预分频比例因子和分频器的分频值,都可以由看门狗控制寄存器(WTCON)决定,预分频比例因子的范围是0~255,分频器的分频比可以是16、32、64或128。看门狗定时器时钟周期的计算如下:

clock分频公式


式中Prescaler value 为预分频比例放大器的值;Divison_factor是四分频的分频比,可以是16、32、64或128。

4. 工作流程

一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值就不能被自动地装在到看门狗定时器(WTCNT)中。因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中。

【注意】
当4412用嵌入式ICE调试时,看门狗定时器的复位功能就不被启动,看门狗定时器能从CPU内核信号判断出当前CPU是否处于调试状态。如果看门狗定时器确定当前模式是调试模式,尽管看门狗产生溢出信号,但是仍然不会产生复位信号。

每个时钟周期都会将看门狗定时计数器WTCNT里的值减1,当计数器WTCNT里的值变为0时开始执行超时操作,首先,判断看门狗控制寄存器里bit2 WTCON[2]设置情况,如果为1则产生中断信号,引起系统中断,如果为0不做任何操作,进入复位信号产生器,如果WTCON[0]位为1,则产生控制器复位信号,否则不做任何操作。每次超时操作之后,看门狗WTCON会自动加载看门狗数据寄存器WTDAT里的用户设置值,继续执行递减操作。

二、寄存器设置 1)看门狗定时器控制寄存器(WTCON)

WTCON


WTCON寄存器的内容包括:

WDT timer:[5] 用户是否启动看门狗定时器、

Clock select:[4:3] 4个分频比的选择、

Interrupt generation:[2] 是否允许中断产生、

Reset enable/disable: [0] 是否允许复位操作等。

1) 使用起看门狗功能
开启看门狗复位功能、允许中断、16分频、开启看门狗定时器、Prescaler value设置为249

WDT.WTCON = (249 << 8) | (1 << 5) | (1 << 2)|(1 << 0);

2)当普通定时器使用
如果用户想把看门狗定时当做一般定时器使用,应该中断使能,禁止看门狗定时器复位。

WDT.WTCON = (249 << 8) | (1 << 5) | (1 << 2); 2) 看门狗定时器数据寄存器(WTDAT)

在这里插入图片描述


WTDAT用于指定超时时间,在看门狗把复位功能禁止并打开中断使能后,此时看门狗定时器就是一个普通的定时器,使用方法和普通定时器一样。当使用复位功能后,由于WTCNT的值减到0时,系统就会复位,所以WTDAT的值装不进看门狗计数寄存器(WTCNT)中。复位后初始值为0x8000。

3) 看门狗计数寄存器(WTCNT) 喂狗用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfpjd.html