当前位置: 首页 > news >正文

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

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

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

  • 嵌入式C语言--WatchDog最全概念
    • 一. 什么是Watchdog
      • 1)什么是“被狗咬”
      • 2)什么是喂狗
    • 二. 基本思想
    • 三. 作用
    • 四. 监视目标
      • 1) 监视一个进程
      • 2)监视一个操作系统
    • 五. 系统初始化时关闭watchdog的原因
    • 六. WATCHDOG模块
    • 七. 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. 使用看门狗完成重启能够解决大部分的嵌入式系统的问题。因为出现错误重启系统,能够解决大部分的问题。
http://www.lryc.cn/news/273086.html

相关文章:

  • 数据结构【树篇】(二)
  • 2024上海城博会|上海国际城市与建筑博览会-官 网
  • Dockerfile - 基于 SpringBoot 项目自定义镜像(项目上线全过程)
  • 论文查重降重写成大白话可以吗
  • 【WPF.NET开发】WPF中的命令
  • 怎么将epub转换成txt文件?
  • Java单词排序
  • Moonsong Labs与Web3演变
  • 流媒体学习之路(WebRTC)——GCC分析(4)
  • k8s持久化存储(NFS-StorageClass)
  • java servlet软件缺陷库管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 19|BabyAGI:根据气候变化自动制定鲜花存储策略
  • 面试经典150题(62-64)
  • 流量困境下,2024年餐饮商家的直播带货生意到底怎么做?
  • C++ 具名要求-基本概念-指定该类型对象可以默认构造
  • T527 Android13遥控适配
  • 第三部分使用脚手架:vue学习(61-65)
  • 【Linux学习笔记】解析Linux系统内核:架构、功能、工作原理和发展趋势
  • springboot连接oracle报错ORA-12505解决方案
  • 服务器为什么大多用 Linux?
  • C++上位软件通过Snap7开源库访问西门子S7-200/合信M226ES数据块的方法
  • 通信及信号处理领域期刊影响因子、分区及期刊推荐-2024版
  • cfa一级考生复习经验分享系列(十五)
  • 如潮好评!优秀选手视角下的第二届粤港澳大湾区(黄埔)国际算法算例大赛
  • 软件测试之冒烟测试
  • NE555学习笔记-2024
  • 记一次docker中安装redis的过程
  • Matlab进阶绘图第37期—多色悬浮柱状图
  • 【嵌入式】About USB Powering
  • MySQL——事物