一种看门狗电路的实现方法及系统
技术领域
本发明涉及嵌入式系统设计领域,具体涉及一种看门狗电路的实现方法及系统。
背景技术
看门狗电路,是一种当计时器溢出时将系统复位的芯片电路,看门狗电路在程序的中断中拥有最高的优先级。看门狗电路分为硬件看门狗和软件看门狗:
硬件看门狗是利用一个定时器芯片电路,其定时器的输出端连接到电路的复位端,复位端与系统的CPU连接。硬件看门狗的工作方式为:若系统在指定时间内对定时器清零(俗称“喂狗”),在定时器不会溢出,定时器就不会产生复位信号导致系统复位(即重启系统);若系统未在指定时间内对定时器进行喂狗,定时器就会超时溢出,进而产生复位信号导致系统复位。
硬件看门狗的缺点为:系统需要在工作期间,按照一定的频率向定时器发送高低电平的变换信号,以此实现喂狗功能;但是,硬件看门狗的定时器要求2次喂狗的间隔时间(即发送2次信号的间隔时间)在1.6s以下,这会导致系统频繁向定时器发送电平变换信号(1.6s以内发送1次),这不仅增大了系统的开销,降低了系统的工作性能,而且当系统资源不够用时,往往会出现因喂狗不及时而导致系统异常复位。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:如何在看门狗电路工作时,降低系统的开销和发生异常复位的几率,进而提升了系统的工作性能。
为达到以上目的,本发明提供的看门狗电路的实现方法,包括以下步骤:
S1:CPLD判断是否在喂狗周期内,收到系统的CPU发送的高低电平的变换信号,若是,转到S2,否则转到S3;
S2:CPLD向看门狗芯片发送喂狗信号,喂狗信号的发送频率与看门狗芯片匹配;
S3:CPLD向看门狗芯片发送工作异常信号,看门狗芯片收到工作异常信号后,向CPLD返回复位信号;CPLD将复位信号返回给系统的CPU。
参见本发明方法的S1至S3可知,本发明通过CPU控制CPLD的方式,利用CPLD的资源进行喂狗,本发明的CPLD占用的系统资源为:CPU按照喂狗周期向CPLD发送喂狗信号,由于喂狗周期可调(该周期满足工作正常运行即可),因此与现有技术中系统在较短的周期内(1.6s)频繁向定时器发送电平变换信号相比,本发明的喂狗周期较长,这显著降低了系统的开销,随之也降低了系统发生异常复位的几率,提升了系统的工作性能。
在上述技术方案的基础上,S1之前还包括以下步骤:CPU向CPLD设置喂狗周期;设置喂狗周期后看门狗芯片才能判断是否在喂狗周期内,收到系统的CPU发送的高低电平的变换信号。
在上述技术方案的基础上,S1之前还包括以下步骤:在CPU初始化完成之前,CPLD对看门狗芯片进行喂狗,在CPU初始化完成之后,转到S1;CPLD对看门狗芯片进行喂狗的流程包括:CPLD向看门狗芯片发送高低电平的变换信号,变换信号的发送频率与看门狗芯片匹配;看门狗芯片收到1次变换信号后,若在指定周期内未收到电平不同的变换信号,则向CPLD返回复位信号。
在上述技术方案的基础上,S1中的CPLD在喂狗周期内,收到CPU发送的高低电平的变换信号的判定标准为:CPLD收到1次变换信号后,在喂狗周期内收到电平不同的变换信号。
在上述技术方案的基础上,S1中所述喂狗周期为60s,S2中所述看门狗芯片的型号为MAX706,S2中所述喂狗信号的发送频率为4Hz。
本发明提供的看门狗电路的实现系统,包括设置于CPLD上的喂狗模块、以及设置于CPU上的监测复位模块;
监测复位模块用于:在喂狗周期内向监测复位模块发送高低电平的变换信号;
喂狗模块用于:判断是否在喂狗周期内,收到高低电平的变换信号,若是,向看门狗芯片发送喂狗信号,喂狗信号的发送频率与看门狗芯片匹配;否则向看门狗芯片发送工作异常信号,将看门狗芯片返回的复位信号转发至CPU。
参见本发明的系统可知,本发明通过CPU控制CPLD的方式,利用CPLD的资源进行喂狗,本发明的CPLD占用的系统资源为:CPU按照喂狗周期向CPLD发送喂狗信号,由于喂狗周期可调(该周期满足工作正常运行即可),因此与现有技术中系统在较短的周期内(1.6s)频繁向定时器发送电平变换信号相比,本发明的喂狗周期较长,这显著降低了系统的开销,随之也降低了系统发生异常复位的几率,提升了系统的工作性能。
在上述技术方案的基础上,所述监测复位模块还用于:向监测复位模块设置喂狗周期。设置喂狗周期后看门狗芯片才能判断是否在喂狗周期内,收到系统的CPU发送的高低电平的变换信号。
在上述技术方案的基础上,所述喂狗模块还用于:在CPU初始化完成之前,对看门狗芯片进行喂狗:向看门狗芯片发送高低电平的变换信号,变换信号的发送频率与看门狗芯片匹配;看门狗芯片收到1次变换信号后,若在指定周期内未收到电平不同的变换信号,会返回复位信号。
在上述技术方案的基础上,所述喂狗模块判定在喂狗周期内,收到高低电平的变换信号的标准为:收到1次变换信号后,在喂狗周期内收到电平不同的变换信号。
在上述技术方案的基础上,所述喂狗周期为60s,所述喂狗信号的发送频率为4Hz。
与现有技术相比,本发明的优点在于:
参见本发明方法的S1至S3可知,本发明通过CPU控制CPLD的方式,利用CPLD的资源进行喂狗,本发明的CPLD占用的系统资源为:CPU按照喂狗周期向CPLD发送喂狗信号,由于喂狗周期可调(该周期满足工作正常运行即可),因此与现有技术中系统在较短的周期内(1.6s)频繁向定时器发送电平变换信号相比,本发明的喂狗周期较长,这显著降低了系统的开销,随之也降低了系统发生异常复位的几率,提升了系统的工作性能。
附图说明
图1为本发明实施例中的看门狗电路的实现方法的流程图;
图2为本发明实施例中的看门狗电路的实现系统的工作状态示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的看门狗电路的实现方法,包括以下步骤:
S1:CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)判断是否在喂狗周期(即指定时间)内,收到系统的CPU发送的高低电平的变换信号,若是,转到S2,否则转到S3。
S2:CPLD向看门狗芯片发送喂狗信号,喂狗信号的发送频率与看门狗芯片匹配;看门狗芯片收到喂狗信号后,确认系统正常,继续工作。
S3:CPLD向看门狗芯片持续发送工作异常信号(低电平信号),看门狗芯片收到工作异常信号后,确认系统异常,向CPLD返回复位信号;CPLD将复位信号返回给系统的CPU,即可将整个系统进行复位。
由此可知,本发明通过CPU控制CPLD的方式,利用CPLD的资源进行喂狗,本发明的CPLD占用的系统资源为:CPU按照喂狗周期向CPLD发送喂狗信号,由于喂狗周期可调(该周期满足工作正常运行即可),因此与现有技术中系统在较短的周期内(1.6s)频繁向定时器发送电平变换信号相比,本发明的喂狗周期较长、且可调,这显著降低了系统的开销,进而降低了系统发生异常复位的几率,提升了系统的工作性能。
下面通过六个实施例对本发明进行详细说明。
实施例一:
S1之前还包括以下步骤:CPU向CPLD设置喂狗周期,在实际应用中喂狗周期可根据需要进行灵活设置和调整。
实施例二:
S1之前还包括以下步骤:在CPU初始化完成之前,CPLD对硬件看门狗芯片进行喂狗,在CPU初始化完成之后,转到S1。CPLD对硬件看门狗芯片进行喂狗的原理与S1相同,具体为:CPLD向看门狗芯片发送高低电平的变换信号,变换信号的发送频率与看门狗芯片匹配。看门狗芯片收到1次变换信号后,判断是否在指定周期内再次收到电平不同的变换信号,若是则代表CPLD正常,继续工作,否则代表CPLD异常,向CPLD返回复位信号。
实施例三:
S1中的CPLD在喂狗周期内,收到系统的CPU发送的高低电平的变换信号的判定标准为:CPLD收到1次变换信号后,在喂狗周期内再次收到电平不同的变换信号,例如本次为高电平,上次为低电平,或者本次为低电平,上次为高电平。
实施例四:
S1中的喂狗周期为60s,S2中的看门狗芯片的型号为MAX706,S2中的喂狗信号的发送频率为4Hz(即0.25s发送1次)。
实施例五:
参见图2所示,本实施例中的看门狗电路的实现方法的流程为:
CPU初始化,初始化的流程包括:CPU上电后通过Locbus总线对CPLD进行逻辑设置,在逻辑设置的过程中,CPLD对硬件看门狗芯片(MAX706)进行喂狗:CPLD向看门狗芯片发送喂狗信号,喂狗信号的发送频率为4Hz;看门狗芯片收到喂狗信号后,确认CPLD正常。
参见表1所示,逻辑设置包括喂狗逻辑和喂狗周期逻辑:
喂狗逻辑的偏移地址为0x015,寄存器名称为wdo_ctl,功能为:喂狗信号0代表软件喂狗,喂狗信号1代表硬件喂狗,喂狗信号的初始值为0x01,即初始为硬件喂狗;
喂狗周期逻辑的偏移地址为0x016,寄存器名称为max_soft_dog_feed_period,功能为:设置喂狗周期,初始值为60s。
表1、CPLD寄存器说明
在CPU的初始化完成之前中,由于喂狗信号的初始值为1,即CPLD对硬件看门狗芯片进行喂狗:CPLD向看门狗芯片发送高低电平的变换信号,变换信号的发送频率与看门狗芯片匹配。看门狗芯片收到1次变换信号后,判断是否在指定周期内收到电平不同的变换信号,若是则代表CPLD正常,继续工作,否则代表CPLD异常,向CPLD返回复位信号。
CPU初始化完成后,CPLD将喂狗信号从1调整为0,此时CPU通过GPIO接口(GeneralPurpose Input Output,通用输入/输出接口)向CPLD发送喂狗信号;CPLD判断是否在喂狗周期(喂狗周期为60s)内收到CPU发送的高低电平的喂狗信号:
若是,CPLD向看门狗芯片的WDI引脚(Watch Dog Input,看门狗输入引脚)发送喂狗信号,喂狗信号的发送频率为4Hz,看门狗芯片收到喂狗信号后,确认系统正常,继续工作。
否则CPLD向看门狗芯片的WDI引脚发送工作异常信号,看门狗芯片收到工作异常信号后,确认系统异常,通过WDO引脚(WatchDog Out,看门狗输出引脚)向CPLD返回Rest信号(复位信号);CPLD将Rest信号返回给系统的CPU,即可将整个系统进行复位。
上述流程在实际实现时,采用计算机程序代码完成,具体代码如下:
实施例六:
本发明实施例中的看门狗电路的实现系统,包括设置于CPLD上的喂狗模块、以及设置于CPU上的监测复位模块。
监测复位模块用于:向监测复位模块设置喂狗周期,在喂狗周期内向监测复位模块发送高低电平的变换信号。
喂狗模块用于:
在CPU初始化完成之前,对看门狗芯片进行喂狗:向看门狗芯片发送高低电平的变换信号,变换信号的发送频率与看门狗芯片匹配;看门狗芯片收到1次变换信号后,若在指定周期内未收到电平不同的变换信号,会返回复位信号。
在CPU初始化完成之后,判断是否在喂狗周期内,收到高低电平的变换信号,若是,向看门狗芯片发送喂狗信号,喂狗信号的发送频率与看门狗芯片匹配;否则向看门狗芯片发送工作异常信号,将看门狗芯片返回的复位信号转发至CPU。
喂狗模块判定在喂狗周期内,收到高低电平的变换信号的标准为:收到1次变换信号后,在喂狗周期内收到电平不同的变换信号。
本实施例中的喂狗周期为60s,看门狗芯片的型号为MAX706,喂狗信号的发送频率为4Hz。
需要说明的是:本发明实施例提供的系统在进行模块间通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。