基于Linux的嵌入式系统全程喂狗策略
- 格式:docx
- 大小:33.02 KB
- 文档页数:7
嵌入式系统中看门狗的使用总结最近需要在板子上加上一块WatchDog,以确保在系统出错时自动重启,所以看了一些在嵌入式系统中使用看门狗的资料,现在总结如下:一、看门狗原理在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。
看门狗其实就是一个可以在一定时间内被复位的计数器。
当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。
系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗”),不让复位信号产生。
如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。
这就好比你的身边有一只时刻饥饿的狗,你不按时给它肉吃,它就会吃你的肉,你被吃了......挂了,投胎转世,彻底重新做人了。
不幸的是来世你还得喂狗-_-!!二、看门狗的种类在现在的嵌入式系统中主要可以分为两种类型的看门狗:1、CPU内部自带的看门狗:此类看门狗一般是将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,设定溢出时间,并启动定时器。
程序按时对定时器赋初值(或复位),以免被咬。
这种看门狗是可以被禁用的(只要停止这个定时器即可),好比对那只要咬你的狗来个“葵花点穴手”。
大部分CPU都内置看门狗,硬件原理可参考各芯片数据手册。
优点:可以通过程序改变溢出时间;可以随时禁用缺点:需要初始化;如果程序在初始化、启动完成前跑飞或在禁用后跑飞,看门狗就无法复位系统,这样看门狗的作用就没有了,系统恢复能力降低。
2、独立的看门狗芯片:这种看门狗主要有一个用于喂狗的引脚(一般与CPU的GPIO相连)和一个复位引脚(与系统的RESET 引脚相连),如果没有在一定时间内改变喂狗脚的电平,复位引脚就会改变状态复位CPU。
此类看门狗一上电就开始工作,无法禁用。
现在常用的芯片有:CAT705/CAT706、IMP706等等,溢出时间在1.6秒左右。
嵌入式系统看门狗的使用随着32 位微控制器在嵌入式产品中的广泛应用,嵌入式操作系统也逐渐被大量应用。
由于嵌入式操作系统的使用, 大大降低了复杂应用系统中软件开发的工作量, 使得嵌入式软件能够采用现代的软件开发技术进行代码编写和调试, 从而也提高了软件的质量。
但在嵌入式应用中, CPU 必须可靠工作, 即使因为某种原因进入一个错误状态, 系统也应该可自动恢复。
看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。
看门狗的基本原理所谓“看门狗”是指在系统设计中通过软件或硬件方式在一定的周期内监控系统的运行状况。
如果在规定时间内没有收到来自系统的触发信号, 则系统会强制复位, 以保证系统在受到干扰时仍然能够维持正常的工作状态。
它主要有寄存器、定时器和看门狗模等部件构成, 其内部结构如图1 所示。
图1、看门狗内部结构在这里看门狗的原理我想大家都已经比较熟悉,我不再罗嗦关于看门狗在前后台运行的程序(无OS)上使用很简单,我们只需要定时的去喂狗就可以。
但是对于使用的嵌入式操作系统的软件我们上面的简单喂狗方式就行不通了。
原因是系统是会执行任务调度的。
每一个任务在运行时就相当于一个前后台系统。
任一时刻只会有一个任务获得CPU的支配权而运行。
这样就要求我们必须在每一个任务中都要执行喂狗动作。
这样一来虽然达到了及时喂狗而不至于让系统复位的目的,但是如果有一个任务现在异常而不能运行的话,或者是两个任务因为资源问题发生死锁,系统其它的任务还会继续喂狗。
这样应用程序虽然出了问题,但是系统依然在按正常运行。
所以在OS中使用看门狗就变得复杂起来。
下面我说一下我是如何在OS中使用看门狗的。
以uCOS-II在STM32的平台上使用为例首先我为每一个任务分配一个软件看门狗计数器。
这样就形成了软件看门狗计数器队列。
这个队列在系统中使用的是全局变量(关于全局变量的使用可以看我上面一篇的“谈谈在UCOS中使用全局变量”一文)。
,设置一个优先级别最高的任务作为监视器,以监视各应用任务是否正常运行,该监视器即为软件看门狗.该任务对其他任务都设定一个计时器,每个被监视的任务在设定的时间内对软件看门狗中相应的定时器定时清零,即“喂软狗”.在其他任务都正常工作的情况下,软件看门狗对内置硬件看门狗定时器周期性清零,即“喂狗”.若某个任务出现故障,则该任务在设置的时间内对软件看门狗不“喂软狗”,此时与之对应的定时器溢出,软件看门狗发送指令,把该任务的堆栈地址指到其起始地址,重启该任务.当在设定的次数内不能有效启动,则监视器任务延时 “ 喂狗”,内置硬件看门狗计数器溢出,自动重启系统.另外,当监视器任务本身或系统硬件出现故障时,不能及时对硬件看门狗定时器清零,则重启系统.监控软件狗的任务原理图如下:12345 系统的实现过程本软件看门狗通过检查各应用任务是否在规定的时间内对其 “ 喂软狗”来确定各任务的运行状态,硬件看门狗通过检查软件看门狗是否在规定的时间内对其 “ 喂狗”来实现对监视器任务的监视.通过微 处理器的定时器中断机制,为每个任务分配计时单元和运行标志.系统具体的执行操作如下:1 )系统中某任务空闲时,以小于 “ 喂软狗”设定的时间间隔为周期,周期性地 “ 喂软狗”.2 )在该任务执行时,预计执行所需的最长耗时,并用稍大于该最大耗时的时问间隔设置监视器中与 其对应的定时器参数,同时中断周期性 “ 喂软狗”模块,启动监视器任务中的定时器倒计数.当该任务正常执行完毕时,发送信号 “ 喂软狗”,对定时器清零,复位该任务供下次使用,同时恢复周期性 “ 喂软狗”模块 .3 )当任务出现异常时,不能在设定的时间间隔内完成该任务,不能对软件看门狗及时清零,使得监 视器中相应的定时器溢出,监视器任务通过内核服务发送指令,把该任务的堆栈地址指到其起始地址,重启该任务,累计其复位次数,同时把该任务的计时器清零.如果在设定的次数内不能够有效启动该任务,软件看门狗则延时喂内置硬件看门狗,内置看门狗计数器溢出,自动重启系统.当系统主程序出现问题或者系统硬件出问题时,软件按看门狗也延迟“喂狗”,重新启动系统,以确保系统长时间稳定运行.这个方法已经成功运行于我的项目,再次分享出来。
1。
概述:WATCHDOG对于没有底层开发经验的开发人员来说,可能比较陌生,但是它在系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程序进入死循环等)不能恢复的时候,W ATCHDOG能够让系统重启。
WATCHDOG的应用主要是在嵌入式操作系统中,避免了系统在无人干预时长时间挂起的情况。
2。
W ATCHDOG模块在比较高档的嵌入式硬件芯片中,都有一个W ATCHDOG模块,如果在MCU/MPU中没有集成W ATCHDOG,一般会在此嵌入式系统中加一个专门的W ATCHDOG芯片来实现WATCHDOG机制。
此模块主要的功能包括:1 提供WATCHDOG控制寄存器和配置寄存器,供软件开发人员根据系统需要进行灵活配置。
2 提供一接口,使应用软件能够定时给W ATCHDOG“喂狗”。
3 提供W ATCHDOG机制,当系统进入不可恢复错误时,能产生一个不可屏蔽中断来通知系统自动重启(一般这样,也有改变为其他处理方式的),只有相应的复位信号才能清除它。
3。
WA TCHDOG的实现方式:对于W ATCHDOG模块的实现,不同的硬件芯片有不同的方式,这里介绍2中工作方式:1。
利用系统操作系统时钟来实现WA TCHDOG在Intel XScale系列中,利用了操作系统时钟的比较寄存器3(OSMR3)做为WA TCHDOG 的运行主体,当系统的W A TCHDOG激活后,软件就必须在一定时间内从OSMR3读出当前的计数,然后加上一定的计数值(下一次到期的计数值),再写回到OSMR3中,软件一直周期性的重复这个过程,如果软件没有重新写入新的计数使定时器到期,此OSMR3会利用一个GPIO触发系统复位。
2。
芯片的专门W ATCHDOG模块对于现在的很多芯片,已经集成了专门的WATCHDOG模块,比如ARM11的芯片,WATCHDOG模块中,提供了比较灵活的配置和控制机制:A。
宽范围设置过期时间间隔,从0。
Linux软件看门狗watchdog使⽤介绍背景:root@119.10.6.23:/usr/local/php# ps aux|grep watchdogroot 6 0.0 0.0 0 0 ? S Aug28 4:50 [watchdog/0]root 10 0.0 0.0 0 0 ? S Aug28 4:11 [watchdog/1]root 14 0.0 0.0 0 0 ? S Aug28 3:58 [watchdog/2]root 18 0.0 0.0 0 0 ? S Aug28 3:36 [watchdog/3]附:最简单的安装教程(CentOS)yum install watchdog -ymodprobe softdogchkconfig watchdog on/etc/init.d/watchdog start配置看门狗程序,开机⾃动运⾏chkconfig watchdog on启动看门狗sudo /etc/init.d/watchdog startLinux ⾃带了⼀个 watchdog 的实现,⽤于监视系统的运⾏,包括⼀个内核 watchdog module 和⼀个⽤户空间的 watchdog 程序。
内核 watchdog 模块通过 /dev/watchdog 这个字符设备与⽤户空间通信。
⽤户空间程序⼀旦打开 /dev/watchdog 设备(俗称“开门放狗”),就会导致在内核中启动⼀个1分钟的定时器(系统默认时间),此后,⽤户空间程序需要保证在1分钟之内向这个设备写⼊数据(俗称“定期喂狗”),每次写操作会导致重新设定定时器。
如果⽤户空间程序在1分钟之内没有写操作,定时器到期会导致⼀次系统 reboot 操作(“狗咬⼈了”呵呵)。
通过这种机制,我们可以保证系统核⼼进程⼤部分时间都处于运⾏状态,即使特定情形下进程崩溃,因⽆法正常定时“喂狗”,Linux系统在看门狗作⽤下重新启动(reboot),核⼼进程⼜运⾏起来了。
• 130 •内燃机与配件基于ARM的嵌入式家畜自动喂食控制系统应用研究刁一峰①;陈为①;杨丰泽①;陈灿②(①湖南生物机电职业技术学院,长沙410126;②湖南农业大学东方科技学院,长沙410128)摘要:基于ARM平台,开发一套环境调控和精确饲喂控制系统,实现对畜禽的精确饲喂。
可以每舍或每栏为单元,采用实时监控 管理形式。
通过云数据专家知识库,自动计算,鉴别不同时期的畜禽,调控不同的生长环境,并以此给予不同的喂食量,不同的饲料。
系统主要有识别模块,实时监测模块,数据处理模块,系统参数设定模块等组成。
系统较智能化,易操作,可靠性强,易升级,可辅助畜禽 养殖场,实现优质高产高效的养殖目的。
关键词:ARM;嵌入式;自动喂食;精细投喂0引言随着我国食用生鲜肉市场的逐步开放,国内市场受到进□生鲜肉类的冲击,且词养原材料成本逐年增加,养殖户利润越来越低,特别是个体养殖户和小规模养殖户处于薄利甚至亏损状态,养殖积极性受到严重打击。
但是大规 模养殖的优势却越发明显,也受到政策的扶持和保护。
在大规模养殖业中,应用畜禽的电子饲喂系统以及智能化监 测、控制、管理系统,不仅能够节省饲料,还于畜禽健康成 长有益。
如此养殖业和消费者都能够从中获益,消费者能 够吃到安全放心的副食品,而养殖业也能够达到高产高量 优质的效益,有利于我国经济的长远良性发展。
当前我国 大规模的养殖场采用的设备都是国外进□的,比如荷兰的 Nebap.Velos系统、德国的 Mann-ebeck InterMAC 系统、美国的Osborne.Team系统等,但是购买成本高,维护和维修 也不方便,这就促使国内开发适合自己国情的智能饲喂系 统,以满足养殖业的发展需求。
本文介绍一种基于A R M的嵌入式畜禽自动喂食控 制系统。
结合一套机械架构,实现对畜禽的精细投喂。
并对 畜禽的进食次数、活跃层度等进行监测,以提高饲料的利 用率,及时监测畜禽伤病,达到优质高效高产的养殖目的,实现养殖户增产增收。
看门狗实验
一、实验内容
1.编程实现看门狗功能,观察看门狗作用;
2.编程实现看门狗喂狗。
二、实验代码
void Main(void)
{
int old_index ;
st_date m_date;
/* 配置系统时钟 */
ChangeClockDivider(1,1); 行编译完后,完成”connect”,”download”,”go”后,超级终端上出现如图1-1所示的界面。
图1-1
2.改变时间,即喂狗的时间,得到如图1-2所示的界面。
三、实验体会
本实验是关于看门狗的实验编程的,看门狗的作用是微控制器受到干扰后进入错误状态后,使系统在一定时间间隔内复位。
通过实验,我了解到,看门狗是保证系统长期、可靠和稳定运行的有效措施。
而实验中涉及到了定时器控制寄存器WTCON、定时器数据寄存器WTDAT、定时器/计数器寄存器WTCNT以及前面所学的实时时钟的知识。
看门狗定时器数据寄存器(WTDAT)是用于指定超时时间,而看门狗计数寄存器(WTCNT)则是包含看门狗定时器工作的时候计数器的当前计数值。
由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。
要实现看门狗的功能,只需要我们对看门狗的寄存器组进行操作。
即对看门狗的控制寄存器(WTCON)、看门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。
本次实验学到了很多,实践永远是理论的试金石,我们总能在实践中学会各种各样的知识。
基于STM32的宠物喂食系统设计随着人们生活水平的提高,越来越多的家庭选择养宠物来增添生活乐趣。
为了方便的主人,本文介绍了一款基于STM32单片机的宠物喂食系统。
该系统具备定时定量喂食、安全保护、远程控制等功能,可满足不同宠物的喂食需求。
定时喂食:主人可以设置喂食的时间和食量,系统会在指定时间自动喂食。
定量喂食:系统根据宠物的年龄、体重、活动量等因素,设定合适的喂食量。
安全保护:喂食器应具有防噎塞功能,确保宠物安全进食。
远程控制:主人可以通过手机APP实时查看宠物喂食情况,或远程控制喂食器。
声音和灯光提示:在喂食时,系统可以通过声音和灯光提示宠物进食。
为了满足性能需求,喂食系统应具有可靠性高、稳定性强、易于维护等特点。
本系统主要由STM32单片机、电机驱动模块、光电传感器模块、声音提示模块和LED灯显示模块等组成。
(1)主控制器:选用STM32F103C8T6单片机,具有丰富的外设接口和强大的处理能力。
(2)电机驱动:采用ULN2003电机驱动模块,驱动能力强,可轻松驱动步进电机。
(3)光电传感器:选用红外线光电传感器,检测喂食器出粮口的状态,确保宠物不会将粮食推出来。
(4)声音提示模块:运用压电陶瓷蜂鸣器,在喂食时发出声音提示。
(5)LED灯显示模块:通过LED灯显示喂食状态,如正在喂食、已喂食完成等。
(1)主程序模块:负责整个系统的调度和状态机切换。
(2)电机驱动模块:通过单片机控制电机驱动器,实现喂食器的出粮动作。
(3)光电传感器模块:实时监测喂食器出粮口状态,判断是否需要喂食。
(4)声音提示模块:在喂食时,通过控制压电陶瓷蜂鸣器发出声音提示。
(5)LED灯显示模块:根据当前系统状态,控制LED灯显示相应的信息。
为了实现远程控制和手机APP的接入,我们需要使用Wi-Fi模块和蓝牙模块,这里我们选用ESP8266和HC-05蓝牙模块。
通过这两个模块,可以实现手机APP与单片机的通信,从而进行远程控制和状态查看。
基于Linux的嵌入式系统全程喂狗策略
发布: 2011-5-31 | 作者: —— | 来源:liuruidong| 查看: 446次| 用户关注:
摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS 软件进行电路设计和仿真验证。
仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。
关键词:Butte
引言
在嵌入式系统中,为了使系统在异常情况下能自动恢复,一般都会引入看门狗电路。
看门狗电路其实就是一个计数器。
当看门狗启动后,计数器开始自动计数,经过一定时间计数器溢出就会对CPU产生一个复位信号使系统重启。
系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零也即喂狗,不让复位信号产生。
当前在带Linux操作系统的嵌入式系统中,由于Linux操作系统加载时间较长(如10~30 s),一般都超过看门狗的时间间隔(典型值为l.6 s);而如果不采取特殊措施,则系统在Linux操作系统加载过程中复位,Linux操作系统永远无法加载成功。
为了解决这个问题,通常有两种方案[1-2]:做一个看门狗的时间间隔更长的硬件电路;修改内核,在内核启动过程中将看门狗设成无效。
以上方案无法解决嵌入式系统在操作系统启动阶段的失效问题,降低了系统可靠性。
本文提出了一种嵌入式系统全程喂狗策略及实现方法,从系统上电、引导程序(Bootloader)、操作系统内核直至应用阶段都启用看门狗。
实验表明,该方法简单可行,成本较低,在嵌入式系统的全过程中都可以实现喂狗策略,提高了系统可靠性。
1 系统总体设计
采用IMP706芯片组成硬件看门狗电路(看门狗的时间间隔为1.6 s),在操作系统程序(包括Bootloader)和应用程序中插人喂狗程序,这些喂狗程序运行时问间隔小于看门狗的时间间隔(本设计选为1 s)。
这样做可以保证:如果系统正常工作,系统可以在小于看门狗的时间间隔内不断进行喂狗动作,硬件看门狗的计数器不断清零,不产生复位信号;如果系统非
正常工作,喂狗动作失效,硬件看门狗的计数器在1.6 s后溢出,对CPU产生复位信号使系统重启。
1.1 看门狗电路设计
图1为看门狗电路原理,采用IMP706芯片组成硬件看门狗电路,通过电平转换器件
74AVC1T45,硬件看门狗器件的ST脚与中央处理器(CPU)的GPIO3脚相连。
看门狗器件的PRST脚与IN脚接到复位开关,RST脚接到CPU的RESET脚,当复位开关被触动或看门狗器件的计数器溢出时,看门狗器件的RST脚输出复位信号给CPU的RESET脚,CPU复位重启。
1.2 喂狗策略及实现
1.2.1 Bootloader阶段
在Bootloader阶段(本设计采用U-boot,但不限于此),喂狗策略是在Bootloader的程序中不同位置插入喂狗程序。
具体做法是:由于Bootoader第一阶段的启动不会超过1.6 s,因此只需在Bootoader的第二阶段,如Flash读写、CRC校验、循环等待等处,插入喂狗代码。
喂狗代码采用直接置位中央处理器的GPlO3状态寄存器的方式进行。
首先在特定平台的定义头文件include/condffigs/xxx.h中加入看门狗的宏定义:
1.2.2 Linux内核阶段
在Linux内核加载阶段(采用MontaVista Linux操作系统,但不限于此),喂狗策略是在Linux 内核程序的不同位置插入喂狗程序。
具体做法是:首先在Linux内核阶段1的内核解压缩程
序、RTC驱动加载程序、GPIO驱动加载程序适当代码处插入喂狗代码,喂狗代码以直接取反中央处理器的GPlO3状态寄存器的方式进行;在Linux内核阶段2的Watchdog驱动加载程序适当代码处插入喂狗代码,喂狗代码调用GPIO驱动,GPIO驱动内含取反中央处理器的GPlO3状态寄存器的操作;在Linux内核阶段3的内核加载根文件系统程序、init 程序的适当代码处调用Linux的Watchdog驱动,Watchdog驱动内含取反中央处理器的GPlO3状态寄存器的操作。
以上内核阶段的划分是以GPIO及Watchdog驱动的加载为标志的。
GPIO驱动加载之前为内核阶段1,GPIO驱动加载之后至Watchdog驱动加载之前为内核阶段2,Watchdog驱动加载之后为内核阶段3。
下面示例说明内核解压缩asm/arch/boot/com—pressed.C中喂狗的实现代码:
从以上代码可以看出,它是内核阶段1喂狗的典型方法,是直接取反GPlO3状态寄存器的。
下面示例说明内核阶段2的喂狗方法(仅以加载RTC驱动为例):首先让RTC驱动中包含GPIO的头文件,然后在读取RTC当前值的函数中调用GPIO驱动进行喂狗。
为了能够在内核阶段3调用Watchdog驱动进行喂狗,需要在Watchdog驱动中导出喂狗函数以供内核阶段3使用。
Watchdog驱动喂狗也是调用GPIO驱动实现的,但Watchdog
驱动一旦加载完成,以后的喂狗都通过调用Watchdog驱动完成。
1.2.3 程序运行阶段
图2为多线程应用程序运行阶段喂狗方法。
在主程序中首先创建一个监控线程,它的优先级高于其他线程。
监控线程在其他被监控的线程正常工作的情况下,一定时间内对看门狗进行喂狗操作,喂狗操作通过调用Watch—dog驱动来完成。
如果某个线程出现故障,监控线程就不执行喂狗操作,也就达到这个线程出现故障时系统自动重启的目的。
如果监控线程自身出现故障,不能及时执行喂狗操作,看门狗也自动复位重启。
具体做法是,主程序首先启动监控线程,然后依次启动N个被监控的线程,每一线程内都设置一计数器。
被监控的线程中首先对线程内的计数器初始化为0,在各个线程主循环中,对相应的计数器执行加1操作。
监控任务首先启动看门狗,进入循环。
每隔M秒对各线程内的计数器进行检验,在M 秒内每隔1 s要对看门狗喂狗,否则系统就会复位重启。
查询N个计数器值是否为O,如果全都大于O,则说明对应接受监控的线程正常运行,然后对看门狗喂狗,并将N个计数
器值清零。
如果有任意一个计数器值为0,检测到对应接受监视的线程出现故障需要重启,这时不对看门狗喂狗,使得系统复位重启。
以下示例说明在应用中如何调用Watchdog驱动实现喂狗:
总之,在系统不同阶段,由于系统调用和封装程度不同,看门狗的喂狗实现方法也不同:在Bootloader阶段,直接取反中央处理器的GPIO3的状态寄存器;在Linux内核阶段1,采取取反中央处理器的GPlO3的状态寄存器的方法进行;在Linux内核阶段2,采取调用GPIO 的驱动的方法进行;在Linux内核阶段3,采取调用Watchdog驱动的方法进行;在应用程序运行阶段,应用程序中的喂狗程序采取调用Watchdog驱动的方法进行,如图3所示。
2 实验结果
我们在公司研发的智能视频分析器项目中应用了本方法。
该分析器采用TI DaVinci系列DSP 芯片(TMS320DM6446)为CPU,用Monta Vista Linux作为操作系统。
操作系统启动时间约为20~30 s。
采用本方法是为了保证系统在全过程中都能得到有效的失效恢复。
在振荡波抗扰度、电压波动与闪烁、静电放电、电快速瞬变脉冲群等EMC兼容性测试中,
当各强度指标超过设备EMC兼容性设计强度时,系统失效,利用这种方式可以测试本方法在硬件失效时的效果。
以静电放电为例,设计放电等级为±6 kV(我们取±7 kV的强度等级),设备上电后,分别在1~30 s内每隔5 s及在120 s处进行静电放电测试,经观察设备都可以即时恢复。
对软件失效时本方法效果的测试,采用故障植入脚本的主动方式及系统长时间运行的被动方式进行测试。
最终结果表明,设备在失效后可即时恢复。
综上所述,本全程喂狗的方法能确保系统在任一阶段出现软件或硬件故障时都能复位重启。
结语
本文提出了一种嵌入式系统全程喂狗策略,包括硬件电路设计和软件实现方法。
该方法有如下特点:看门狗电路简单,硬件只需一块看门狗芯片,不需复杂的外围逻辑电路,成本较低;系统全过程启用看门狗,确保系统在任一阶段出现软件或硬件故障都能复位重启,系统可靠性得到提高。