本文从原理、异同、举例来说明硬件软件看门狗怎么选择:
一、 硬件看门狗的原理
硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。
如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。
我们以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、内核阶段开启和喂狗,开启看门狗的时机就很晚了,程序就有可能还没有跑到看门狗初始化就挂了,中间的各种幺蛾子都不受控,就像上述的案例。
而硬件看门狗开启则不受软件的约束,设备上电就可以依赖上拉电阻提供的高脉冲开启看门狗,只要软件不及时喂狗,就复位,这个是无条件的。所谓一分钱一分货,在电子产品也是适用的。
当然,如果你能说服驱动工程师,能够在主芯片上电第一时间,就初始化和开启软件看门狗,理论上,软件看门狗也可以做的和硬件看门狗一样可靠。
电磁干扰滤波器有哪些作用
医疗用电源的及高品质医疗用AC-DC产品的技术特性
Silicon Labs帮助超过194万儿童改善饮水质量
华为凭什么能打造出提升客户体验的赋能平台?
电源转换器是干什么用的_电源转换器的使用方法
嵌入式开发中的软、硬件看门狗
镭神智能牵手华为,助力中国绿色物流与供应链发展
Wi-Fi 7作为下一代无线技术将达到数据速率的巅峰
为了收购东芝闪存 西部数据先找苹果谈话了
微软在GitHub开源深度学习工具包
OpenAI CEO奥特曼本周访问韩国,与三星等巨头会面
WiMAX撞击3G
什么是硅油,硅油是什么意思?
中国5G跑出“加速度”,5G的发展将不畏浮云遮望眼
基于合宙Air724UG的多款工业级4G DTU任你选
眼动追踪对于AR眼镜的重要性不言而喻
苹果iPhone12信号全系翻车?
小米6确认4月发布:性能强劲还有双摄5倍光学变焦?
关于精密电子行业中点胶加工的工艺探究
Cisco 3750硬堆叠的配置方法,Cisco 3750堆叠有什么优势