嵌入式C语言--WatchDog最全概念

嵌入式C语言–WatchDog最全概念

一. 什么是Watchdog

Watchdog,又称watchdog timer,它是计算机可靠性(dependability)领域中一个极为简单同时非常有效的检测(detection)工具。
WatchDog硬件的逻辑就是,其硬件上有个记录超时功能,然后要求用户需要每隔一段时间(此时间可以根据自己需求而配置)去对其进行一定操作,比如往里面写一些固定的值,俗称“喂狗”,发现超时了,即过了这么长时间还不给狗喂食,那么偶就认为你系统是死机了,出问题了,狗狗就帮你重启系统。说白了就是弄个看家狗Dog,你要定期给它喂食,如果超时不喂食,那么狗就认为你,他的主人,你的系统,死机了,就帮你reset重启系统。
Softwere Watchdog Timeout,顾名思义就是软件超时监控狗。

1)什么是“被狗咬”

当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对CPU产生一个复位信号使系统重启。
简单理解就是当不喂狗时,狗就要来咬你了,这个时候就系统重启了。

2)什么是喂狗

系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零,从而不让复位信号产生。
如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。
这就好比你的身边有一只时刻饥饿的狗,你不按时给它肉吃,它就会吃你的肉,被狗咬…然后挂了,投胎转世,彻底重新做人。

二. 基本思想

WatchDog的基本思想是针对被监视的目标设置一个计数器和一个阈值,WatchDog会自己增加计数值,并等待被监视的目标周期性地重置计数值。一旦目标发生错误,没来得及重置计数值,watchdog会检测到计数值溢出,并采取恢复措施(通常情况下是重启)。
总结一下就是计数——溢出——触发。
一个正常运行的系统,它的执行流应该是可预测的,因此可以在它正常执行路径上设置一些周期性重置watchdog的点;但如果系统发生故障,它可能执行不到下一个重置watchdog的点,此时故障将被watchdog捕捉到。看到这儿,您应该知道watchdog对于检测死循环或死锁这类故障非常有效。

三. 作用

watchdog 一般是一个硬件模块(也可以软件实现),其作用是在嵌入式操作系统中,很多应用情况是系统长期运行且无人看守,所以难免或者怕万一出现系统死机,那就狗屁了,这时,watchdog就会自动帮你重启系统来完成初始化。
它的工作方式是事件触发的,它可以对任何合理的事件计数(如CPU指令)。其中时间事件(timeout)最常使用,这也是为什么watchdog又叫做watchdog timer。Watchdog系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程序进入死循环等)不能恢复的时候,WatchDog能够让系统重启。WatchDog的应用主要是在嵌入式操作系统中,避免了系统在无人干预时长时间挂起的情况。
总结:保证系统在出现不可恢复错误时,能够自动让系统重启。

四. 监视目标

Watchdog是一种检测手段,它监视的目标可以是一个进程也可以是整个操作系统。

1) 监视一个进程

如果监视目标只是一个进程,那么利用操作系统提供的定时功能即可实现一个Watchdog。

2)监视一个操作系统

如果要监视操作系统,就得使用操作系统之外的工具,通常是一个附加的计数器。现代Intel CPU都包含的performance counter也可以提供这样的功能,从而不需要额外的设备就能实现监视操作系统的watchdog。

五. 系统初始化时关闭watchdog的原因

如果不禁用watchdog,那么就要单独写程序去定期“喂狗”。bootloader的作用是初始化必要的硬件资源和系统资源,保证产品软件能够正常启动。bootloader不必长期留在内存中,所以用不到这个watchdog的机制。

六. WATCHDOG模块

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

  1. 提供WATCHDOG控制寄存器和配置寄存器,供软件开发人员根据系统需要进行灵活配置。
  2. 提供一接口,使应用软件能够定时给WATCHDOG“喂狗”。
  3. 提供WATCHDOG机制,当系统进入不可恢复错误时,能产生一个不可屏蔽中断来通知系统自动重启(一般这样,也有改变为其他处理方式的),只有相应的复位信号才能清除它。

七. WatchDog总结

  1. 看门狗 (Watch Dog)在嵌入式系统中很常见,常用于保证系统的可靠性。看门狗有软件与硬件两种,有的MCU,本身有看门狗定时器,可以借助【外部独立的看门狗芯片】,实现程序【监控】功能。
  2. 看门狗是一个独立的【定时器模块】,有独立的定时器控制器,程序可以设置定时器的超时时间,时间到了,会进入看门狗定时器中断,并触发系统【复位】
  3. 当系统异常,如程序跑飞后,由于无法确保按时【喂狗】,也就是不能及时的【重置看门狗定时器】,造成看门狗超时,触发系统【复位】而重新运行程序
  4. 使用看门狗完成重启能够解决大部分的嵌入式系统的问题。因为出现错误重启系统,能够解决大部分的问题。
  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值