一种嵌入式系统全程喂狗策略及实现方法技术方案

技术编号:30900952 阅读:23 留言:0更新日期:2021-11-22 23:44
本发明专利技术涉及一种嵌入式系统全程喂狗策略及实现方法,所述喂狗策略及实现方法包括:1)Bootloader阶段:采用Uboot在Boot1oader阶段,将看门狗喂狗时间间隔更改为8s;2)Linux内核阶段:在内核启动加载看门狗时,更改看门狗寄存器,将看门狗超时时间更改为2s;3)程序运行阶段:多线程系统中,软件看门狗来监测多线程是否正常运行。本发明专利技术提供一种嵌入式系统全程喂狗策略及实现方法,该方法简单可行,在嵌入式系统的全过程中都可以实现看门狗监听的策略,提高了系统可靠性。提高了系统可靠性。

【技术实现步骤摘要】
一种嵌入式系统全程喂狗策略及实现方法


[0001]本专利技术涉及嵌入式系统
,具体是指一种嵌入式系统全程喂狗策略及实现方法。

技术介绍

[0002]在嵌入式系统中,为了使系统在异常情况下能自动恢复,一般都会引入看门狗。看门狗其实就是一个计数器,当看门狗启动后,计数器开始自动计数,经过一定时间计数器溢出就会对CPU产生一个复位信号使系统重启。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零也即喂狗,不让复位信号产生。
[0003]操作系统启动过程中与单片机不同,单片机启动快,系统启动和系统程序运行时,看门狗设置超时时间一致,也不会影响系统正常启动运行。但是当前,由于操作系统启动时加载时间较长,如果将系统启动和系统程序运行时看门狗超时时间设置为统一值时,可能会导致系统还未完全启动,看门狗超时时间已到,系统被复位的情况。在系统启动过程中增加喂狗操作又非常复杂,实现起来过于困难。如果不采取特殊措施,操作系统则会在启动加载过程中复位,这样Linux操作系统永远无法启动加载成功。为了解决这个问题,通常有两种方案:将看门狗的超时时间增长;在系统启动过程中将看门狗设成无效。以上方案要么无法及时解决系统在运行过程中出现的错误,要么无法解决嵌入式系统在操作系统启动阶段的失效问题,降低了系统可靠性。
[0004]因此,本专利技术提出了一种嵌入式系统全程启用看门狗的策略及实现方法,从uboot、内核到应用阶段都启用看门狗。

技术实现思路

[0005]本专利技术要解决的技术问题是,提供一种嵌入式系统全程喂狗策略及实现方法,该方法简单可行,在嵌入式系统的全过程中都可以实现看门狗监听的策略,提高了系统可靠性。
[0006]为解决上述技术问题,本专利技术提供的技术方案为:一种嵌入式系统全程喂狗策略及实现方法,所述喂狗策略及实现方法包括:
[0007]1)Bootloader阶段:采用Uboot在Boot1oader阶段,将看门狗喂狗时间间隔更改为8s;
[0008]2)Linux内核阶段:在内核启动加载看门狗时,更改看门狗寄存器,将看门狗超时时间更改为2s;
[0009]3)程序运行阶段:多线程系统中,软件看门狗来监测多线程是否正常运行,包括如下操作:
[0010]S1、在主程序中首先创建一个监控线程:每个需要软件看门狗保护的线程均进行注册,监控线程将注册过的线程维护在链表中,同时在循环中等待每个注册过的线程的喂狗事件;
[0011]S2、若在规定超时时间内某个线程没有喂狗则打印出线程名称,并重启线程,若该线程重启次数超过5次,认为程序异常,这时候软件将发送reboot指令重启系统;
[0012]S3、在线程维护链表中,添加注册硬件看门狗线程:硬件看门狗线程,打开硬件看门狗,并在内核设置的超时时间内定时去喂硬件狗,软件狗和硬件狗同时监测;
[0013]S4、硬件看门狗线程监听整个系统和应用程序,当出现系统异常或者某个线程溢出等情况时,硬件看门狗动作,系统复位;
[0014]S5、链表中的N个线程,在规定的各自的超时时间内喂软件狗,各个线程相互独立;
[0015]S6、如果监控线程自身出现故障,不能及时执行喂狗操作,看门狗自动复位重启。
[0016]进一步的,所述步骤1)Bootloader阶段的具体操作方法为:更改看门狗时钟配置寄存器,将看门狗超时时间设置为8s,超时时间会根据具体系统需求,更改为其他超时时间。
[0017]进一步的,所述步骤2)Linux内核阶段的具体操作方法为:等到应用程序open/dev/watchdog时,硬件看门狗超时时间更改为2s,超时时间会根据具体系统需求,更改为其他超时时间。
[0018]进一步的,所述步骤3)程序运行阶段中每个线程可以根据需求灵活设置自己的看门狗超时时间。
[0019]进一步的,所述步骤3)程序运行阶段的实现方法为,主程序首先启动监控线程,然后依次启动N个被监控的线程,每一线程内都设置一个线程状态位,各个线程主循环中,对相应状态位进行置1操作;
[0020]将主线程注册到监测线程列表中,启动主线程,进入循环;
[0021]在循环中添加注册其他各个线程,主线程每隔M秒对各线程内的状态位进行检验并对自己的线程状态位置1;
[0022]查询N个线程状态位,如果全是1,则说明对应接受监控的线程正常运行,并对各个线程的状态位进行清除,等待线程正常运行过程中将状态位重新置1;
[0023]如果有任意一个状态位不是1,检测到对应的线程出现故障需要重启,这时重启该线程;如果该线程重启5次后,状态位仍然不是1,则发送reboot指令使系统复位重启。
[0024]进一步的,软件狗与硬件狗相互独立,双重监听。
[0025]本专利技术具有如下优点:本专利技术在uboot中将看门狗时间间隔更改为较长的时间(大于系统启动的时间),保证系统正常启动过程中看门狗不会因为超时而使系统复位。在内核加载看门狗驱动时,再将看门狗时间间隔更改为较短的时间,保证在系统运行时,可以及时发现并处理故障。应用系统运行过程中,启动软件和硬件看门狗,做到双重保证,使系统更加可靠。
[0026]本专利技术的喂狗策略及实现方法可以保证:如果系统正常工作,系统可以在小于看门狗的时间间隔内不断进行喂狗动作,看门狗的计数器不断清零,不产生复位信号;如果系统非正常工作,喂狗动作失效,看门狗的计数器在设置时间后溢出,对CPU产生复位信号使系统重启。系统运行过程中,如果硬件看门狗失效,软件看门狗也会监听系统是否在正常运行,如果有任务出现异常,软件看门狗将动作复位CPU。
[0027]本专利技术提出了一种嵌入式系统全程喂狗策略,包括硬件和软件实现方法。该方法有如下特点:看门狗应用简单,不需复杂的外围逻辑电路,成本低;系统全过程启用看门狗,
确保系统在任一阶段出现软件或硬件故障都能复位重启,系统可靠性得到提高。
具体实施方式
[0028]下面结合实施例对本专利技术做进一步的详细说明。
[0029](1)喂狗策略及实现
[0030]Bootloader阶段:
[0031]在Boot1oader阶段(本设计采用Uboot),将看门狗喂狗时间间隔更改为8s。具体做法是:更改看门狗时钟配置寄存器,将看门狗超时时间设置为8s(可以根据具体系统需求,更改为其他超时时间)。
[0032]Linux内核阶段:
[0033]在内核启动加载看门狗时,更改看门狗寄存器,将看门狗超时时间更改为2s。等到应用程序open/dev/watchdog时,硬件看门狗超时时间更改为2s(可以根据具体系统需求,更改为其他超时时间)。
[0034]程序运行阶段:
[0035]多线程系统中,当A线程一直喂狗时,B线程down掉是无法知晓的,这样无法有效监听多线程任务是否正常,需要软件看门狗来监测多线程是否正常运行。
[0036]在主程序中首先创建一个监控线程。每个需要本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式系统全程喂狗策略及实现方法,其特征在于,所述喂狗策略及实现方法包括:1)Bootloader阶段:采用Uboot在Boot1oader阶段,将看门狗喂狗时间间隔更改为8s;2)Linux内核阶段:在内核启动加载看门狗时,更改看门狗寄存器,将看门狗超时时间更改为2s;3)程序运行阶段:多线程系统中,软件看门狗来监测多线程是否正常运行,包括如下操作:S1、在主程序中首先创建一个监控线程:每个需要软件看门狗保护的线程均进行注册,监控线程将注册过的线程维护在链表中,同时在循环中等待每个注册过的线程的喂狗事件;S2、若在规定超时时间内某个线程没有喂狗则打印出线程名称,并重启线程,若该线程重启次数超过5次,认为程序异常,这时候软件将发送reboot指令重启系统;S3、在线程维护链表中,添加注册硬件看门狗线程:硬件看门狗线程,打开硬件看门狗,并在内核设置的超时时间内定时去喂硬件狗,软件狗和硬件狗同时监测;S4、硬件看门狗线程监听整个系统和应用程序,当出现系统异常或者某个线程溢出等情况时,硬件看门狗动作,系统复位;S5、链表中的N个线程,在规定的各自的超时时间内喂软件狗,各个线程相互独立;S6、如果监控线程自身出现故障,不能及时执行喂狗操作,看门狗自动复位重启。2.根据权利要求1所述的一种嵌入式系统全程喂狗策略及实现方法,其特征在于:所述步骤1)Bootloader阶段的具体操作方法为:更改看门狗时钟配置寄存器,将看门狗超时时间设置为8...

【专利技术属性】
技术研发人员:韩晓明
申请(专利权)人:石家庄开发区天远科技有限公司
类型:发明
国别省市:

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

1