本发明涉及通信技术领域,特别涉及一种延时喂狗的方法。本发明同时还涉及一种延时喂狗的装置。
背景技术:为提高网络设备的可靠性,在其单板上一般都设计有看门狗电路,用于在系统挂死的情况下实现系统自动复位及恢复。看门狗电路多采用看门狗芯片实现。如图1所示,为用于看门狗电路中的ADM706芯片。其内部有定时器,需要外部向WDI管脚输入高低变化的“喂狗”信号,从而防止产生复位。每接收到一次高低变化的“喂狗”信号之后,芯片内部定时器会清零并重新开始计时;而当定时器在1.6S的时间内都没有收到“喂狗”信号时,ADM706芯片的WDO管脚会输出低电平的“狗叫”信号。单板利用这个低电平的“狗叫”信号产生复位低电平。在正常工作情况下,CPU(CentralProcessingUnit,中央处理单元)会周期性地向ADM706芯片的WDI管脚输出高低变化的“喂狗”信号。但当CPU出现异常而挂死时,由于CPU无法再输出周期性的高低变化的信号,WDI管脚上只有常高或者常低的信号。在经过1.6S后,ADM706芯片输出使单板复位的低电平信号,使系统重新启动。从而实现对系统运行状态的监控和自动恢复。通过上述方案的描述,我们可以看出,为了对看门狗芯片进行“喂狗”,CPU需要根据预设的时间周期输出高低变化的信号,举例来说,为了对图1所示的ADM706芯片进行“喂狗”,CPU需要每间隔1.6S产生一次“喂狗”信号。然而,频繁地产生“喂狗”信号会在一定程度上占用CPU的处理资源,对于一些处理能力较弱或任务比较繁重的CPU来说,维持高频率的“喂狗”信号会削弱网络设备的处理性能,从而对其他任务的运行产生影响,因此,本领域一般通过CPU延时“喂狗”来减少监控所消耗的系统资源。如图2所示,为现有技术中通过CPLD可编程逻辑器件实现延时“喂狗”的硬件电路的示意图。在该电路中,CPU并不直接向AMD706芯片提供周期为1.6S的“喂狗”信号,而是通过Localbus(局部总线)定时地写CPLD(ComplexProgrammableLogicDevice,复杂可编程逻辑器件)某一寄存器,将CPLD内部的一个32S或更长时间的计时器进行清零操作,从而无需每间隔1.6S向ADM706芯片提供“喂狗”信号。CPLD负责向ADM706芯片的WDI管脚提供定时(周期为1.6S)的“喂狗”信号。当CPU在32S或者更长的时间周期内未对CPLD内的计时器执行清零操作时,CPLD判定CPU出现异常,停止向ADM706芯片输出“喂狗”信号。这样,在1.6S后,ADM706芯片将进行“狗叫”,将WDO信号拉低,CPLD将此信号输出给MR(手动复位管脚),ADM706芯片在MR被拉低时,RESET管脚会输出200ms的低电平复位信号,将CPU进行复位。以上方案通过采用可编程逻辑器件实现延时“喂狗”,但在设备中增设可编程逻辑器件无疑会增加网络设备的制造成本;对于一些因成本或其他因素而无法配置可编程逻辑器件的设备来说,设备的CPU必须在很短的时间间隔内输出“喂狗”信号,从而增加了CPU的负担,对系统的处理性能以及稳定性造成很大的影响。
技术实现要素:有鉴于此,本发明提供了一种延时喂狗的方法,能够在无需配置可编程逻辑器件条件下实现延时“喂狗”。本发明提供的延时喂狗的方法,应用于包括有CPU、实时时钟RTC、计数器芯片和看门狗芯片组成的硬件装置上,所述方法包括:根据所述CPU输出的脉冲信号生成计数器计数清零的控制信号,所述RTC芯片产生标准时钟信号实现计数器计数以及对看门狗芯片喂狗;当所述CPU不能在预定周期内输出脉冲信号以使所述计数器芯片的计数清零,则触发生成使RTC芯片不对看门狗芯片进行喂狗的控制信号,从而触发所述看门狗芯片输出复位电平。其中,所述RTC芯片产生的标准时钟信号的周期小于所述看门狗芯片触发复位的时间周期,所述喂狗控制信号的周期应大于等于CPU输出的脉冲信号周期。另一方面,本发明还提出了一种延时喂狗装置,包括有中央处理单元CPU、实时时钟RTC芯片、计数器芯片和看门狗芯片,还包括:生成模块,用于根据所述CPU输出的脉冲信号生成计数器计数清零的控制信号;处理模块,用于在所述CPU不能在预定周期内输出脉冲信号以使所述计数器芯片的计数清零时,触发生成使RTC芯片不对看门狗芯片进行喂狗的控制信号,从而触发所述看门狗芯片输出复位电平;其中,所述RTC芯片具体用于产生标准时钟信号实现计数器计数以及对看门狗芯片喂狗,所述标准时钟信号的周期小于所述看门狗芯片触发复位的时间周期,所述喂狗控制信号的周期应大于等于CPU输出的脉冲信号周期。通过本发明技术方案,可以实现在没有可编程逻辑器件的条件下CPU进行延时“喂狗”,实现方法简单且节约了产品的生产制造成本。附图说明图1为现有技术中ADM706芯片示意图;图2为现有技术中通过可编程逻辑器件实现延时喂狗的硬件电路的示意图;图3为本发明提出的一种延时喂狗方法的流程示意图;图4为本发明具体实施例提出的一种利用计数器和RTC实现延时喂狗硬件电路示意图;图5为本发明具体实施例中采用的74HC393计数器示意图;图6为本发明具体实施例中采用的RTC器件示意图;图7为本发明具体实施例中采用的74HC393计数器在不同计数下对应的QA~QD管脚的真值表;图8为本发明提出的一种延时喂狗装置的结构示意图。具体实施方式为解决现有技术中必须配置可编程逻辑器件才能实现延时“喂狗”的技术问题,如图3所示,本发明提出了一种延时喂狗的方法,应用于包括有CPU、实时时钟RTC、计数器芯片和看门狗芯片组成的硬件装置上,包括以下步骤:S301,根据所述CPU输出的脉冲信号生成计数器计数清零的控制信号,所述RTC芯片产生标准时钟信号实现计数器计数以及对看门狗芯片喂狗。具体地,该步骤的详细实现流程如下:CPU输出的脉冲信号与看门狗芯片提供的正常工作时的复位高电平经过与非处理后生成对计数器的计数进行清零的计数控制信号;计数控制信号输入到计数器内以决定对所述计数器的计数进行清零。由于正常情况下看门狗芯片输出的复位电平始终处于高电平,因此CPU输出的脉冲信号与复位电平通过与非门处理后的信号是一个电平与CPU输出的脉冲信号相反的脉冲信号。CPU在进行“喂狗”时由高电平输出一个低电平信号再进行拉高,那么该脉冲信号则相应为由低电平拉高再变为低电平,从而利用高电平对计数器进行清零处理。以图4所示的延时喂狗硬件电路图为例,CPU通过一个GPIO(GeneralPurposeInput/Output,通用输入输出)管脚向计数器74HC393提供GPIO_CPU信号,正常情况下该信号在32S内会产生一个由低到高的电平变化。该信号与看门狗芯片的RESET信号经过与非门,输出至计数器74HC393的CLR管脚。由于看门狗芯片的RESET信号正常情况下始终为高电平,因此,正常情况下与非门所输出的信号为与GPIO_CPU信号相反的脉冲信号,即当GPIO_CPU为低电平时,CLR管脚为高电平,此时计数器被清零;当CPU完成该次“喂狗”,即GPIO_CPU从低电平被拉回至高电平后,CLR管脚重新变为低,计数器开始输出计数时钟信号。进一步如图5及图6所示,分别为本发明具体实施例中所采用的74HC393计数器示意图以及RTC(RealTimeClock,实时时钟)器件的示意图。其中,74HC393计数器是比较常见的双4位二进制计数器,在74HC393中,一颗芯片上集成了2套独立的4位二进制计数器。当CLK管脚输入高低变化的方波,QA~QD管脚则输入二进制的计数输出,图7则是在不同计数(0-15)下对应的QA~QD管脚的真值表。CLR管脚的高电平输入信号则可以对QA~QD进行清零操作。在负责给系统和用户提供当前的时间的RTC器件中,系统通过I2C接口(SCL、SDA)访问RTC内部寄存器,SQW/INTB管脚可配置输出1Hz、4.096kHz、8.192kHz、32.768kHz等频率变化的方波。基于计数器可以根据需要输出不同周期的计数时钟信号的特性,本发明技术方案设置计数器输出的计数时钟信号(即喂狗控制信号的周期)的周期大于等于CPU输出的脉冲信号的周期,在优选的实施方式中,可以设定计数器的输出周期与CPU输出的脉冲信号的周期相同。在进行计数的过程中,若计数器接收到了清零的高电平信号,则该计数器会重新进行计数。因此,本发明对计数器的管脚进行配置,使其计数周期与CPU输出“喂狗”信号的周期保持一致,CPU只要在周期内输出了“喂狗”信号,即可将计数器进行清零,从而使计数器输出的电平信号始终保持不变。相反,若CPU在周期内未如期输出“喂狗”信号,那么计数器在周期过后输出相反的电平信号。在具体的实施例中,本发明利用RTC器件输出的1Hz方波作为计数器的输入时钟(周期为1S),将SQW/INTB管脚接入计数器的1CLK管脚。同时,将计数器中的1QD管脚接入其自身的2CLK管脚:当计数器计满15S时,第一组计数器的输出1QD管脚会产生一个周期为16S的计数时钟信号,由低到高周期性地变化。由于1QD的信号又作为第二组计数器的计数时钟,2QA同样会产生一个由低到高周期性变化的计数时钟信号,周期为32S,从而确保与当前CPU产生“喂狗”信号的周期一致。需要说明的是,以上计数器以及相应的管脚连接设置方式仅为本发明提出的一种优选的实施方式,本领域技术人员可以以此为基础,通过调整计数器的输出管脚连接方式,以及配置不同的计数器输入时钟频率,来达到匹配不同CPU的“喂狗”信号周期的目的,从而实现16S、64S等不同规格的延时“喂狗”电路,这样的改变均在本发明的保护范围之内。S302,当CPU不能在预定周期内输出脉冲信号以使所述计数器芯片的计数清零,则触发生成使RTC芯片不对看门狗芯片进行喂狗的控制信号,从而触发所述看门狗芯片输出复位电平。基于上一步骤中产生的与CPU“喂狗”周期一致的控制信号,本发明将其与周期小于看门狗芯片触发复位的时间阈值的标准时钟信号进行与非处理,这样只要控制信号不因CPU发生异常而由高电平转为低电平,标准时钟信号可始终作为“喂狗”信号对看门狗芯片进行“喂狗”;相应地,当CPU不能在预定周期内输出脉冲信号后,计数器芯片在预定的周期内计数值溢出后将输出相反的计数时钟信号,该计数时钟信号与高电平经过与非处理后生成看门狗的喂狗控制信号能够使RTC芯片无法对看门狗芯片进行喂狗。此外,本发明技术方案同时在看门狗芯片输出的复位电平为低电平时使CPU输出的脉冲信号始终保持为低电平信号,保证在CPU复位的过程中不会再次“狗叫”。具体地,在图4所示的电路图中,系统正常工作时RESET信号为高电平,RTC的SQW管脚输出1Hz的脉冲时钟信号,作为ADM706芯片的WDI输入“喂狗”信号。由于ADM706芯片的“狗叫”时间是1.6S,因此只要RTC的脉冲时钟信号不被屏蔽,ADM706芯片也不会产生“狗叫”。当2QA输出为低电平时,控制信号为高电平,WDI信号则为1Hz变化的标准脉冲时钟信号;当2QA转为高电平时,控制信号即变为低电平,WDI成为高电平信号,此时作为“喂狗”信号的1Hz标准时钟脉冲信号被屏蔽。相应的,1.6S后ADM706芯片的WDO输出“狗叫”低电平信号,这个信号输出给了MR管脚,接着ADM706芯片的RESET管脚输出200ms的RESET低电平复位信号,此复位信号将CPU复位并将计数器清零。在RESET低电平复位信号生效时,由于计数器处于被清零的状态(CLR管脚为高),2QA始终为低电平,因此不会再次产生“狗叫”。当RESET变高后,由于GPIO_CPU有下拉电阻,因此,此时GPIO-CPU输出的脉冲信号为不变的低电平信号,从而使看门狗芯片保持不“狗叫”的状态。当CPU启动完成后,将GPIO_CPU拉高,计数器就进入32S的计时,如果在32S内GPIO_CPU信号没有给出一个低电平对计数器进行清零,那么2QA就会变高,将1Hz的“喂狗”信号屏蔽,ADM706芯片“狗叫”触发复位。基于与上述方法同样的发明构思,如图8所示,本申请还提供了一种CPU延时喂狗装置,包括有中央处理单元CPU810、实时时钟RTC芯片820、计数器芯片830和看门狗芯片840,还包括:生成模块850,用于根据所述CPU810输出的脉冲信号生成计数器计数清零的控制信号,;处理模块860,用于在所述CPU不能在预定周期内输出脉冲信号以使所述计数器芯片830的计数清零时,触发生成使RTC芯片820不对看门狗芯片840进行喂狗的控制信号,从而触发所述看门狗芯片840输出复位电平;其中,所述RTC840芯片具体用于产生标准时钟信号,以实现计数器计数以及对看门狗芯片840喂狗,所述标准时钟信号的周期小于所述看门狗芯片840触发复位的时间周期,所述喂狗控制信号的周期应大于等于所述CPU810输出的脉冲信号周期。本发明实施例中,所述生成模块850,具体用于:将所述CPU810输出的脉冲信号与看门狗芯片840提供的正常工作时的复位高电平进行与非处理,生成对所述计数器芯片830的计数进行清零的计数控制信号;将所述计数控制信号输入到计数器芯片830内,以决定对所述计数器芯片830的计数进行清零。本发明实施例中,所述计数器芯片830,具体用于当CPU没有在预定的周期内输出脉冲信号时输出计数时钟信号;所述处理模块860,具体用于将所述计数时钟信号与高电平经过与非处理,生成看门狗的喂狗控制信号。进一步地,本发明实施例中,还包括:低电平模块870,用于当所述看门狗芯片840输出的复位电平为低电平时,将所述CPU810输出的脉冲信号保持为低电平信号。本发明实施例中,所述标准时钟信号与所述计数器芯片830的输入计数时钟信号的频率为1Hz。由此可见,通过应用本发明的技术方案,通过CPU输出的脉冲信号生成计数器计数清零的控制信号,RTC芯片产生标准时钟信号实现计数器计数以及对看门狗芯片喂狗;当CPU不能在预定周期内输出脉冲信号以使所述计数器芯片的计数清零,则触发生成使RTC芯片不对看门狗芯片进行喂狗的控制信号,从而触发看门狗芯片输出复位电平,进而能够在没有可编程逻辑器件的条件下CPU进行延时“喂狗”,实现方法简单且节约了产品的生产制造成本。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本发明各个实施场景所述的方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。