【转】嵌入式系统中看门狗概述。。。
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失效机理与对策研究
以上就是原文,对我理解看门狗有一定的帮助,也希望能够帮助大家。
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失效机理与对策研究
以上就是原文,对我理解看门狗有一定的帮助,也希望能够帮助大家。
相关文章推荐
- 嵌入式系统之WATCHDOG(看门狗)概述
- 嵌入式系统中看门狗概述。。。
- 嵌入式系统概述(学习笔记)
- 嵌入式系统学习笔记:嵌入式系统概述
- 连载-第2章 嵌入式系统工程设计概述
- 第一章-嵌入式系统概述
- 嵌入式系统概述
- 第一章 嵌入式系统概述
- 嵌入式系统中看门狗的使用总结
- 嵌入式系统概述
- 嵌入式系统中看门狗的使用总结
- 笔记:构建嵌入式Linux系统(第二版)—— 第一章 概述
- 嵌入式系统概述
- 嵌入式linux系统开发概述之六----图形用户界面(GUI)
- 嵌入式系统中看门狗的使用总结
- [zz]深入学习的热潮:嵌入式系统方向概述
- 嵌入式系统中看门狗的使用
- 2017070506嵌入式开发系统概述和开发工具的使用
- 嵌入式操作系统概述(3.2)------嵌入式系统软件及操作系统知识
- 嵌入式系统中看门狗的使用总结