ARM篇七--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"/*** @description: 延时函数 * @param {int} i- 延时计数* @return {*}*/void delay(int i){while(i--);}/*** @description: 看门狗初始化* @param {*}* @return {*}*/void WDT_Init(){/* 设置一级分频 156 = 0x9B+1*/WDT.WTCON = WDT.WTCON & (~(0xFF<<8)) | (0x9B<<8);/* 设置二级分频 64- 10 */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 = %d\n", 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时:
开发板复位。
到这里就结束啦!
如果觉得《【Linux】ARM篇七--WDT看门狗实验》对你有帮助,请点赞、收藏,并留下你的观点哦!