- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
S3C2410看门狗
s3c2410 watchdog (编辑完毕)
作者:蔡于清
1.什么是watchdog?
watchdog, 中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然
而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时(Timer Out)
则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows 的Timer ,
windows Timer 的作用与方才所讨论的定时器在功能上是相同的,只是windows Timer属于软件定时器,当
windows Timer记时超时则引起App 向System发送一条消息从而触发某个事件的发生。我们从以上的描述可
知不论软件定时器或硬件定时器他们的作用都是在某个时间点上引起一个事件的发生,对于硬件定时器来
说这个事件可能是通过中断的形式得以表现,对于软件定时器,这个事件则可以是以系统消息的形式得以
表现。正如本文开头所讲的,watchdog本质上是一种定时器,那么普通定时器所拥有的特征它也应该具备,
是的,当它记时超时时也会引起事件的发生,只是这个事件除了可以是系统中断外,它也可以是一个系统
重起信号(Reset Signal),可以这么说吧,能发送系统重起信号的定时器我们就叫它watchdog.
2.watchdog 的工作描述
当一个硬件系统开启了watchdog 功能,那么运行在这个硬件系统之上的软件必须在规定的时间间隔内向
watchdog发送一个信号.这个行为简称为喂狗(feed dog),以免watchdog记时超时引发系统重起。
3.watchdog存在的意义是什么?
你可能会问watchdog存在的意义是什么?开启了watchdog之后软件必须定时向它发信息,这不是麻烦又耗
费资源的行为吗?其实这个行为很重要,这个行为是软件向硬件报告自身运行状态的一中手法。一个软件
运行良好,那么它应该可以在规定的时间间隔内向watchdog发送信息,这等同于软件每隔一段时间就告诉
硬件:“ 嘿,哥们,我在好好的跑着呢,你放心吧。”,若软件由于某个不当的操作而进入死循环(也就是俗
称的死机),则他无法向watchdog发送信息了,watchdog将发生记时超时,从而引起硬件重起。如果没有
watchdog 的存在,程序已经死掉了,但我们的用户还一头雾水,以为系统正在进行大规模的运算而进行耐
心的等待。。。这一等可就是天荒地老啊。。。-_-!!
4 .s3c2410 watchdog的操作
对于s3c2410 的watchdog来说,PCLK是它唯一的时钟信号源。(不知道PCLK的朋友可以上网搜搜或看我下
一篇文章)
s3c2410 用了 3 个寄存器对watchdog进行操作,3 个寄存器分别为:WTCON,WTDAT,WTCNT 。
WTCON :watchdog控制寄存器
WTDAT :watchdog数据寄存器
WTCNT :watchdog记数寄存器
以上各个寄存器的详细信息请参考s3c2410 数据手册上关于watchdog部分
5.s3c2410 watchdog 工作描述:
在开启watchdog之前,我们必需在寄存器WTDAT里面存有一个值,在watchdog开启之后这个值会被自动
加载进寄存器WTCNT 中,WTCNT 的作用将在下面进行讲解,现在你只需要知道WTDAT必须有一个值,这
个值将被自动装进WTCNT 中(注 1)
Watchdog根据PCLK,Prescaler Value,Clock Select会产生一个watchdog 自己的工作周期,我们把这个工
作周期记为t_watchdog (注2),watchdog在一个t_watchdog周期结束时会产生一个记数递减信号,每当
这个信号产生时,WTCNT 中的值便减 1,若在WTCNT递减为 0(Timer Out)的时候软件层还没有重新往
WTCNT 中写入数值(这个行为便是我上文提到的喂狗),则watchdog触发Reset Signal,系统重起。
根据上述的描述,我们可以更形象地描述watchdog 的工作原理和 3 个寄存器之间的相互关系:
WTCNT通过WTDAT得到一个值,watchdog在每个t_watchdog周期里向WTCNT发送一个递减信号,当
WTCNT 的值递减到 0 的时候则发生time out,重而重起系统。
下面我帖出一段设置watchdog并开启watchdog 的程序
1:void enable_watchdog()
2:{
3:
文档评论(0)