S3C2440看门狗解析
S3C2440A的看门狗定时器是用于当其由于噪声和系统错误引起的故障干扰时恢复控制器的工作。它可以被用作普通16位内部定时器来请求中断服务。看门狗定时器产生128个PCLK周期的复位信号
也就是说,在某些环境下,看门狗可以当做定时器使用,当他中断的时候并不发生复位,只发生中断,我看看图
看门狗的中断和复位信号是可以依靠wtcon来切断的(看门狗的时钟是无法切断的)
使用看门狗主要靠这几个寄存器
用来选择时钟源,分频系数,启动看门狗以及看门狗中断和复位的连接
流程基本上就是,第一次对wtcnt赋值之后启动看门狗,看门狗自动减,到达0的时候触发中断,如果连接了复位则触发复位
未连接则触发中断,另外,
看门狗定时器数据寄存器(WTDAT)的值不能被自动重载到定时计数器(WTCNT)中。由于这个理由,必须在看门狗定时器启动前写入一个初始值到看门狗定时器计数寄存器(WTCNT)中
请看具体代码,两种看门狗的使用都有
#include "watchdog.h" u8 wwdgUp = 0; void __irq Wdt_Int(void)
{
rSRCPND |=BIT_WDT_AC97;
rINTPND |=BIT_WDT_AC97;
rSUBSRCPND |= BIT_SUB_WDT; //清除中断标志 // WatchdogInit(0);
wwdgUp = 1;
} //看门狗不连接系统复位
//prescaler 分频系数 8位
//mux 始终选择 0 16 1 32 2 64 3 128
//countValue 计数值
void WWDGInitForTimer(u8 prescaler,u8 mux,u16 countValue)
{ rWTCON &= ~(1<<5);//看门狗禁止 rWTCON &= 0xff00;//清除预分频系数
rWTCON |= prescaler<<8;//设置预分频系数 rWTCON &= ~(0x03<<3);
rWTCON |= mux<<3;//设置时钟选择器 rWTCON |= 1<<2;//使能中断]
rWTCON &= ~(1<<0);//禁止复位
rWTDAT = countValue;
rWTCNT = countValue;//初次使用,必须设置CNT的值 rSRCPND |=BIT_WDT_AC97; //清除标志
rINTPND |=BIT_WDT_AC97;
rSUBSRCPND |= BIT_SUB_WDT; //清除子中断标志 rINTMOD &= ~BIT_WDT_AC97;//设置中断模式为IRQ模式
rINTMSK &= ~(BIT_WDT_AC97); //开中断
rINTSUBMSK &= ~(BIT_SUB_WDT);//开子中断 pISR_WDT_AC97=(unsigned)Wdt_Int;//设置中断程序入口 rWTCON |= (1<<5);//看门狗启动 } //看门狗连接系统复位
//prescaler 分频系数 8位
//mux 始终选择 0 16 1 32 2 64 3 128
//countValue 计数值
void WWDGInitForReset(u8 prescaler,u8 mux,u16 countValue)
{ rWTCON &= ~(1<<5);//看门狗禁止 rWTCON &= 0xff00;//清除预分频系数
rWTCON |= prescaler<<8;//设置预分频系数 rWTCON &= ~(0x03<<3);
rWTCON |= mux<<3;//设置时钟选择器 rWTCON &= ~(1<<2);//禁止中断]
rWTCON |= (1<<0);//使能复位
rWTDAT = countValue;
rWTCNT = countValue;//初次使用,必须设置CNT的值 rWTCON |= (1<<5);//看门狗启动 } void Watchfeed(u16 count) //看门狗喂狗
{
rWTCNT=count; //喂狗
}
#ifndef __WATCHDOG_H
#define __WATCHDOG_H
#include "2440addr.h"
#include "def.h" void WWDGInitForTimer(u8 prescaler,u8 mux,u16 countValue); void WWDGInitForReset(u8 prescaler,u8 mux,u16 countValue); void Watchfeed(u16 count); //看门狗喂狗 extern u8 wwdgUp; #endif
S3C2440看门狗解析的更多相关文章
- 基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读
本文将介绍看门狗驱动的实现. 目标平台:TQ2440 CPU:s3c2440 内核版本:2.6.30 1. 看门狗概述 看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗“,如 ...
- 基于mini2440的看门狗(裸机)
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...
- S3C3440看门狗驱动程序
S3C3440看门狗驱动程序 http://www.cnblogs.com/lfsblack/archive/2012/09/13/2684079.html 看门狗是当CPU进入错误状态后,无法恢复的 ...
- 嵌入式 uboot以及kernel添加看门狗临时记录(个人记录未整理乱)
Uboot_Kernerl_Add_Watch_Dog: U-Boot 2010.06 (Nov 01 2013 - 15:28:44) DRAM: 128 MiBCheck spi flash c ...
- linux设备驱动归纳总结(十一):写个简单的看门狗驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-112879.html linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxx ...
- nano100B的看门狗讲解
看门狗定时器的用途是在软件出问题时执行系统复位功能,这可以防止系统无限期地挂起.除此之外,看门狗定时器还支持将CPU 从掉电模式唤醒的功能.看门狗定时器包含一个18 位的自由运行计数器,定时溢出间隔可 ...
- mini2440裸机试炼之——看门狗中断和复位操作
看门狗的工作原理: 设本系统程序完整执行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序正常执行时,定时器就不会溢出,若因为干扰等原因使系统不能在Tp时刻改动定时器的记数值,定时器 ...
- u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗
u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文 ...
- 【Linux开发】linux设备驱动归纳总结(十一):写个简单的看门狗驱动
linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
随机推荐
- java 线程安全
要认识java线程安全,必须了解两个主要的点:java的内存模型,java的线程同步机制.特别是内存模型,java的线程同步机制很大程度上都是基于内存模型而设定的. 浅谈java内存模型: 不同的平台 ...
- 转:Selenium中的几种等待方式,需特别注意implicitlyWait的用法
最近在项目过程中使用selenium 判断元素是否存在的时候 遇到一个很坑爹的问题, 用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法. ...
- Android平台设计规范整理(尺寸+组成元素+字体+滑块)
转自:http://www.ui.cn/project.php?id=12394
- Intent之间无法传递大数据的替代方法
/** * TODO: Activity之间传递list,对象等工具类 * * @author * @date 2014-9-12 下午5:35:38 * @version 0.1.0 */ publ ...
- Redis 从数据库配置
通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据.但是由于数据是存储在一台服务器上的,如果这台服务器的硬盘出现故障,也会导致数据丢失.为了避免单点故障,我们希望将数 ...
- zepto为什么不支持animate,报animate is not a function
在zepto.min.js文件中搜索animate看有没有,如果没有就是没有加入animate的模块 解决办法,去github中打开src/文件夹,找到fx.js文件,把内容追加到zepto.min. ...
- mybatis与spring整合(基于配置文件)
本文主要介绍了如何将mybatis和spring整合在一起使用,本人使用的是mybatis3.05 + spring3.1.0M2 ,使用dbcp作为数据库连接池. 1.编写数据访问接口(UserDa ...
- push控制器 卡顿
代码: RecommendController *rec = [[RecommendController alloc]init]; [self.navigationController pushVie ...
- 如何做好移动安全(梆梆加固后的APK破解提取dex)
智能手机的普及将移动互联网的发展推到了一个让所有人都为之兴奋的高度,我想即使是以商业眼光见长的“苹果教父”乔布斯也不会料想到短短几年时间,智能手 机就已经成为了所有人离不开的商业产品,各种商业应用层出 ...
- shell与if相关参数
[ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...