嵌入式软件系统故障检测恢复方法和系统的利记博彩app

文档序号:9787265阅读:1153来源:国知局
嵌入式软件系统故障检测恢复方法和系统的利记博彩app
【技术领域】
[0001]本发明涉及故障检测技术领域,特别是涉及一种嵌入式软件系统故障检测恢复方法和系统。
【背景技术】
[0002]嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造—嵌入式系统软件—嵌入式电子设备开发、制造。嵌入式软件广泛应用于国防、工控、家用、商用、办公、医疗等领域。
[0003]传统的嵌入式软件故障检测及恢复方法,一般是在某个循环程序或中断程序中周期性的进行“喂狗”操作,当软件系统出现故障,超过一定时间没有“喂狗”时,硬件看门狗启动,对CPU进行复位,软件系统重新运行。而在实时多任务系统中,各任务程序独立完成不同的功能,当系统中任何一个任务运行出现故障时,都会引起整个软件系统重新启动,可能会带来严重后果。此外,当软件系统某一功能模块出现故障时,只要硬件看门狗的“喂狗”程序可以正常运行,软件系统就不会重启,这时软件系统就处于带病运行状态,会导致某些功能失效或其它意想不到的后果。传统的嵌入式软件故障检测及恢复方法存在可靠性低的缺点。

【发明内容】

[0004]基于此,有必要针对上述问题,提供一种可靠性高的嵌入式软件系统故障检测恢复方法和系统。
[0005]—种嵌入式软件系统故障检测恢复方法,包括以下步骤:
[0006]实时对嵌入式软件系统的多个应用任务进行监控,检测是否存在应用任务出现故障;
[0007]若是,则对出现故障的应用任务进行重启;
[0008]检测所述嵌入式软件系统是否出现任务调度故障;
[0009]在检测到所述嵌入式软件系统出现任务调度故障时,对所述嵌入式软件系统进行故障恢复。
[0010]一种嵌入式软件系统故障检测恢复系统,包括:
[0011]任务监控模块,用于实时对嵌入式软件系统的多个应用任务进行监控,检测是否存在应用任务出现故障;
[0012]任务重启模块,用于在应用任务出现故障时,对出现故障的应用任务进行重启;
[0013]调度检测模块,用于检测所述嵌入式软件系统是否出现任务调度故障;
[0014]故障恢复模块,用于在检测到所述嵌入式软件系统出现任务调度故障时,对所述嵌入式软件系统进行故障恢复。
[0015]上述嵌入式软件系统故障检测恢复方法和系统,实时对嵌入式软件系统的多个应用任务进行监控,检测是否存在应用任务出现故障,并对出现故障的应用任务进行重启。检测嵌入式软件系统是否出现任务调度故障,并在检测到嵌入式软件系统出现任务调度故障时,对嵌入式软件系统进行故障恢复。通过实时监控嵌入式软件系统的各应用任务的运行情况,当检测到某一应用任务出现故障时重启应用任务来恢复软件系统到正常状态运行。检测嵌入式软件系统的任务调度是否失效,若任务调度失效则对嵌入式软件系统进行故障恢复,以达到软件系统整体恢复的目的。不仅可以检测出实时多任务系统中的局部软件故障和整体的软件系统故障,并且在软件系统出现故障时可以自动恢复软件系统到正常运行状态,实现了有选择性的软件故障检测和恢复,检测范围更全面、无死角,且简单可靠。
【附图说明】
[0016]图1为一实施例中嵌入式软件系统故障检测恢复方法的流程图;
[0017]图2为另一实施例中嵌入式软件系统故障检测恢复方法的流程图;
[0018]图3为一实施例中嵌入式软件系统故障检测恢复系统的结构图;
[0019]图4为另一实施例中嵌入式软件系统故障检测恢复系统的结构图。
【具体实施方式】
[0020]一种嵌入式软件系统故障检测恢复方法,适用于对实时多任务嵌入式软件系统进行故障检测和恢复。如图1所示,上述方法包括以下步骤:
[0021]步骤S120:实时对嵌入式软件系统的多个应用任务进行监控,检测是否存在应用任务出现故障。实时对嵌入式软件系统的各应用任务进行检测,监控各应用任务的运行情况,当实时多任务系统中的某一应用任务未在设定时间内作出反应时,则可判定为此应用任务运行出现故障。若检测到应用任务出现故障,则进行步骤S130;若否,可返回步骤S120,继续对应用任务进行监控,也可直接进行步骤S140,进行任务调度故障检测。本实施例中在步骤S120未检测到应用任务出现故障时进行步骤S140。在其中一个实施例中,具体可通过软件看门狗模块对应用任务进行监控。步骤SI 20包括步骤122和步骤124。
[0022]步骤122:通过嵌入式软件系统的实时多任务系统中预设的监控任务,实时接收实时多任务系统中各应用任务发送的软件喂狗信号。可预先在实时多任务系统中建立一个运行优先级最高的任务作为监控任务,通过监控任务对各应用任务进行监控,实时接收各应用任务发送的软件喂狗信号。
[0023]具体以对DMP300C保护测控装置的软件系统进行故障检测和恢复为例,软件系统的调度器采用实时内核对各应用任务进行调度。应用任务在程序初始化后申请全局资源,包括内存、文件等。应用任务调用软件看门狗模块的ResetTaskWtd函数复位软件看门狗模块的定时计数器,持续发送软件喂狗信号至软件看门狗模块进行“喂狗”,同时应用任务执行相应的功能流程。
[0024]步骤124:通过监控任务提取在预设时间内未发出软件喂狗信号的应用任务作为出现故障的应用任务。预设时间的具体取值范围可根据实际情况调整,监控任务每10ms周期性的检测各应用任务是否在预设时间内调用了 TerminateTask函数对软件看门狗进行了复位,如果应用任务超出预设时间没有及时调用TerminateTask函数,则认为此应用任务出现故障。
[0025]步骤S130:对出现故障的应用任务进行重启。若检测到应用任务出现故障,则通过软件看门狗模块对出现故障的应用任务进行重启,来恢复软件系统到正常状态运行。在其中一个实施例中,步骤SI30包括132至步骤136。
[0026]步骤132:通过监控任务释放出现故障的应用任务所占资源。具体可调用出现超时的应用任务的TerminateTask回调函数,释放应用任务占用的资源。
[0027]步骤I34:通过监控任务删除出现故障的应用任务。具体可调用实时内核的TaskDel函数删除超时的应用任务。
[0028]步骤136:通过监控任务重新创建出现故障的应用任务。具体可调用实时内核的TaskCreate函数重新创建出现超时的应用任务。
[0029]通过软件看门狗模块对应用任务监控,并对检测到出现故障的应用任务进行重启,以达到有选择性的恢复局部故障的目的。
[0030]步骤S140:检测嵌入式软件系统是否出现任务调度故障。当软件系统故障较严重时,可能会使实时操作系统内核的任务调度失效,即出现任务调度故障,导致整个软件系统停止运行。若未检测到应用任务,或者对出现故障的应用任务进行重启之后,对嵌入式软件系统进行任务调度故障检测,判断是否存在整体软件系统故障。
[0031]具体地,任务调度故障可包括两种情况:1、监控任务得不到执行,在检测到应用任务出现故障时无法对应用任务进行重启。2、监控任务在运行但应用任务得不到执行,这种情况下监控任务会检测出其它应用任务出现运行超时的情况,并对其它应用任务进行重启,尝试恢复其它应用任务的运行,但此时因调度器已经出现故障,其它应用任务虽然重启但是仍然分配不到CPU的执行时间。
[0032]对应地,在其中一个实施例中,步骤S140包括步骤142和/或步骤144。
[0033]步骤142:检测在设定时间内是否接收到监控任务发送的硬件喂狗信号;若否,则嵌入式软件系统出现任务调度故障。设定时间的具体取值范围同样可根据实际情况调整,针对监控任务得不到执行这一情况,具体可通过硬件看门狗对监控任务进行监控,使监控任务定期对硬件看门狗装置进行“喂狗”操作,如果监测任务未在设定时间内发送硬件喂狗信号,则说明监控任务本身没有运行,在检测到应用任务出现故障时无法对应用任务进行重启。此时可认为嵌入式软件系统出现任务调度故
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1