您的位置:首页 > 其它

【转】嵌入式系统中看门狗概述。。。

2010-08-25 15:40 357 查看
一直以来对于嵌入式中的watch dog(看门狗)都比较陌生,一直都不知道它到底是做什么的,单从名字上看也不知其所以然,然后就在网上找到了一篇blog,就是再说看门狗的作用和概述,原文如下:

1、概述:

WATCHDOG对于没有底层开发经验的开发人员来说,可能比较陌生,但是它在系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程
序进入死循环等)不能 恢复的时候,WATCHDOG能够让系统重启。WATCHDOG的应用主要是在嵌入式操作系统中,避免了系统在无人干预时长时间挂
起的情况。

2、WATCHDOG模块

在比较高档的嵌入式硬件芯片中,都有一个WATCHDOG模块,如果在MCU/MPU中没有集成WATCHDOG,一般会在此嵌入式系统中加一个专门的WATCHDOG芯片来实现WATCHDOG机制。此模块主要的功能包括:

1、提供WATCHDOG控制寄存器和配置寄存器,供软件开发人员根据系统需要进行灵活配置。

2、提供一接口,使应用软件能够定时给WATCHDOG“喂狗”。

3、提供WATCHDOG机制,当系统进入不可恢复错误时,能产生一个不可屏蔽中断来通知系统自动重启(一般这样,也有改变为其他处理方式的),只有相应的复位信号才能清除它。

3、WATCHDOG的实现方式:

对于WATCHDOG模块的实现,不同的硬件芯片有不同的方式,这里介绍2中工作方式:

1、利用系统操作系统时钟来实现WATCHDOG

在Intel
XScale系列中,利用了操作系统时钟的比较寄存器3(OSMR3)做为WATCHDOG的运行主体,当系统的WATCHDOG激活后,软件就必须在一
定时间内从OSMR3读出当前的计数,然后加上一定的计数值(下一次到期的计数值),再写回到OSMR3中,软件一直周期性的重复这个过程,如果软件没有
重新写入新的计数使定时器到期,此OSMR3会利用一个GPIO触发系统复位。

2、芯片的专门WATCHDOG模块

对于现在的很多芯片,已经集成了专门的WATCHDOG模块,比如ARM11的芯片,WATCHDOG模块中,提供了比较灵活的配置和控制机制:

A、宽范围设置过期时间间隔,从0。5秒到128秒可以用户配置

B、可以灵活配置在低功耗下,使用或者停止WATCHDOG功能

C、可以灵活配置在DEBUG等状态下,使用或者停止WATCHDOG功能

根据不同的系统,设置好相应的寄存器,激活WATCHDOG后,需要应用程序周期性的服务WATCHDOG,即我们所说的“喂狗”,对于
WATCHDOG模块,需要定时向Watchdog Service Register按顺序写入0x5555,0xaaaa.一般
在WATCHDOG模块中还会提供Watchdog Reset Status Register,从中可以找到复位的具体原因。

3、单片机的WATCHDOG实现

许多单片机片内自带看门狗电路,单片机复位时将片内自带看门狗电路禁止,只有当程序访问该电路时,电路启动。如51系列单片机对SFR中的0A6H
地址顺序写入#01EH、#0E1H;而96系列单片机则对SFR中的0A6H地址顺序写入#1EH、#0E1H;工控主机板上看门狗电路本身并不要求复
位后重新启动,但BIOS在复位后将板上看门狗禁止,启动和喂狗方法与单片机相同。如研祥的FSC-1713主板,在WatchDog编程状态,只要执行
如下两条指令:

outportb(0x2e,0xf6);

outportb(0x2f,TIME-OUT-VALUE);

可实现WatchDog的启停,其中TIME-OUT-VALUE ≠0启动;TIME-OUT-VALUE =0停止[2]
。能够用指令禁止看门狗是为了适应用户程序开发阶段的需要,这同时给看门狗启动和运行失败留下了后门,在看门狗启动时或启动前遇干扰而使程序跑飞,则看门狗启动失败,无法行使监控职能。

4、结论

WATCHDOG在嵌入式系统中发挥着非常重要的作用,其实现方式也千差万别,根据不同的硬件设计,可以选用不同的WATCHDOG,但它们的作用是一样的:保证系统在出现不可恢复错误时,能够自动让系统重启。

参考资料:

1.Intel XScale Pocessor Developer's Manual

2.Arm11 芯片用户手册

3.WatchDog失效机理与对策研究

以上就是原文,对我理解看门狗有一定的帮助,也希望能够帮助大家。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: