您的位置 首页 开关

TQ2440国嵌学院gboot-封闭看门狗

本次将重点学习看门狗的设定,watchdog1、很多人不理解看门狗,也不知道其含义,那么究竟什么是看门狗呢?看门狗,又叫watchdogtimer,

本次将要点学习看门狗的设定,watchdog

1、很多人不理解看门狗,也不知道其意义,那么终究什么是看门狗呢?

看门狗,又名 watchdog timer,是一个守时器电路,一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常作业的时分,每隔一段时刻输出一个信号到喂狗端,给 WDT 清零,假如超越规则的时刻不喂狗,(一般在程序跑飞时),WDT 守时超越,就会给出一个复位信号到MCU,使MCU复位. 避免MCU死机. 看门狗的效果便是避免程序发生死循环,或许说程序跑飞。
看门狗作业原理:在体系运转今后也就启动了看门狗的计数器,看门狗就开端主动计数,假如到了必定的时刻还不去清看门狗,那么看门狗计数器就会溢出然后引起看门狗中止,形成体系复位。所以在运用有看门狗的芯片时要注意清看门狗

看门狗分硬件看门狗和软件看门狗。硬件看门狗是运用一个守时器电路,其守时输出连接到电路的复位端,程序在一守时刻范围内对守时器清零(俗称“喂狗”),因而程序正常作业时,守时器总不能溢出,也就不能发生复位信号。假如程序呈现毛病,不在守时周期内复位看门狗,就使得看门狗守时器溢出发生复位信号并重启体系。软件看门狗原理上相同,仅仅将硬件电路上的守时器用处理器的内部守时器替代,这样可以简化硬件电路规划,但在可靠性方面不如硬件守时器,比方体系内部守时器自身发生毛病就无法检测到。当然也有经过双守时器彼此监督,这不只加大体系开支,也不能处理悉数问题,比方中止体系毛病导致守时器中止失效。

看门狗自身不是用来处理体系呈现的问题,在调试过程中发现的毛病应该要查改规划自身的过错。参加看门狗意图是对一些程序潜在过错和恶劣环境搅扰等要素导致体系死机而在无人干涉情况下主动康复体系正常作业状况。看门狗也不能完全避免毛病形成的丢失,究竟从发现毛病到体系复位康复正常这段时刻内怠工。一起一些体系也需求复位前维护现场数据,重启后康复现场数据,这或许也需求一笔软硬件的开支。

简略来说,看门狗便是一种监督的机制,对反常做出判别。

2、TQ2440看门狗

在S3C2440规格书中有一节专门介绍看门狗的,也便是WATCHDOG TIMER,介绍如下:

OVERVIEW
The S3C2440A watchdog timer is used to resume the controller operation whenever it is disturbed by malfunctions,such as noise and system errors.It can be used as a normal 16-bit interval timer to request interrupt service.The watchdog timer generates the reset signal for 128 PCLK cycles.
FEATURES
— Normal interval timer mode with interrupt request
— Internal reset signal is activated for 128 PCLK cycles when the timer count value reaches 0 (time-out).

从上面一段可以看出看门狗运用的时钟信号时PCLK的信号源,当然猎奇的同学肯定会问PCLK是什么,PCLK详细是什么将会在体系时钟介绍,简略的来PCLK是体系时钟12MHZ(也有或许是24MHZ)的体系经过锁相环得到的,PCLK的频率是体系时钟的整数倍,后面会介绍。

2、看门狗的作业机制

这张图也是从规格书中找到的,可以看到PCLK经过WTCON操控寄存器设定后,然后进入MUX,然后是WTDAT,最近到WTCNT数据寄存器,也便是说在看门狗作业的时分,看门狗的会经过计数,将计数的值与数据寄存器的值进行比对,溢出的话,就有发生中止,也便是reset重启,因而在翻开看门狗之前,必定要初始化看门狗的数据寄存器WTDAT,这个原理规格书也有介绍到,如下

WTDAT & WTCNT
Once the watchdog timer is enabled, the value of watchdog timer data (WTDAT) register cannot be automatically reloaded into the timer counter (WTCNT).In this reason, an initial value must be written to the watchdog timer count (WTCNT) register, before the watchdog timer starts.

3、封闭看门狗

到了真实封闭看门狗的时分,怎么样可以封闭看门狗呢,当然经过看门狗的操控寄存器WTCON,持续看下文

这儿咱们首要介绍看门狗操控寄存器WTCON,其他两个寄存器暂时不介绍,用的时分再和我们共享。

首要看到WTCON寄存器的地址0x53000000,其次是表格最终一行Reset enable/disable=WTCON[0]也便是WTCON的最终一位是操控看门狗的翻开或许封闭,1:翻开;0:封闭。

下面便是封闭看门狗的代码:

#define pWTCON 0x53000000//宏界说pWTON:0x53000000,看着很熟悉,对的,这是看门狗WTCON的地址
disable_watchdog://子程序进口函数

ldr r0, =pWTCON//将0x53000000加载到r0寄存器中
mov r1, #0x0//将0传送到r1寄存器我国
str r1, [r0]//将r1寄存器的值加载到r0存储地址寄存器中,也便是0x53000000
mov pc, lr//调用pc指针回来。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/258517.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部