ARM篇7--WDT看门狗实验
- 一、前言
- 二、准备工作
- 三、看门狗简介
- 四、看门狗寄存器介绍
- 1、看门狗结构
- 2、看门狗寄存器
- 3、WTCON寄存器
- 4、WTCNT寄存器
- 五、看门狗代码编写
- 1、程序
- 2、程序烧入步骤
- 六、实验现象
一、前言
本篇使用华清远见的FS4412开发板,进行WDT开门狗实验,知识包含看门狗介绍,开门狗使用原理,看门狗代码编写、看门狗实验。
二、准备工作
- FS4412开发板,我用的是华清远见的FS4412开发板
- ubuntu下linux操作系统(包含交叉编译工具)
- serial-com8程序烧入执行工具
- 开发板电路原理图、芯片手册
- 开发程序模板
开发板资料、交叉编译工具、程序烧入工具下载(包含教程)
开发板可选择到华清远见官网进行租赁。
工程模板文件下载
三、看门狗简介
Watch Dog Timer即看门狗定时器,其主要作用是当发生软件故障时可产生复位信号使芯片复位,其本质是一个计数器。
因此在使用看门狗时,需要每隔一段时间给计数器设定值,以防止计数器减到0,跟现实生活中,给狗加狗粮的行为类似。
Exynos 4412 芯片中看门狗包括的功能:
- 支持正常间隔定时器模式与中断请求。
- 如果定时器计数值达到0(超时),激活内部复位信号。
- 支持级触发中断机制
四、看门狗寄存器介绍 1、看门狗结构
可以看出控制看门狗的寄存器主要是WTDCON寄存器。
2、看门狗寄存器
3、WTCON寄存器
- 一级分频器分频数在1~256,而我们写0~255,内部寄存器自动+1
4、WTCNT寄存器
- 看门狗计数器,使用看门狗时,该寄存器自动递减
- 计数范围是0~65535
五、看门狗代码编写 1、程序
#include "exynos_4412.h"
void delay(int i)
{
while(i--);
}
void WDT_Init()
{
WDT.WTCON = WDT.WTCON & (~(0xFF<<8)) | (0x9B<<8);
WDT.WTCON |= (0x2<<3);
//看门狗频率为100000000/156/64 约等为10000Hz
WDT.WTCON &= (~(0x1<<2));
WDT.WTCON |= 1;
WDT.WTCNT = (5*10000); //5秒
WDT.WTCON |= (0x1<<5);
}
int main()
{
WDT_Init();
while(1)
{
printf("WDT.WTCNT = %dn", WDT.WTCNT); //打印计数器值
delay(100000);
}
return 0;
}
2、程序烧入步骤
1.输入make生成.bin文件
2.将.bin文件复制到共享文件夹
①
②
③
输入:
cp ARM_LED.bin /mnt/hgfs/cca
将文件复制到cc文件夹
3.打开serial-com8,连接开发板(COM2接口),烧入程序
①查看端口
②打开serial-com8设置
③接通开发板电源,迅速按enter键,使其快速进入裸机模式。
④烧入程序
输入:
loadb 40008000
选择可执行文件烧入
烧入成功:
⑤执行程序
输入:
go 40008000
六、实验现象
计数器递减,到0时:
开发板复位。
到这里就结束啦!



