0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬件和软件看门狗的异同

硬件设计解析 来源:爱搞研究的阿灿 作者:爱搞研究的阿灿 2023-04-03 18:13 次阅读

说到提高系统的可靠性,刚入门的工程师都知道,增加一个看门狗是重要的手段。看门狗又分软件看门狗和硬件看门狗,但是很多人可能没有深入了解其中的区别,工作中可能都遇到这样的PK:

87b0b934-d1ff-11ed-a826-dac502259ad0.png


  软件和硬件看门狗有什么区别?学完这篇文章就可以迎刃而解了。

1、硬件看门狗的原理

硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。
我们以ADI公司ADM6316看门狗芯片为例。

87d81a6a-d1ff-11ed-a826-dac502259ad0.png


  该看门狗芯片的主要功能有:
  1.可以监控主电源VCC,26种复位阈值选项:2.5 V至5 V,以100 mV递增;
  2.4种复位延迟选项:1 ms、20 ms、140 ms、1120 ms(最小值);
  3.4种看门狗喂狗超时选项:6.3 ms、102 ms、1600 ms、25.6 s(典型值);
  4.支持手动复位输入;
  5.复位输出级:推挽低电平有效,开漏低电平有效,推挽高电平有效。
  复位功能说明:
  该芯片内置复位功能。设备上电时,芯片的VCC电压一旦到达开启阈值电压VTH,延迟定时器启动,经过延迟时间tRP,复位信号RESET或者/RESET即可输出,实现设备的延迟上电复位;芯片同时会监测VCC的电压,一旦VCC跌落到VTH以下,经过延迟时间tRD后,复位信号输出电平翻转,实现设备的复位。

87f6f67e-d1ff-11ed-a826-dac502259ad0.png


  看门狗功能说明:
  该芯片内置看门狗功能,设备上电时,芯片的VCC电压一旦到达开启阈值电压VTH,延迟定时器启动,经过延迟时间tRP,复位信号RESET或者/RESET即可输出,实现设备的延迟上电复位;当喂狗信号WDI收到第一个脉冲电平时,就触发芯片内部的定时器,软件必须在tWD时间内输出喂狗信号WDI,否则复位信号RESET或者/RESET将会在定时时间tWD到达时,进行复位,设备重新复位。

88ca1522-d1ff-11ed-a826-dac502259ad0.png

2、软件看门狗的原理

软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,一般是将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,并启动定时器。程序按时对定时器赋初值(或复位),以免它饿了。
  这种看门狗是可以被禁用的(只要停止这个定时器即可),好比对那只要咬你的狗来个“葵花点穴手”,大部分CPU都内置看门狗,硬件原理可参考各芯片数据手册。
  优点:可以通过程序改变初始时间,也可以随时禁用。
  缺点:需要初始化,如果程序在初始化、启动完成前跑飞或在禁用后跑飞,看门狗就无法复位系统,这样看门狗的作用就没有了,系统恢复能力降低。

88ea2af6-d1ff-11ed-a826-dac502259ad0.png

3、软硬件看门狗的主要异同

学习了上述的软硬件看门狗,我们总结一下两者的异同。
  两者相同点如下:
  1) 都是通过定时器实现;定时时间到没有喂狗就进行复位。
  2) 都是需要在规定的时间内喂狗。
  3) 两者都是靠软件进行喂狗。
  两者主要差异如下:
  1) 附加功能:硬件看门狗芯片一般还附带了延迟复位和电源检 测的功能,软件则没有。
  2) 屏蔽方法:软件看门狗很容易屏蔽关闭,只需修改其中的寄存器,而硬件看门狗一旦启动不断电就停不下来。
  3) 启动方式:软件看门狗很容易启动,只需修改其中的寄存器。硬件一般是收到第一个喂狗信号后就启动。
  4) 初始化:硬件看门狗上电后收到第一个喂狗脉冲就完成了初始化,软件看门狗则需要配置相关的寄存器(或者调用相关的看门狗子程序)。

4、一个软件看门狗搞不定的案例

项目组研发一款户外远程采集器,应用场景包括偏僻的郊外,对可靠性要求很高,出现故障后或者远程升级后能够自动复位重启。为了节省成本,该产品采用主芯片内置的看门狗功能。主芯片其他资源初始化完成后,再初始化看门狗功能。产品批量后,远程升级过程中,大概有5%的概率设备升级后变砖,需要人工断电后再上电才能恢复正常。
  经过研发人员分析,软件的看门狗的流程如下图,一小部分设备,在升级程序过程,出现了死机的问题,程序还没有运行到初始化看门狗的阶段,看门狗无法生效,导致设备处于一直死机的状态,人工断电重启后恢复正常。

891351ce-d1ff-11ed-a826-dac502259ad0.png


  经过改良升级,研发人员使用了硬件看门狗,上电瞬间就依赖上拉电阻形成的高脉冲开启看门狗,看门狗的延迟最迟喂狗时间为1.8S,评估升级+初始化时间最迟为1.2S,所以该看门狗芯片满足要求,一旦1.8S内应用程序还无法喂狗,则复位重启,问题得以解决。

893caea2-d1ff-11ed-a826-dac502259ad0.png

5、总结

软件和硬件的看门狗的最主要差异在于开启看门狗的时机,软件看门狗必须初始化(配置)看门狗才能使用,如果软件看门狗是厂商提供的SDK中的一个API接口开发者又没有能力修改底层的uboot、内核,无法在uboot、内核阶段开启和喂狗,开启看门狗的时机就很晚了,程序就有可能还没有跑到看门狗初始化就挂了,中间的各种幺蛾子都不受控,就像上述的案例。
  而硬件看门狗开启则不受软件的约束,设备上电就可以依赖上拉电阻提供的高脉冲开启看门狗,只要软件不及时喂狗,就复位,这个是无条件的。所谓一分钱一分货,在电子产品也是适用的。
  当然,如果你能说服驱动工程师,能够在主芯片上电第一时间,就初始化和开启软件看门狗,理论上,软件看门狗也可以做的和硬件看门狗一样可靠。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    558

    浏览量

    70697
收藏 人收藏

    评论

    相关推荐

    STM32中的独立看门狗和窗口看门狗是什么

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立看门狗
    的头像 发表于 02-20 17:47 2624次阅读
    STM32中的独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>是什么

    嵌入式系统的硬件软件看门狗怎么选择

    本文从原理、异同、举例来说明硬件软件看门狗怎么选择:一、硬件看门狗的原理
    发表于 12-21 08:04

    什么是看门狗电路

    看门狗电路 看门狗电路一般有软件看门狗硬件看门狗两种。
    发表于 10-21 01:40 8110次阅读

    stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么

    本文为您讲解STM看门狗时间计算(时限)与频率计算,独立看门狗和窗口看门狗的特性、区别与联系。
    发表于 10-10 10:41 8719次阅读

    什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析

    stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗
    的头像 发表于 11-06 11:48 2.7w次阅读
    什么是stm32<b class='flag-5'>看门狗</b>?独立<b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>工作原理解析

    STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)

    stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定
    发表于 11-09 17:17 8383次阅读
    STM32<b class='flag-5'>看门狗</b>配置(独立<b class='flag-5'>看门狗</b>IWDG和窗口<b class='flag-5'>看门狗</b>WWDG)

    软件看门狗硬件看门狗的作用和区别

    ,主程序又来监视T0,从而保证系统的稳定运行。软件硬件看门狗的主要异同两者相同点如下:1) 都是通过定时器实现;定时时间到没有喂狗就进行复位。2) 都是需要在规定的时间内喂狗。3)
    的头像 发表于 10-15 17:29 3.9w次阅读

    基于STM32、FreeRTOS 实现硬件看门狗+软件看门狗监测多任务的方法

    基于STM32、FreeRTOS实现硬件看门狗+软件看门狗监测多任务的方法
    的头像 发表于 03-12 10:11 9242次阅读

    嵌入式开发中的软、硬件看门狗

    本文从原理、异同、举例来说明硬件软件 看门狗 怎么选择: 一、 硬件看门狗的原理
    的头像 发表于 10-12 11:13 2739次阅读

    如何实现模拟看门狗

    作者:逸珺 转自:STM32 对于看门狗大家或许不陌生,但对于模拟看门狗有的朋友可能就不甚了解了。本文来聊聊模拟看门狗,旨在梳理相应的概念,理解模拟看门狗原理、与常规
    的头像 发表于 10-23 14:51 5247次阅读
    如何实现模拟<b class='flag-5'>看门狗</b>?

    单片机硬件看门狗使用经验分享

    1.既然选择使用硬件看门狗,就是想尽可能在只要得电情况下,看门狗就起作用,因此不应该通过软件的方式去使能和禁止开门,默认只要得电
    发表于 12-01 15:51 13次下载
    单片机<b class='flag-5'>硬件</b><b class='flag-5'>看门狗</b>使用经验分享

    STM32中的独立看门狗和窗口看门狗

    一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗发展到今天基本上分为两大类:独立
    的头像 发表于 12-22 16:58 2022次阅读

    什么是看门狗,工业路由器看门狗技术的功能优势

    一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端。看门狗技术的核心硬件看门狗模块,分为硬件看门狗
    的头像 发表于 03-27 10:16 1735次阅读
    什么是<b class='flag-5'>看门狗</b>,工业路由器<b class='flag-5'>看门狗</b>技术的功能优势

    MCU硬件看门狗+软件看门狗监测多任务的思路

    MCU硬件看门狗+软件看门狗监测多任务的思路
    的头像 发表于 10-24 15:25 1758次阅读
    MCU<b class='flag-5'>硬件</b><b class='flag-5'>看门狗</b>+<b class='flag-5'>软件</b><b class='flag-5'>看门狗</b>监测多任务的思路

    软件看门狗硬件看门狗的区别

    软件看门狗硬件看门狗都是用于监控系统崩溃的工具,它们的作用是在系统出现故障或异常情况时自动恢复系统。  软件
    的头像 发表于 04-16 15:10 876次阅读