相信大家都看过中国移动前些时间做的一个广告,从城市到山村,到青藏高原,在哪儿都有中国移动的网络,到哪儿都能打电话,由此可以联想到中国移动在全国有无数个信号基站,很多基站建设在环境比较恶劣的地方,我们来思考一个问题?假如,有一天某个基站出了问题不能正常工作了,毫无疑问,移动的工作人员会带各种检测设备去进行修理,如果是出现非硬件故障(如用户电话服务突然巨增,造成繁忙死机或电磁干扰造成CPU运行出错等),导致基站服务器出现异常死机,工作人员只需要进行一个操作,重启一下即可。如果该基站安装在青藏高原上,这样一次上去,成本是很大的。退一步讲,这种情况虽然成本很高,但是还是可以修复的,如果这种情况出现在月球探测器身上,问题就更严重了。因此针对这种特殊情况的设备,我们期待有一种设备能够在机器出现非正常情况下进行自动重启来恢复工作状态,使用看门狗定时器就可以完美解决这个问题了。

看门狗WatchDog的名字形象的描述了它的工作原理,看门狗每隔一段时间(比如:3个小时)它就会饥饿,每次饥饿时都叫,如果不想让它叫,只要我们保证在3个小时内喂狗一次就行。因此我们要及时的对看门狗控制器执行喂狗操作。

看门狗定时器内部有一个递减计数器,当该计数器递减为0的时候,就会自动重启控制器(如下图所示),如果我们写有这样的程序,该程序在定时器计数器递减为0之前,将其递减计数器重新设置一下(喂狗),那么就不会产生重启操作。假如机器设备出现异常情况下如死机,CPU执行出错,程序跑飞等情况,CPU就会陷入非正常的执行流程,就不会去执行重置计数器的程序,当计数器递减为0时,会产生复位控制器信号,机器就会重新启动,恢复正常执行流程。这样的设计原理就解决了很多环境恶劣的情况下,对服务器进行重启的任务。上面的重置倒计数的操作通常叫做“喂狗”。

图2-42看门狗定时器

(1)用于解决远程控制器在出现电磁干扰,噪声,系统错误等外界条件造成的系统死机等不正常运行的问题

(2)它不仅可以产生复位信号,还可以通过设置,产生定时的中断信号

看门狗定时器从单片机时代就开始广泛使用,是嵌入式产品中的一大特色,很明显上述用途如果我们都用不到,就没有必要打开看门狗的功能,在miniOS操作系统里我们不使用它来定时产生中断,也不用它来自动重启异常的开发板(因为出现异常的可能性几乎可以忽略),因为实现miniOs的第一步就是关闭看门狗,在开始裸板驱动之前,先来了解S3C2440看门狗定时器。

图2-43 S3C2440看门狗定时器工作原理

名词解释:

PCLK(Peripherals Clock):APB(Advanced Peripherals  Bus)高级外围设备总线上外设的工作时钟频率,它主要为开发板上的外围低速设备提供工作时钟,如串口,I2C等,

8-bit Prescaler:8位分频器,由程序来控制对PCLK进行分频,它由WTCON寄存器来控制设置。

MUX:多路复合器,它支持多种时钟源,通过设置它来选择一种时钟频率,看门狗控制器里会产生四种时钟频率,分别是1/16,1/32,1/64,1/128的已分频时钟,可以通过WTCON寄存器第3,4位进行选择设置。

WTCNT:看门狗递减寄存器,一旦看门狗使能,WTCNT里的数据(由WTDAT寄存器在使能之前设置)就开始在输入时钟频率下递减。

Interrupt:中断信号,由WTCON寄存器的第2位控制是否产生中断信号。

Reset Signal Generator:Reset信号产生器,默认情况下当递减寄存器里的倒计数为0时,会产生通过Reset信号产生器产生Reset信号,让控制器重启,可以由WTCON寄存器的第0位进行设置。

当看门狗使能时,外围时钟PCLK为看门狗定时器的输入时钟,MINI2440在没有开启时钟时,采用外部晶振(又叫高频振荡器,它每秒钟产生固定频率时钟)提供的12MHz输入时钟频率,PCLK首先进入8位分频器Prescaler,其对PCLK进行分频,可以理解为对PCLK的除法运算,这样PCLK的时钟频率就变成PCLK/Prescaler value,其中分频器Prescaler的值可以在一定范围内自定义,然后经过分频的时钟经过除数因子选择器,这是在分频器的基础上再次对时钟信号进行降频,通过除数因子选择器,选择一个除数因子,然后经过MUX复合器,这时输入时钟变成PCLK/ Prescaler value/除数因子,得到我们想要的输入时钟,每个时钟周期都会将看门狗定时计数器WTCNT里的值减1,当计数器WTCNT里的值变为0时开始执行超时操作,首先,判断看门狗控制寄存器里bit2 WTCON[2]设置情况,如果为1则产生中断信号,引起系统中断,如果为0不做任何操作,进入复位信号产生器,如果WTCON[0]位为1,则产生控制器复位信号,否则不做任何操作。每次超时操作之后,看门狗WTCON会自动加载看门狗数据寄存器WTDAT里的用户设置值,继续执行递减操作。

表2-5看门狗定时器控制寄存器(WTCON)

寄存器名

地址

是否读写

描述

复位默认值

WTCON

0X53000000

R/W

看门狗定时器控制寄存器

0x8021

WTCON

描述

初始值

Prescaler value

[15:8]

8位分频器预设值,有效范围0~255(28 - 1)

0x80

Reserved

[7:6]

保留,正常情况下必须为00

00

Watchdog timer

[5]

看门狗定时器使能位

0 =无效,1 =有效

1

Clock select

[4:3]

选择除数因子来决定输入时钟

00 = 16,01 = 32

10 = 64,11 = 128

00

Interrupt generation

[2]

中断使能位

0 =无效,1 =有效

0

Reserved

[1]

保留,正常情况下该位必须为0

0

Reset enable/disable

[0]

复位使能位

1:看门狗定时器超时,发出CPU复位信号

0:看门狗定时器复位无效

1

表2-6看门狗定时器数据寄存器(WTDAT)

寄存器名

地址

是否读写

描述

复位默认值

WTDAT

0x53000004

R/W

看门狗定时器数据寄存器

0x8000

WTDAT

描述

初始值

Count Reload value

[15:0]

该值在超时后,自动载入计数寄存器

0x8000

注:WTDAT寄存器用于指定计数寄存器的初始值,也就是它的超时时间,系统上电之后硬件自动的将0x8000的初始值载入到WTCNT里,在发生了第一次超时操作时,WTDAT的值才会载入到WTCNT寄存器。

表2-7看门狗定时器计数寄存器(WTCNT)

寄存器名

地址

是否读写

描述

复位默认值

WTCNT

0x53000008

R/W

看门狗定时器计数寄存器

0x8000

WTCNT

描述

初始值

Count value

[15:0]

看门狗定时器的当前计数值

0x8000

通过对上面寄存器描述分析,可以得出以下结论:

l通过设置WTCON[5]来设置看门狗定时器的使能

l在开启看门狗定时器后,通过设置WTCON[15:8]和[4:3]位来设置看门狗控制器的工作时钟频率,具体看门狗的递减时间间隔可以通过下面的公式算出:

t_watchdog= 1/( PCLK / (Prescaler value + 1) / Division_factor )

注:t_watchdog:看门狗控制器递减时间间隔(单位秒)

PCLK:APB总线工作时钟(单位Hz)

Prescaler value: 8位分频器预设值

Division_factor:除数因子

l通过设置WTCON[2]和WTCON[0]位,来使能产生中断和复位信号

l通过设置WTDAT来设置计数值

linux watchdog超时时间,S3C2440看门狗定时器(Watchdog)相关推荐

  1. 【转载】外设使用Tips之MPC574xP系列汽车级MCU的SWT看门狗定时器配置与使用

    外设使用Tips之MPC574xP系列汽车级MCU的SWT看门狗定时器配置与使用 原创 2017-09-13 胡恩伟 汽车电子expert成长之路 内容提要 引言 1. SWT的功能概述 2. SWT ...

  2. c语言看门狗指令pic,PIC单片机的窗口看门狗定时器.PDF

    PIC单片机的窗口看门狗定时器 TB3123 PIC® 单片机的窗口看门狗定时器 作者: Ashutosh Tiwari Microchip Technology Inc. 简介 窗口看门狗定时器(W ...

  3. Keil5 平台 S3C2440裸机程序开发-----看门狗定时器

    目录 前言 一.看门狗定时器配置 二.源码 前言 本博文介绍mini2440开发板,在keil5平台上进行外部中断开发的一些基本配置. 一.看门狗定时器配置 PCLK=50MHz,预分频值设置为249 ...

  4. LabVIEW CompactRIO 开发指南10 确保可靠性与看门狗定时器

    LabVIEWCompactRIO 开发指南10 确保可靠性与看门狗定时器 在设计将要部署的嵌入式系统时,考虑纳入看门狗定时器以确保可靠性.看门狗定时器是一个硬件计数器,它与嵌入式软件应用程序接口,用 ...

  5. 用看门狗定时器做计时器,计算程序耗时,超声波测距,FL2440

    开发板:FL2440 核心芯片:S3C2440(ARM9) 超声波模块:HC-SR04 超声波模块工作原理:共四个脚,VCC接5V,GND接地,Trig脚接芯片通过IO传出的高电平(持续时间不低于10 ...

  6. MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)

    目录 硬知识 看门狗定时计数器 (WDTCNT) 看门狗模式 定时计数模式 看门狗定时器中断 时钟故障保护功能 低功耗模式下的看门狗操作 看门狗定时器控制寄存器 WDT_A API (机翻) 参数 上 ...

  7. NXP JN5169 使用看门狗定时器

    NXP JN5169 使用看门狗定时器 一.看门狗定时器介绍 二.示例代码 一.看门狗定时器介绍 JN5169 提供了看门狗定时器以防止软件锁定.它通过计算高速 RC 系统时钟(该振荡器运行在 27M ...

  8. 51单片机之看门狗定时器ing STC12C5A60S2

    1.看门狗定时:每隔一定时间不刷新定时器(不给狗粮),他将溢出(狗叫giao~~).多数情况,定时器溢出将复位系统 2.看门狗用来处理软件或硬件错误的死机,保证自动复位.可用于特定情况下恢复 3.外部 ...

  9. ARM 看门狗定时器

    一.什么是看门狗.有什么用 (1) 看门狗定时器和普通的定时器并无本质区别.定时器可以设定一个时间,在这个时间完成之前定时器不断计时,时间到的时候,定时器会复位 CPU(重启系统). (2 )系统正常 ...

  10. S5PC100看门狗定时器

    转自: S5PC100看门狗定时 作者:杨胜利,华清远见嵌入式培训讲师. 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义.它的 ...

最新文章

  1. 哇 跨行竞争 Python竟能替代PS完成海报设计
  2. Java14-day05【集合(Collection常用方法-遍历、List特有方法、List集合子类特点、LinkedList集合的特有功能、ListIterator)】
  3. OpenCASCADE绘制测试线束:拓扑命令之纹理映射到形状
  4. ubuntu 14.04 将窗体button移到右边
  5. 文章id 文章标题点击量php,zblogphp函数:GetPost 获取指定ID/标题/别名的文章或页面数据...
  6. RuntimeError: expected backend CUDA and dtype Float but got backend CUDA and dtype Long
  7. 花卷云解读淘宝客APP定制开发应该避免哪些坑
  8. 基于群智能的路径规划算法(五)------狼群算法
  9. 录像机输入几次错误密码后被锁定
  10. 报错error C3872: '0x3000': this character is not allowed in an identifier
  11. xp系统蓝屏代码7b_电脑开机蓝屏错误代码0x0000007B的详细解决过程
  12. Bee 事务注解 @Tran 使用实例
  13. 2020年最快的dns_2020年四川第份赏雪指南,最快当天就能打来回!
  14. JetBrain注册学生免费帐号方法
  15. 用pandas的isin,~+isin筛选数据
  16. 初学者必读VRay 2.0材质设置(1)——VRay材质设置基础
  17. 补码一位乘(布斯公式)
  18. 杭电 1287 破译密码
  19. 项目实战!Python分析广州房地产市场,房价还会再涨吗?
  20. 《IPv6技术精要》一1.3 IPv5

热门文章

  1. git提交代码的时候未获取最新代码
  2. android 图片虚化代码,Android模糊图片技术
  3. 【​观察】加速“云矩阵”生态落地,京东云能否成为新变量?
  4. 多项式时间 P问题NP问题
  5. 计算机共享文件输入网络密码是什么,Win7共享文件时需要输入网络密码怎么办?...
  6. 华三路由器RIP协议详细配置
  7. 有营养的算法笔记(七)
  8. 实现微信小程序开发的基本步骤
  9. 利用BeautifulSoup爬取豆瓣高分电影排行榜
  10. 连续型随机变量及概率密度