失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【Linux】ARM篇七--WDT看门狗实验

【Linux】ARM篇七--WDT看门狗实验

时间:2021-08-22 00:58:23

相关推荐

【Linux】ARM篇七--WDT看门狗实验

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看门狗实验》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。