首页> 中国专利> 嵌入式系统中应用程序的异常恢复方法和装置

嵌入式系统中应用程序的异常恢复方法和装置

摘要

本发明涉及嵌入式系统中应用程序的异常恢复方法和装置,包括:1)当嵌入式系统内核启动后,执行应用程序和监视程序;2)监视程序检测故障,发现故障后,从第一备份程序恢复应用程序;从第一备份程序恢复应用程序时,删除第一备份程序;第一备份程序是当监视程序判断当前应用程序能够正常运行后,如果第一备份程序不存在,由当前正确运行的应用程序复制产生的。当嵌入式系统内核启动后,如果非易失存储器中的应用程序数据遭到损坏,则应用程序将出现无法运行、或者运行自检故障、或者进程通信交互故障,监视程序发现故障后,可以从备份程序中恢复应用程序,系统复位后可以重新恢复运行。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-05

    授权

    授权

  • 2015-03-11

    实质审查的生效 IPC(主分类):G06F11/14 申请日:20140627

    实质审查的生效

  • 2015-02-11

    公开

    公开

说明书

技术领域

本发明涉及一种嵌入式系统中应用程序备份的异常恢复方法和装置。

背景技术

嵌入式系统因其平台化的构架、开发资源丰富、调试简便,在各种个人消费产品、 家庭显示终端、工业控制终端中应用广泛。实际使用中,嵌入式系统的应用功能也往往 需要依据客户需求进行升级改进,或者在各种调试检测、维修维护中需要对应用程序进 行修改。中国发明专利《一种嵌入式linux系统软件安全远程升级的方法》(申请号: 201110209990.6)介绍了一种嵌入式系统应用软件安全升级方法。该方法通过设置升级 标志控制升级过程,在发现升级错误的过程中能够恢复系统,具体流程如图1所示。

然而,在实际调试测试过程中,除了升级过程出现错误导致的升级程序文件不正确 的情况之外,所升级的应用程序也可能与实际的硬件版本不兼容。此外,嵌入式系统通 常其程序存储在FLASH等非易失的存储器中,而实际程序运行是将代码搬移至RAM等 易失性的存储器中执行。非易失的存储器还将用于参数、用户数据存储,异常的电气信 号和电磁干扰有可能局部破坏非易失的存储器中的应用程序数据。

也就是说,应用程序的可靠性问题不仅仅存在于升级过程中。如果没有相应的措施, 现场运行的终端因应用程序错误发生彻底不能运行的情况,在可靠性要求较高的系统中 是不允许的。

发明内容

本发明的目的是提供嵌入式系统应用程序的异常恢复方法和装置,用以解决应用程 序可靠性差的问题。

为实现上述目的,本发明嵌入式系统中应用程序的异常恢复方法的方案包括如下步 骤:1)当嵌入式系统内核启动后,执行应用程序和监视程序;2)监视程序检测故障, 发现故障后,从第一备份程序恢复应用程序;从第一备份程序恢复应用程序时,删除第 一备份程序;第一备份程序是当监视程序判断当前应用程序能够正常运行后,如果第一 备份程序不存在,由当前正确运行的应用程序复制产生的。

步骤1)中,嵌入式系统内核启动后,检查应用升级程序是否存在,如果应用升级 程序存在,则用第一备份程序替代第二备份程序,再删除第一备份程序,并且应用升级 程序替代当前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果 应用升级程序不存在,则直接执行应用程序和监视程序。

步骤2)中,发现故障后,从第一备份程序或第二备份程序恢复应用程序;从第一 备份程序或第二备份程序恢复应用程序时,删除相应的备份程序。

步骤2)中,所述故障包括:应用程序出现无法运行、或者运行自检故障、或者进 程通信交互故障;具体过程包括:

应用程序启动后,应用程序执行初始化和自检,如果应用程序自检判断异常,则应 用程序进入等待程序恢复的处理,不使能与监视程序之间的进程通信端口;如果应用程 序自检判断正常,则应用程序启动它与监视程序之间的进程通信端口;

同时,监视程序启动后,完成自身初始化,完成设定的等待应用程序初始化和自检 的延时,启动它与应用程序之间的进程通信端口;

在设定的启动检测时间内,监视程序以设定的频率尝试与应用程序进行通信交互, 如果完成正常通信交互,则应用程序关闭与监视程序之间的进程通信端口,进入正常运 行状态,同时监视程序结束;如果应用程序和监视程序通信交互异常,则应用程序进入 等待程序恢复的处理,监视程序执行后续步骤。

应用程序启动后,在其执行初始化和自检之前,应用程序检查监视程序是否存在, 如果监视程序不存在,则从应用程序代码中释放监视程序,而后复位系统;如果监视程 序存在,则继续执行。

应用程序和监视程序完成正常通信后,监视程序在结束之前检查备份程序1是否存 在,如果第一备份程序不存在,则监视程序将应用程序复制产生第一备份程序,然后监 视程序结束;如果第一备份程序存在,则监视程序直接结束。

本发明嵌入式系统中应用程序的异常恢复装置的方案包括如下模块:模块1)当嵌 入式系统内核启动后,执行应用程序和监视程序;模块2)监视程序检测故障,发现故 障后,从第一备份程序恢复应用程序;从第一备份程序恢复应用程序时,删除第一备份 程序;第一备份程序是当监视程序判断当前应用程序能够正常运行后,如果第一备份程 序不存在,由当前正确运行的应用程序复制产生的。

模块1)中,嵌入式系统内核启动后,检查应用升级程序是否存在,如果应用升级 程序存在,则用第一备份程序替代第二备份程序,再删除第一备份程序,并且应用升级 程序替代当前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果 应用升级程序不存在,则直接执行应用程序和监视程序。

模块2)中,发现故障后,从第一备份程序或第二备份程序恢复应用程序;从第一 备份程序或第二备份程序恢复应用程序时,删除相应的备份程序。

本发明方法的有益之处在于能够保证原始的应用程序恢复运行。具体而言,当嵌入 式系统内核启动后,如果非易失存储器中的应用程序数据遭到损坏,则应用程序将出现 无法运行、或者运行自检故障、或者进程通信交互故障,监视程序发现故障后,可以从 备份程序中恢复应用程序,系统复位后可以重新恢复运行。

如果采用本发明方法对应用程序升级,应用升级程序能够正常运行,则因为升级前 第一备份程序不存在,所以监视程序能够依据正确运行的应用升级程序,复制产生出第 一备份程序。同时,因为应用升级程序已经删除,所以不会出现反复升级。如果应用升 级程序不能够正常运行,监视程序将从第二备份程序恢复原始的应用程序,重新复位后 实现系统的恢复运行。

此外,当监视程序不存在时,应用程序会能够从应用程序代码中释放监视程序,避 免了监视程序的单独安装。

附图说明

图1是现有技术的一种嵌入式系统应用程序安全升级方法的流程图;

图2是本发明的实施例1的一种异常恢复方法流程图。

具体实施方式

下面结合附图对本发明做进一步详细的说明。

注意:技术方案中第一备份程序、第二备份程序分别对应具体实施方式和说明书附 图中的备份程序1、备份程序2。应用程序进程用于执行当前应用程序,当前应用程序包 括应用程序和应用升级程序,比如:下文步骤1中“应用升级程序替代当前的应用程 序……而后执行应用程序和监视程序”,执行应用程序的是被替换为应用程序的原应用 升级程序。关于第一个程序替代第二个程序、再删除第一个程序的操作,当第一个程序 和第二个程序在相同目录时,通过删除第二个程序、再将第一个程序文件更名为第二个 程序文件的名称实现。

实施例1

如图2是实施例1的具体流程图,本发明的方法包括如下步骤:

步骤1:嵌入式系统在内核启动后,检查应用升级程序是否存在,如果应用升级程 序存在,则用备份程序1替代备份程序2,再删除备份程序1,并且应用升级程序替代当 前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果应用升级程 序不存在,则直接执行应用程序和监视程序;

步骤2:应用程序启动后,应用程序执行初始化和自检,如果应用程序自检判断异 常,则应用程序进入等待程序恢复的处理,不使能与监视程序之间的进程通信端口;如 果应用程序自检判断正常,则应用程序启动它与监视程序之间的进程通信端口;

步骤3:与步骤2同时,监视程序启动后,完成自身初始化,完成设定的等待应用程 序初始化和自检的延时,启动它与应用程序之间的进程通信端口;

步骤4:在设定的启动检测时间内,监视程序以设定的频率尝试与应用程序进行通 信交互,如果完成正常通信交互,则应用程序关闭与监视程序之间的进程通信端口,进 入正常运行状态,同时监视程序结束;如果应用程序和监视程序通信交互异常,则应用 程序进入等待程序恢复的处理,监视程序执行后续步骤;

步骤5:如果监视程序和应用程序通信交互异常,则监视程序检查备份程序1是否存 在,如果备份程序1存在,则用备份程序1替代当前应用程序,再删除备份程序1,而后 复位系统;如果备份程序1不存在,且备份程序2存在,则用备份程序2替代当前应用程 序,再删除备份程序2,而后复位系统;如果备份程序1和备份程序2都不存在,则应用 程序恢复失败。

其中,步骤2——步骤4属于故障检测的具体过程,能够判断出应用程序出现无法运 行、或者运行自检故障、或者进程通信交互故障,监视程序发现故障后,进行恢复。

备份程序1是当监视程序判断当前应用程序能够正常运行后,如果备份程序1不存 在,由当前正确运行的应用程序自动复制产生的,如图2监视程序进程中通信正常时的 流程。备份程序2是在内核启动时,若有应用升级程序时产生,如图2内核进程。

举例来说,在一个LINUX嵌入式系统的终端中,以上步骤可以具体描述为:

步骤1:嵌入式系统在内核启动后,将运行启动脚本。在该脚本中,首先检查是否 存在应用升级程序,如果应用升级程序存在/UPDATE/SG800APP,则删除 /BACKUP/SG800APP.old,再将备份程序/BACKUP/SG800APP.bak更名为 /BACKUP/SG800APP.old,并且应用升级程序/UPDATE/SG800APP替代当前的应用程序 /SG800APP,再删除应用升级程序/UPDATE/SG800APP,而后执行应用程序/SG800APP和监 视程序/APP_TEST;如果应用升级程序/UPDATE/SG800APP不存在,则直接执行应用程序 /SG800APP和监视程序/APP_TEST。其中,应用升级程序是在系统正常运行时通过应用升 级通信接口传输应用升级程序数据,最终将应用升级程序以执行文件形式存入 /UPDATE/SG800APP。

步骤2:应用程序启动/SG800APP后,应用程序/SG800APP首先检查监视程序 /APP_TEST是否存在,如果监视程序/APP_TEST不存在,则从应用程序/SG800APP代码中 释放监视程序/APP_TEST,而后系统复位;如果监视程序/APP_TEST存在,则/SG800APP 继续执行初始化和自检。如果/SG800APP自检判断异常,则/SG800APP进入等待程序恢复 的处理,不使能与监视程序/APP_TEST之间的进程通信端口;如果应用程序/SG800APP自 检判断正常,则应用程序/SG800APP启动它与监视程序/APP_TEST之间的进程通信端口。 其中,进程通信端口通过调用LINUX系统的进程间通信模块(IPC)实现。

步骤3:与步骤2同时,监视程序/APP_TEST启动后,完成自身初始化,完成设定的 等待应用程序/SG800APP初始化和自检的延时,启动它与应用程序/SG800APP之间的IPC 进程通信端口。

步骤4:在启动检测时间15s内,监视程序/APP_TEST每20ms尝试与应用程序 /SG800APP通信一次。如果应用程序/SG800APP有正确回复,则完成一次通信应答。连续 完成3次通信应答,则判断监视程序/APP_TEST和应用程序/SG800APP的通信交互成功。 如果完成正常通信交互,则应用程序/SG800APP关闭与监视程序/APP_TEST之间的进程通 信端口,进入正常运行,同时监视程序/APP_TEST检查备份程序/BACKUP/SG800APP.bak 是否存在。如果备份程序/BACKUP/SG800APP.bak不存在,则监视程序/APP_TEST将应用 程序/SG800APP复制产生备份程序/BACKUP/SG800APP.bak,然后监视程序/APP_TEST结 束;如果备份程序/BACKUP/SG800APP.bak存在,则监视程序/APP_TEST直接结束。如果 应用程序/SG800APP和监视程序/APP_TEST通信异常,则应用程序/SG800APP进入等待程 序恢复的处理,监视程序/APP_TEST执行后续步骤。

步骤5:如果监视程序/APP_TEST和应用程序/SG800APP通信异常,则监视程序 /APP_TEST检查备份程序/BACKUP/SG800APP.bak是否存在。如果备份程序 /BACKUP/SG800APP.bak存在,则用备份程序/BACKUP/SG800APP.bak替代当前应用程序 /SG800APP,再删除备份程序/BACKUP/SG800APP.bak,而后复位系统;如果备份程序 /BACKUP/SG800APP.bak不存在,且备份程序/BACKUP/SG800APP.old存在,则用备份程序 /BACKUP/SG800APP.old替代当前应用程序/SG800APP,再删除备份程序 /BACKUP/SG800APP.old,而后复位系统;如果备份程序/BACKUP/SG800APP.bak和备份程 序/BACKUP/SG800APP.old都不存在,则应用程序/SG800APP恢复失败。

实施例2

实施例2实际上是实施例1的简化:不进行升级,即不涉及应用升级程序的情况下, 当嵌入式系统内核启动后,如果非易失存储器中的应用程序数据遭到损坏,则应用程序 将出现无法运行、或者运行自检故障、或者进程通信交互故障,监视程序发现故障后, 可以从备份程序1或备份程序2恢复应用程序,系统复位后可以重新恢复运行。从备份程 序1或备份程序2恢复应用程序时,相应的备份程序将被删除,以免备份程序损坏,出现 反复的恢复操作,导致反复重启和非易失存储器失效。

备份程序1是当监视程序判断当前应用程序能够正常运行后,如果备份程序1不存 在,由当前正确运行的应用程序自动复制产生的,如图2监视程序进程中通信正常时的 流程。

对实施例2没有单独附图,可以参考图2进行理解。由于不涉及升级程序,在嵌入式 内核启动后,直接执行应用程序和监视程序。基本流程为:内核启动——执行应用程序 和监视程序;监视程序启动——判断是否出现故障(涉及实施例1步骤2、步骤3、步骤4 的内容,主要是通过应用程序自检、通信接口功能判断是否有故障产生)——若有故障 则从备份程序1或备份程序2恢复应用程序。在之前没有经历升级的情况下,不会有备份 程序2产生,所以必然从备份程序1恢复应用程序;若之前经历过升级,则可能从备份程 序2恢复应用程序。

以上给出了具体的实施方式,但本发明不局限于所描述的实施方式。本发明的基本 思路在于上述基本方案,对本领域普通技术人员而言,根据本发明的教导,设计出各种 变形的模型、公式、参数并不需要花费创造性劳动。在不脱离本发明的原理和精神的情 况下对实施方式进行的变化、修改、替换和变型仍落入本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号