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

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

3天内不再提示

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

嵌入式星球 2020-10-12 11:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文从原理、异同、举例来说明硬件软件看门狗怎么选择:

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

图1 :看门狗芯片功能框图

该看门狗芯片的主要功能有:
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以下,经过延迟时间Rrd后,复位信号输出电平翻转,实现设备的复位。

图2 :复位功能时序图

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

图3:看门狗功能时序图

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

图4:软件看门狗功能示意图

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

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

图5:软件看门狗流程图

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

图6:硬件看门狗流程图

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    “喂狗”的艺术:看门狗不叫,才是系统好

    看门狗选哪只好呢? 中间那只看起来不错。 咳咳搞错了,自动化项目中说的看门狗是PLC的看门狗,那这个有什么用呢?难道真的是看大门的
    的头像 发表于 11-25 10:50 77次阅读
    “喂狗”的艺术:<b class='flag-5'>看门狗</b>不叫,才是系统好

    看门狗定时器、复位源、异常处理机制科普

    嵌入式开发,系统一旦“跑飞”,工程师最怕的不是bug,而是程序卡死无人知。这时,芯片自身的自我保护机制就至关重要。看门狗、复位源和异常处理机制,是保证系统可靠性的三大基石。本文带你梳理清楚它们
    的头像 发表于 11-17 10:53 704次阅读
    <b class='flag-5'>看门狗</b>定时器、复位源、异常处理机制科普

    小安派BW21-CBV-Kit入门教程之看门狗简介

    这是一个简单的看门狗定时器(WDT)示例,演示了看门狗 API 的用法。 有关看门狗的定义和工作原理,请参阅以下信息。
    的头像 发表于 11-13 17:22 4958次阅读
    小安派BW21-CBV-Kit入门教程之<b class='flag-5'>看门狗</b>简介

    嵌入式开发的关键点介绍

    嵌入式开发在现代科技扮演着非常重要的角色。随着物联网的发展,嵌入式系统的需求也越来越大。嵌入式开发不仅需要开发人员具备深入的
    发表于 11-13 08:12

    T113-I打造高可靠性嵌入式系统,1.12秒极限下的看门狗喂狗之法

    前言:在嵌入式系统使用看门狗(Watchdog)是保障系统稳定性的重要机制之一,守护着系统的稳定运行。常规实现是通过应用层参与喂狗操作,存在不稳定因素,也无法处理系统启动过程的异
    的头像 发表于 08-22 08:30 1265次阅读
    T113-I打造高可靠性<b class='flag-5'>嵌入式</b>系统,1.12秒极限下的<b class='flag-5'>看门狗</b>喂狗之法

    看门狗技术实战:构建嵌入式系统抗死机能力的核心策略

    在复杂的嵌入式应用,死机风险无处不在。看门狗定时器以“监督员”角色,通过预设的监控周期与反馈协议,实时验证程序健康度,若出现超时未响应则执行系统重置,其配置技巧是提升抗风险能力的关键。 本文将
    的头像 发表于 08-15 13:39 389次阅读
    <b class='flag-5'>看门狗</b>技术实战:构建<b class='flag-5'>嵌入式</b>系统抗死机能力的核心策略

    死机克星:嵌入式系统中看门狗定时器的关键作用与配置

    情况和模拟故障场景两个示例,带你快速了解看门狗定时器在嵌入式系统的运用要点。 最新源码及实操教程详见:https://docs.openluat.com/air8101/luatos/app/common/wdt/   注意:
    的头像 发表于 08-15 13:22 538次阅读
    死机克星:<b class='flag-5'>嵌入式</b>系统中<b class='flag-5'>看门狗</b>定时器的关键作用与配置

    嵌入式开发就业还有前景吗?

    。在智能家居领域,嵌入式开发的主要工作是开发各种智能化设备和系统,如智能照明、智能安防、智能家电等。嵌入式开发人员需要掌握相关的硬件和软件技术,如处理器、传感器、通信技术、操作系统等,
    发表于 07-16 10:47

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式系统的定义与应用
    发表于 05-15 09:29

    TPS3430 具有可编程复位延迟的窗口看门狗定时器数据手册

    (WDO) 复位延迟可通过工厂编程的默认延迟设置进行设置,也可通过外部电容器进行编程。可以通过 SET 引脚禁用看门狗,以避免在开发过程或开机期间出现意外的看门狗超时。
    的头像 发表于 04-10 14:23 596次阅读
    TPS3430 具有可编程复位延迟的窗口<b class='flag-5'>看门狗</b>定时器数据手册

    嵌入式开发:高门槛的系统性工程与 996 的行业困局

    嵌入式开发的门槛,往往被培训机构和表象所掩盖。许多人误以为 “用 C 语言写个跑在 ARM 上的程序” 就是嵌入式,实则连皮毛都未触及。真正的嵌入式开发硬件与软件深度融合的系统性工程
    的头像 发表于 04-09 11:06 677次阅读
    <b class='flag-5'>嵌入式开发</b>:高门槛的系统性工程与 996 的行业困局

    看门狗,你真的会用吗?

    嵌入式系统开发看门狗是一种重要的机制,用于在程序异常时自动重启系统,保障其稳定性。本文将深入探讨看门狗及其在程序稳定性
    的头像 发表于 03-12 11:37 4560次阅读
    <b class='flag-5'>看门狗</b>,你真的会用吗?

    安利给工程师!看门狗相关知识

    适当的参数来确保系统在正常运行和故障场景下都能自动恢复。​ ▼ 看门狗简介 ▼ 看门狗(Watch Dog Timer,WDT) ——是一种监控电路,主要应用于嵌入式系统,目的是为了提高系统的可靠性和稳定性。在
    的头像 发表于 12-31 14:29 920次阅读
    安利给工程师!<b class='flag-5'>看门狗</b>相关知识

    抄作业!看门狗定时器必备知识

    Air201在模组内部集成了硬件看门狗,今天就一起来聊聊~ 本文将带你了解看门狗的工作原理、应用架构、定时时间设置、软硬件看门狗的区别,以及
    的头像 发表于 12-30 14:44 1078次阅读
    抄作业!<b class='flag-5'>看门狗</b>定时器必备知识

    如何使用 RISC-V 进行嵌入式开发

    RISC-V是一种开源的指令集架构(ISA),它允许任何人设计、制造和销售基于RISC-V的处理器,这为嵌入式开发提供了极大的灵活性和创新空间。以下是使用RISC-V进行嵌入式开发的基本步骤: 一
    的头像 发表于 12-11 17:32 2747次阅读