看门狗控制方法技术

技术编号:2850765 阅读:315 留言:0更新日期:2012-04-11 18:40
本发明专利技术看门狗控制方法包括如下进程:1)系统按设定的中断时间间隔发生中断,该中断触发中断服务程序;2)读取时间变量,系统每发生一次中断,该时间变量值增加一个中断时间间隔;3)比较时间变量值和设定的系统最大喂狗时间间隔,当时间变量值不大于最大喂狗时间间隔时,中断服务程序喂狗;当时间变量值大于最大喂狗时间间隔时,中断服务程序停止喂狗,看门狗模块使系统复位;4)当应用程序喂狗时,时间变量值清零。由于最大喂狗时间间隔可以根据情况进行设定,可以设置较长的时间间隔,避免了由于应用程序喂狗阻塞而不能及时喂狗而引起的复位问题,允许喂狗任务在较长的时间才能调度到。

【技术实现步骤摘要】

本专利技术涉及一种,尤其是关于一种应用于由采用PCB印刷电路板,CPU芯片和其它电子器件组合成的单板系统的。
技术介绍
在单板电路设计中,经常要利用看门狗来监控应用程序的运行,提高系统的可靠性。常用的看门狗芯片的最大喂狗间隔时间T都比较短而且不可设固定,以常用的看门狗芯片ADM706/MAX706为例,最大喂狗间隔时间T为1.6秒左右,所以在应用程序正常工作时,应用程序的喂狗任务必须保证在1.6秒以内喂狗一次,否则会使CPU复位。对于简单的单板系统,由于应用程序很简单,喂狗任务能够保证在很短的时间内喂狗。然而,对于一些高级的单板系统,其不仅采用了Linux等操作系统,也引入了多进程,使应用程序很复杂,容易造成喂狗任务无法在1.6秒内实现喂狗。比如在如下几种情况时1)应用程序很大,加载应用程序需要2秒甚至更长的时间。而在程序加载过程中是无法喂狗的(喂狗任务还没有开始运行);2)在单板系统中,常采用JFFS2文件系统来管理FLASH空间。当某个任务写FLASH时,有时候会阻塞别的任务(包括喂狗任务)长达10秒以上;3)CPU负担很重时,喂狗任务不能在1.6秒内调度。上述三种情况时,由于ADM706等常用看门狗芯片的最大喂狗间隔时间太短,有时喂狗任务不能保证及时喂狗,从而导致程序正常运行时系统也复位,失去了看门狗的意义。
技术实现思路
本专利技术的目的在于提供一种能避免由于喂狗任务阻塞而不能及时喂狗而造成系统复位的。本专利技术的目的是这样实现的该用以通过看门狗模块对系统的应用程序进行监控,它包括如下进程1)系统按设定的中断时间间隔发生中断,该中断触发中断服务程序;2)读取时间变量,系统每发生一次中断,该时间变量值增加一个中断时间间隔;3)比较时间变量值和设定的系统最大喂狗时间间隔,当时间变量值不大于最大喂狗时间间隔时,中断服务程序喂狗;当时间变量值大于最大喂狗时间间隔时,中断服务程序停止喂狗,看门狗模块使系统复位;4)当应用程序喂狗时,时间变量值清零。所述的中断时间间隔小于或等于看门狗模块的最大喂狗时间。所述的中断在系统中具有高优先级。所述的应用程序设定最大喂狗时间间隔。所述的最大喂狗时间间隔是中断时间间隔的正整数倍。所述的应用程序正常运行时,应用程序第n次喂狗的时间为Tn,且(n-1)*最大喂狗时间间隔<Tn<n*最大喂狗时间间隔,n为自然数。所述的看门狗模块采用型号为ADM706或MAX706的看门狗芯片。与现有技术相比,本专利技术具有如下优点由于最大喂狗时间间隔可以根据情况进行设定,可以设置较长的时间间隔,避免了由于应用程序喂狗阻塞而不能及时喂狗而引起的复位问题,允许喂狗任务在较长的时间才能调度到,同时在系统发生故障而不能在设定的最大喂狗时间间隔内喂狗时,中断服务程序能使看门狗模块发出复位信号,进而使系统复位。附图说明图1是本专利技术在系统发生一次中断时中断服务程序的流程图。具体实施方式请参阅图1,本专利技术是用以对应用程序进行监控,从而当应用程序的喂狗任务没有在设定的最大喂狗时间间隔内喂狗时,看门狗模块自行给出复位信号使系统复位。该包括如下进程1)系统按设定的中断时间间隔发生中断;中断触发中断服务程序;2)读取时间变量,系统每发生一次中断则时间变量值增加一个中断时间间隔;3)比较时间变量值和设定的最大喂狗时间间隔,当时间变量值不大于最大喂狗时间间隔时,中断服务程序自行喂狗,当时间变量值大于最大喂狗时间间隔时,中断服务程序停止喂狗,系统复位;4)应用程序的喂狗任务喂狗时,时间变量值清零并重新计数。最大喂狗时间间隔FEED_INTERVAL可以由应用程序设定,其可以为大于0的整数秒,如3秒、5秒或10秒等。看门狗模块可以为现有的看门狗芯片,如型号为ADM706或MAX706的看门狗芯片,各个看门狗芯片自身都具有最大喂狗时间T,即在该最大喂狗时间T内如应用程序不喂狗,则看门狗芯片会给出复位信号而使系统复位。中断时间间隔表示系统发生相邻两次中断之间的时间间隔,其可以根据系统具体要求进行设定,如可设置成每0.5秒或每1秒发生1次中断,但中断时间间隔应当小于看门狗芯片自身的最大喂狗时间T。在本实施方式中,看门狗模块为型号为ADM706的看门狗芯片,该看门狗芯片的最大喂狗时间T为1.6秒,最大喂狗时间间隔FEED_INTERVAL为5秒,中断时间间隔为1秒,时间变量TIME的初始值为0。当应用程序正常运行时,系统每隔1秒钟定时中断一次,中断触发中断服务程序,则时间变量TIME值增加1,当TIME≤FEED_INTERVAL时,中断服务程序自行喂狗,即在一个最大喂狗时间间隔FEED_INTERVAL内,中断服务程序喂狗五次,在该FEED_INTERVAL之内,只要应用程序的喂狗任务喂狗,则时间变量TIME就会被清零并重新开始计数。举例来说,系统在第1秒发生中断,则TIME值由0变为1,如应用程序在第1.5秒喂狗,则TIME被清零,当系统在第2秒发生中断时,TIME由0变为1。当应用程序不能正常喂狗时,每发生1次中断,时间变量值加1,中断服务程序喂狗1次,当系统连续发生第6次中断而喂狗任务均没有喂狗时,TIME值变为6,使TIME>FEED_INTERVAL,则中断服务程序停止喂狗,看门狗模块发出复位信号使系统重启。由于每1秒钟中断服务程序就会喂狗一次,该中断时间间隔小于看门狗芯片自身的最大喂狗时间T,所以看门狗芯片不会因系统不能及时喂狗而使系统在正常运行时被复位。在上述的中断服务程序运行过程中,应用程序正常运行时,由于系统每发生1次中断,中断服务程序就喂狗1次,所以应用程序的喂狗任务只需要保证在每一个最大喂狗时间间隔FEED_INTERVAL内喂狗一次即可,而不需要在最大喂狗时间T内(对于ADM706芯片,该T为1.6秒)喂狗,设喂狗任务第n次喂狗的时间为Tn,则Tn至少需要满足如下条件FEED_INTERVAL*(n-1)<Tn<FEED_INTERVAL*n,n为自然数。中断在系统中具有非常高的优先级,不会被阻塞,能够及时进行调度,如在linux系统中,中断能在1毫秒以内调度到;在没有操作系统或者采用实时操作系统时,中断可以在100微秒甚至更短时间以内调度到。由于每次应用程序喂狗时,TIME清零,系统每秒钟发生中断一次,每次中断发生时,TIME自动加1,因此,TIME的值就代表应用程序上次喂狗到现在已经过去多少秒,即TIME值表示应用程序有多长时间没有喂狗,当时间变量TIME大于预先设定的最大喂狗间隔时间FEED_INTERVAL时,说明应用程序没有在规定的时间内喂狗,系统可能发生故障,中断服务程序不再喂狗,系统将复位。由于最大喂狗时间间隔可以根据情况进行设定,可以设置较长的时间间隔,避免了由于应用程序喂狗阻塞而不能及时喂狗而引起的复位问题,允许喂狗任务在较长的时间才能调度到,同时在系统发生故障而不能在设定的最大喂狗时间间隔内喂狗时,中断服务程序停止喂狗,看门狗模块就会发出复位信号,进而使系统复位。本文档来自技高网...

【技术保护点】
一种看门狗控制方法,用以通过看门狗模块对系统的应用程序进行监控,其特征在于:它包括如下进程:1)系统按设定的中断时间间隔发生中断,该中断触发中断服务程序;2)读取时间变量,系统每发生一次中断,该时间变量值增加一个中断时间间隔;3)比较时间变量值和设定的系统最大喂狗时间间隔,当时间变量值不大于最大喂狗时间间隔时,中断服务程序喂狗;当时间变量值大于最大喂狗时间间隔时,中断服务程序停止喂狗,看门狗模块使系统复位;4)当应用程序喂狗时,时间变量值清零。

【技术特征摘要】
1.一种看门狗控制方法,用以通过看门狗模块对系统的应用程序进行监控,其特征在于它包括如下进程1)系统按设定的中断时间间隔发生中断,该中断触发中断服务程序;2)读取时间变量,系统每发生一次中断,该时间变量值增加一个中断时间间隔;3)比较时间变量值和设定的系统最大喂狗时间间隔,当时间变量值不大于最大喂狗时间间隔时,中断服务程序喂狗;当时间变量值大于最大喂狗时间间隔时,中断服务程序停止喂狗,看门狗模块使系统复位;4)当应用程序喂狗时,时间变量值清零。2.如权利要求1所述的看门狗控制方法,其特征在于所述的中断时间间隔小于或等于看门狗模块的最大喂狗时间间隔。3.如...

【专利技术属性】
技术研发人员:严慧勇李熹毛福华
申请(专利权)人:艾默生网络能源有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1