首页>>科技 >>内容

硬件和软件看门狗的异同点有哪些,硬件和软件看门狗的异同

发布时间:2023-10-13 23:48:11编辑:温柔的背包来源:

很多朋友对硬件和软件看门狗的异同点有哪些,硬件和软件看门狗的异同不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

硬件和软件看门狗的异同点有哪些,硬件和软件看门狗的异同

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

软件看门狗和硬件看门狗有什么区别?学完这篇文章,你就能轻松解决这个问题了。

1、 硬件看门狗原理

硬件看门狗采用定时器电路,其定时输出连接到电路的复位端。程序在一定的时间范围内清零定时器(俗称“喂狗”)。因此,程序正常工作时,定时器不能一直溢出,不能产生复位信号。如果程序失败并且在计时周期内看门狗没有复位,看门狗定时器就会溢出并产生复位信号并重新启动系统。我们以Analog Devices 的ADM6316 看门狗芯片为例。

该看门狗芯片的主要功能有: 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后,复位信号输出电平翻转,实现器件的复位。

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

2、软件看门狗原理

软件看门狗的原理是一样的,只不过将硬件电路上的定时器换成了处理器内部的定时器,这样可以简化硬件电路设计。一般采用芯片内的定时器作为看门狗,通过程序对定时器进行初始化。写入初始值,并启动定时器。程序按时为计时器分配一个初始值(或重置它),以防止其饥饿。这种看门狗是可以被禁用的(只是停止定时器),这就像给刚刚咬你的狗一个“向日葵咬”。大多数CPU 都有内置看门狗。硬件原理请参考各种芯片的datasheet。优点:初始时间可以通过程序更改或随时禁用。缺点:需要初始化。如果程序在初始化或启动完成之前跑走或者被禁用后跑走,看门狗无法复位系统。这样看门狗的作用就没有了,系统恢复能力也降低了。

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

了解了上面的软件和硬件看门狗之后,我们来总结一下两者的异同。两者的相同点如下: 1)都是通过定时器实现;当计时器到期而没有喂狗时,狗将被重置。 2)狗需要在规定的时间内喂食。 3)两者都依靠软件来喂狗。两者主要区别如下: 1)附加功能:硬件看门狗芯片一般都带有延迟复位和电源检测功能,而软件则没有。 2)屏蔽方式:软件看门狗可以通过修改寄存器轻松关闭,而硬件看门狗一旦断电启动就无法停止。 3)启动方法:软件看门狗启动很简单,只需修改寄存器即可。硬件通常在收到第一个喂狗信号后启动。 4)初始化:硬件看门狗在上电后收到第一个喂狗脉冲后进行初始化。软件看门狗需要配置相关寄存器(或调用相关看门狗子程序)。

4、软件看门狗未能解决问题的案例

项目团队开发了一款室外远程采集器。应用场景包括偏远郊区,对可靠性要求较高。故障或远程升级后可自动复位重启。为了节省成本,本产品采用主芯片内置看门狗功能。主芯片其他资源初始化完成后,看门狗功能初始化。产品批量后,在远程升级过程中,升级后设备有约5%的概率会变砖,需要手动断电重新上电才能恢复正常。经过研发人员分析,该软件的看门狗流程如下图。程序升级过程中,少数设备崩溃。程序还没有到达初始化看门狗的阶段,看门狗无法生效,导致设备处于冻结状态,手动断电重启后恢复正常。

经过改进和升级,开发人员使用了硬件看门狗。看门狗是依靠上电瞬间上拉电阻形成的高脉冲来开启的。看门狗延迟最迟1.8S,评估升级+初始化时间最长。延时为1.2S,看门狗芯片满足要求。一旦应用程序在1.8S内无法喂狗,就会重置并重新启动,问题就解决了。

5、总结

软件看门狗和硬件看门狗的主要区别在于打开看门狗的时序。在使用看门狗之前,必须对软件看门狗进行初始化(配置)。如果软件看门狗是厂家提供的SDK中的API接口,开发者没有能力修改底层uboot和kernel,无法在uboot和kernel阶段启动和喂狗。打开看门狗的时间很晚,在看门狗初始化之前程序可能会挂起。中间所有的问题都是失控的,就像上面的情况一样。硬件看门狗的激活不受软件限制。当器件上电时,可以依靠上拉电阻提供的高脉冲来打开看门狗。只要软件没有及时喂狗,就会被重置。这是无条件的。 “一分钱一分货”这句话也适用于电子产品。当然,如果你能说服驱动工程师在主芯片上电后立即初始化并启用软件看门狗,理论上软件看门狗可以和硬件看门狗一样可靠。

评论编辑黄宇

以上知识分享希望能够帮助到大家!