您好,欢迎来到硕远科技网站!

最新动态

当前位置:网站首页 > 最新动态 > 正文

无风扇工控机 基于嵌入式系统中看门狗的原理与使用

blog 2021-02-23 4 0

  最近需要在板子上加上一块WatchDog,以确保在系统出错时自动重启,所以看了一些在嵌入式系统中使用看门狗的资料,总结如下:

  在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。

  看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗”),不让复位信号产生。如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。

  这就好比你的身边有一只时刻饥饿的狗,你不按时给它肉吃,它就会吃你的肉,你被吃了......挂了,投胎转世,彻底重新做人了。不幸的是来世你还得喂狗.

  1、CPU内部自带的看门狗:此类看门狗一般是将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,设定溢出时间,并启动定时器。程序按时对定时器赋初值(或复位),以免被咬。这种看门狗是可以被禁用的(只要停止这个定时器即可),好比对那只要咬你的狗来个“葵花点穴手”。大部分CPU都内置看门狗,硬件原理可参考各芯片数据手册。

  缺点:需要初始化;如果程序在初始化、启动完成前跑飞或在禁用后跑飞,看门狗就无法复位系统,这样看门狗的作用就没有了,系统恢复能力降低。

  2、独立的看门狗芯片:这种看门狗主要有一个用于喂狗的引脚(一般与CPU的GPIO相连)和一个复位引脚(与系统的RESET引脚相连),如果没有在一定时间内改变喂狗脚的电平,复位引脚就会改变状态复位CPU。此类看门狗一上电就开始工作,无法禁用。现在常用的芯片有:CAT705/CAT706、IMP706等等,溢出时间在1.6秒左右。 硬件原理可以参考各芯片数据手册和《基于Linux的嵌入式系统全程喂狗策略》。

  一些重要的程序,必须让它一直跑着;而且还要时时关心它的状态不能让它出现死锁现象。(当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误。首要做的事是Debug。)但如果时间紧迫可以用软件看门狗,暂时应急。

  这种监控软件运行不出现界面窗口,具有一定的隐蔽性;它定时判断目标进程是否运行在当前系统中,如果没有则启动目标进程;判断目标进程是否“无响应”,如果是则终止目标进程;如果目标进程“无响应”的次数超过一定的数量,则重启整个系统。它的目的也是复位,但是它主要市复位进程,实在不行才复位CPU。

  在一般的民用产品,对系统的稳定性没有太高要求的场合,可以使用内置看门狗,可以简化软件开发和硬件成本。

  在工控产品和对系统的稳定性有较高要求的关键场合,基本都选用硬件独立看门狗,确保系统在面对严重错误时的恢复能力。增加了硬件成本,稍微加大了软件的开发难度(必须确保在正常情况下的不断喂狗)。

  但是如果是独立的看门狗芯片就必须喂了。或者为了保险,无风扇工控机,你在bootloader中就启动了看门狗,也得喂了。

  bootloader有很多,基本原理都是一样的,喂狗的过程也基本一样,在这里以uboot为例讲解如何喂狗。

  在bootloader加载了内核之后,系统就开始由Linux内核接管。而喂狗的工作自然也开始由内核来承担。在bootloader将控制权给内核之后,时间上可以分为以下几个部分:

  对于使用CPU内置的看门狗,在1~4阶段,看门狗一般都没有启动,无需喂狗。嵌入式工控机,只有在看门狗守护进程启动后,由守护进程打开看门狗,并根据配置文件监控其他进程的状态来开始喂狗。如果被监控进程出现不可修复的问题,守护进程停止喂狗,CPU复位。

  对于独立的看门狗芯片,系统一上电就必须不断喂狗,接过bootloader的接力棒继续喂狗。

  首先在第1阶段,内核的自解压一般时间较长,必须在自解压的循环过程中加入喂狗代码(可能还要是汇编形式的)。一旦在这过程中跑飞,就不会喂狗,CPU复位。

  在第2阶段,这段时间一般不会很长,可以不用喂狗。但是这也和你的内核有关,如果在这个阶段正好有比较耗时的模块启动的话,你可以在这个模块的初始化函数或者比较耗时的循环和等待中添加喂狗代码。具体在哪些模块中加,要尝试启动几次就知道了,靠实验和经验。

  在第3阶段,和第2阶段类似,如果在这个阶段正好有比较耗时的模块启动的话,你可以在这个模块的初始化函数或者比较耗时的循环和等待中添加喂狗代码。但是在根文集系统挂载时,根据文件系统的性质和大小,可能需要在文件系统代码中添加喂狗指令。

  第4阶段是一个比较耗时的阶段,一般会在系统启动脚本中添加一些简单的喂狗的shell命令,例如:“echo V>

相关推荐

  • 看门狗定时器特殊功能寄存器及实例软件设计 嵌入式工控机

    看门狗定时器特殊功能寄存器及实例软件设计 嵌入式工控机

      定时器控制寄存器WTCON如表1所示。WTCON可以使能看门狗定时器从4个不同的时钟源中选择时钟信号,使能或者禁止中断,使能或者禁止看门狗定时器复位信号输入。  看门狗定时器用于在供电后使用S3C44B0...

    2021-02-23 3 0

  • 无风扇工控机 看门狗定时器是什么?

    无风扇工控机 看门狗定时器是什么?

      程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将  使能时,WDT将递增,直到溢出,或称“超时”。除非处于休眠或空闲模式,WDT超时会强制器...

    2021-02-23 3 0

  • 系统时钟和定时器——看门狗定时器 嵌入式工控机

    系统时钟和定时器——看门狗定时器 嵌入式工控机

      用于设置预分频系数、选择工作频率、决定是否使能中断、是否启用WATDOG功能(即是否输出复位信号)。  WTDAT寄存器用来决定WATCHDOG定时器的超时周期,定时器启动后,计数(WTCNT)到达零的时...

    2021-02-23 3 0

  • 无风扇工控机 高压看门狗定时器如何提高车载系统安全性

    无风扇工控机 高压看门狗定时器如何提高车载系统安全性

      汽车设计中,越来越多的电子系统正在逐步替代机械功能从引擎定时控制到刹车、方向盘控制,而电子系统相对容易发生故障,这就需要谨慎考虑系统的,确保系统具备较高的故障容限。不应该在发生单点故障时将司机或乘客至于危险处境,至少能够使汽...

    2021-02-23 3 0

  • 看门狗定时器的设计、工作原理及看门狗定时器的操作 嵌入式工控机

    看门狗定时器的设计、工作原理及看门狗定时器的操作 嵌入式工控机

      开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。  为了给初学者一个系统的概念,先介绍一下看门狗的基本概念。...

    2021-02-23 4 0

  • 无风扇工控机 简单锁定看门狗定时器方法介绍

    无风扇工控机 简单锁定看门狗定时器方法介绍

      狗集成电路(MAX6749)的基础上,该电路提供了响应的输入脉冲流损失锁存故障指示。该电路可以监控风扇(上风扇的转速输出计算),振荡电路,或一个微处理器软件执行。  大多数看门定时器IC产生一个单一的,有...

    2021-02-23 3 0

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论: