[发明专利]一种基于嵌入式系统的喂狗方法及装置在审
申请号: | 201410045951.0 | 申请日: | 2014-02-08 |
公开(公告)号: | CN103885847A | 公开(公告)日: | 2014-06-25 |
发明(设计)人: | 凌兴锋;黄健安 | 申请(专利权)人: | 京信通信系统(中国)有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 张恺宁 |
地址: | 510663 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 嵌入式 系统 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于嵌入式系统的喂狗方法及装置。
背景技术
在嵌入式系统中,为了使系统在异常情况下能自动恢复,一般都会引入看门狗电路;看门狗电路其实就是一个计数器,当看门狗启动后,计数器开始自动计数,经过一定时间计数器溢出就会对微处理器产生一个复位信号使系统重启,当系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零,也即喂狗,不让复位信号产生。
看门狗分为硬件看门狗和软件看门狗,硬件看门狗是采用一个独立的定时器电路作为看门狗电路,应用程序在执行过程中每隔一定的时间通过微处理器的通用输入/输出(General Purpose Input Output,GPIO)管脚对该定时器进行喂狗操作,使看门狗不溢出,但是,如果程序出现异常跑飞,就不能及时对看门狗喂狗,这将导致看门狗溢出,产生复位信号,使微处理器复位,如图1所示,一般可以采用TPS3823芯片组成硬件看门狗电路;对于软件看门狗,是在微处理器内部实现的看门狗功能,也即以内部时钟取代外部硬件定时器,这种实现方式的缺点是:当微处理器本身异常时,内部时钟产生异常,看门狗无法正常工作,从而导致系统在异常状态下无法恢复,因此,在实际应用中,一般情况下多采用硬件看门狗。
针对引入Linux操作系统的嵌入式系统,看门狗的引入较好的保障了Linux操作系统的稳定运行,但同时也带来了一些需要解决的问题:看门狗电路监控的目标是系统正常启动后的应用程序,但是在应用程序正常工作之前,嵌入式系统有一个引导加载底层软件的过程,这个过程通常会占用二十几秒的时间,一般都超过看门狗的时间间隔,导致操作系统在加载过程中复位,永远无法加载成功。
为了解决嵌入式系统上电启动加载过程中看门狗溢出,产生复位信号,导致系统无法正常启动的问题,目前较常用的方法是,修改操作系统内核,将看门狗设成在操作系统内核启动过程中无效,在操作系统启动完成后再打开看门狗;但是,采用这种方法,若在操作系统启动阶段出现异常,将无法自动恢复,降低了系统的可靠性。
发明内容
本发明实施例提供一种基于嵌入式系统的喂狗方法及装置,用以解决在嵌入式系统上电启动加载过程中看门狗溢出,产生复位信号,导致系统无法正常启动的问题。
本发明实施例提供一种基于嵌入式系统的喂狗方法,该方法包括:
在操作系统启动过程中,监控当前的任务阶段;
在当前的任务阶段占用的时间长度大于硬件看门狗复位时间间隔时,周期性执行喂狗操作;其中,所述喂狗操作的执行周期小于所述看门狗复位时间间隔。
可选地,所述操作系统为linux操作系统;所述任务阶段为引导加载Bootloader的第二阶段中的任意一个任务阶段。
可选地,所述Bootloader的第二阶段中的各个任务阶段包括:闪存Flash读写阶段、循环冗余校验码(Cyclic Redundancy Check,CRC)校验阶段、循环等待阶段。
可选地,所述操作系统为linux操作系统;所述任务阶段为操作系统内核运行阶段中的任意一个任务阶段。
可选地,所述操作系统内核运行阶段中的各个任务阶段包括:通用输入/输出(General Purpose Input Output,GPIO)驱动加载成功之前的内核解压缩阶段、实时时钟(Real-Time Clock,RTC)驱动加载阶段、GPIO驱动加载阶段,GPIO驱动加载成功之后至看门狗Watchdog驱动加载成功之前的Watchdog驱动加载阶段,Watchdog驱动加载成功之后的内核加载根文件系统阶段、初始化阶段。
可选地,所述方法还包括:
在操作系统正常运行后,通过创建的任务监控线程周期性执行喂狗操作,并监控多个任务线程的运行状况;
在通过所述任务监控线程确定至少一个任务线程出现故障后,停止执行喂狗操作,以使看门狗产生复位信号。
可选地,所述监控多个任务线程的运行状况,包括:
通过所述任务监控线程周期性检测每个任务线程内设置的计数器的值;其中,每个任务线程在正常运行的情况下,将计数器的值按设定时间间隔加1,所述设定时间间隔小于所述任务监控线程检测每个任务线程内设置的计数器的值的检测周期;
若检测到至少一个任务线程内设置的计数器的值为0,则确定所述至少一个任务线程出现了故障;若检测到每个任务线程内设置的计数器的值都大于0,则确定各个任务线程都正常,同时,将各个任务线程内设置的计数器的值清零。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于京信通信系统(中国)有限公司,未经京信通信系统(中国)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410045951.0/2.html,转载请声明来源钻瓜专利网。