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

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

【技术领域】
[0001]本发明涉及一种嵌入式系统中应用程序备份的异常恢复方法和装置。

【背景技术】
[0002]嵌入式系统因其平台化的构架、开发资源丰富、调试简便,在各种个人消费产品、家庭显示终端、工业控制终端中应用广泛。实际使用中,嵌入式系统的应用功能也往往需要依据客户需求进行升级改进,或者在各种调试检测、维修维护中需要对应用程序进行修改。中国发明专利《一种嵌入式Iinux系统软件安全远程升级的方法》(申请号:201110209990.6)介绍了一种嵌入式系统应用软件安全升级方法。该方法通过设置升级标志控制升级过程,在发现升级错误的过程中能够恢复系统,具体流程如图1所示。
[0003]然而,在实际调试测试过程中,除了升级过程出现错误导致的升级程序文件不正确的情况之外,所升级的应用程序也可能与实际的硬件版本不兼容。此外,嵌入式系统通常其程序存储在FLASH等非易失的存储器中,而实际程序运行是将代码搬移至RAM等易失性的存储器中执行。非易失的存储器还将用于参数、用户数据存储,异常的电气信号和电磁干扰有可能局部破坏非易失的存储器中的应用程序数据。
[0004]也就是说,应用程序的可靠性问题不仅仅存在于升级过程中。如果没有相应的措施,现场运行的终端因应用程序错误发生彻底不能运行的情况,在可靠性要求较高的系统中是不允许的。


【发明内容】

[0005]本发明的目的是提供嵌入式系统应用程序的异常恢复方法和装置,用以解决应用程序可靠性差的问题。
[0006]为实现上述目的,本发明嵌入式系统中应用程序的异常恢复方法的方案包括如下步骤:1)当嵌入式系统内核启动后,执行应用程序和监视程序;2)监视程序检测故障,发现故障后,从第一备份程序恢复应用程序;从第一备份程序恢复应用程序时,删除第一备份程序;第一备份程序是当监视程序判断当前应用程序能够正常运行后,如果第一备份程序不存在,由当前正确运行的应用程序复制产生的。
[0007]步骤I)中,嵌入式系统内核启动后,检查应用升级程序是否存在,如果应用升级程序存在,则用第一备份程序替代第二备份程序,再删除第一备份程序,并且应用升级程序替代当前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果应用升级程序不存在,则直接执行应用程序和监视程序。
[0008]步骤2)中,发现故障后,从第一备份程序或第二备份程序恢复应用程序;从第一备份程序或第二备份程序恢复应用程序时,删除相应的备份程序。
[0009]步骤2)中,所述故障包括:应用程序出现无法运行、或者运行自检故障、或者进程通信交互故障;具体过程包括:
[0010]应用程序启动后,应用程序执行初始化和自检,如果应用程序自检判断异常,则应用程序进入等待程序恢复的处理,不使能与监视程序之间的进程通信端口 ;如果应用程序自检判断正常,则应用程序启动它与监视程序之间的进程通信端口 ;
[0011]同时,监视程序启动后,完成自身初始化,完成设定的等待应用程序初始化和自检的延时,启动它与应用程序之间的进程通信端口;
[0012]在设定的启动检测时间内,监视程序以设定的频率尝试与应用程序进行通信交互,如果完成正常通信交互,则应用程序关闭与监视程序之间的进程通信端口,进入正常运行状态,同时监视程序结束;如果应用程序和监视程序通信交互异常,则应用程序进入等待程序恢复的处理,监视程序执行后续步骤。
[0013]应用程序启动后,在其执行初始化和自检之前,应用程序检查监视程序是否存在,如果监视程序不存在,则从应用程序代码中释放监视程序,而后复位系统;如果监视程序存在,则继续执行。
[0014]应用程序和监视程序完成正常通信后,监视程序在结束之前检查备份程序I是否存在,如果第一备份程序不存在,则监视程序将应用程序复制产生第一备份程序,然后监视程序结束;如果第一备份程序存在,则监视程序直接结束。
[0015]本发明嵌入式系统中应用程序的异常恢复装置的方案包括如下模块:模块I)当嵌入式系统内核启动后,执行应用程序和监视程序;模块2)监视程序检测故障,发现故障后,从第一备份程序恢复应用程序;从第一备份程序恢复应用程序时,删除第一备份程序;第一备份程序是当监视程序判断当前应用程序能够正常运行后,如果第一备份程序不存在,由当前正确运行的应用程序复制产生的。
[0016]模块I)中,嵌入式系统内核启动后,检查应用升级程序是否存在,如果应用升级程序存在,则用第一备份程序替代第二备份程序,再删除第一备份程序,并且应用升级程序替代当前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果应用升级程序不存在,则直接执行应用程序和监视程序。
[0017]模块2)中,发现故障后,从第一备份程序或第二备份程序恢复应用程序;从第一备份程序或第二备份程序恢复应用程序时,删除相应的备份程序。
[0018]本发明方法的有益之处在于能够保证原始的应用程序恢复运行。具体而言,当嵌入式系统内核启动后,如果非易失存储器中的应用程序数据遭到损坏,则应用程序将出现无法运行、或者运行自检故障、或者进程通信交互故障,监视程序发现故障后,可以从备份程序中恢复应用程序,系统复位后可以重新恢复运行。
[0019]如果采用本发明方法对应用程序升级,应用升级程序能够正常运行,则因为升级前第一备份程序不存在,所以监视程序能够依据正确运行的应用升级程序,复制产生出第一备份程序。同时,因为应用升级程序已经删除,所以不会出现反复升级。如果应用升级程序不能够正常运行,监视程序将从第二备份程序恢复原始的应用程序,重新复位后实现系统的恢复运行。
[0020]此外,当监视程序不存在时,应用程序会能够从应用程序代码中释放监视程序,避免了监视程序的单独安装。

【专利附图】

【附图说明】
[0021]图1是现有技术的一种嵌入式系统应用程序安全升级方法的流程图;
[0022]图2是本发明的实施例1的一种异常恢复方法流程图。

【具体实施方式】
[0023]下面结合附图对本发明做进一步详细的说明。
[0024]注意:技术方案中第一备份程序、第二备份程序分别对应【具体实施方式】和说明书附图中的备份程序1、备份程序2。应用程序进程用于执行当前应用程序,当前应用程序包括应用程序和应用升级程序,比如:下文步骤I中“应用升级程序替代当前的应用程序……而后执行应用程序和监视程序”,执行应用程序的是被替换为应用程序的原应用升级程序。关于第一个程序替代第二个程序、再删除第一个程序的操作,当第一个程序和第二个程序在相同目录时,通过删除第二个程序、再将第一个程序文件更名为第二个程序文件的名称实现。
[0025]实施例1
[0026]如图2是实施例1的具体流程图,本发明的方法包括如下步骤:
[0027]步骤1:嵌入式系统在内核启动后,检查应用升级程序是否存在,如果应用升级程序存在,则用备份程序I替代备份程序2,再删除备份程序1,并且应用升级程序替代当前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果应用升级程序不存在,则直接执行应用程序和监视程序;
[0028]步骤2:应用程序启动后,应用程序执行初始化和自检,如果应用程序自检判断异常,则应用程序进入等待程序恢复的处理,不使能与监视程序之间的进程通信端口 ;如果应用程序自检判断正常,则应用程序启动它与监视程序之间的进程通信端口 ;
[0029]步骤3:与步骤2同时,监视程序启动后,完成自身初始化,完成设定的等待应用程序初始化和自检的延时,启动它与应用程序之间的进程通信端口 ;
[0030]步骤4:在设定的启动检测时间内,监视程序以设定的频率尝试与应用程序进行通信交互,如果完成正常通信交互,则应用程序关闭与监视程序之间的进程通信端口,进入正常运行状态,同时监视程序结束;如果应用程序和监视程序通信交互异常,则应用程序进入等待程序恢复的处理,监视程序执行后续步骤;
[0031]步骤5:如果监视程序和应用程序通信交互异常,则监视程序检查备份程序I是否存在,如果备份程序I存在,则用备份程序I替代当前应用程序,再删除备份程序1,而后复位系统;如果备份程序I不存在,且备份程序2存在,则用备份程序2替代当前应用程序,再删除备份程序2,而后复位系统;如果备份程序I和备份程序2都不存在,则应用程序恢复失败。
[0032]其中,步骤2—步骤4属于故障检测的具体过程,能够判断出应用程序出现无法运行、或者运行自检故障、或者进程通信交互故障,监视程序发现故障后,进行恢复。
[0033]备份程序I是当监视程序判断当前应用程序能够正常运行后,如果备份程序I不存在,由当前正确运行的应用程序自动复制产生的,如图2监视程序进程中通信正常时的流程。备份程序2是在内核启动时,若有应用升级程序时产生,如图2内核进程。
[0034]举例来说,在一个LINUX嵌入式系统的终端中,以上步骤可以具体描述为:
[0035]步骤1:嵌入式系统在内核启动后,将运彳丁启动脚本。在该脚本中,首先检查是否存在应用升级程序,如果应用升级程序存在/UPDATE/SG800APP,则删除/BACKUP/SG800APP.0ld,再将备份程序 /BACKUP/SG800APP.bak 更名为 /BACKUP/SG800APP.0ld,并且应用升级程序/UPDATE/SG800APP替代当前的应用程序/SG800APP,再删除应用升级程序/UPDATE/SG800APP,而后执行应用程序/SG800APP和监视程序/APP_TEST ;如果应用升级程序/UPDATE/SG800APP不存在,则直接执行应用程序/SG800APP和监视程序/APP_TEST。其中,应用升级程序是在系统正常运行时通过应用升级通信接口传输应用升级程序数据,最终将应用升级程序以执行文件形式存入/UPDATE/SG800APP。
[0036]步骤2:应用程序启动/SG800APP后,应用程序/SG800APP首先检查监视程序/APP_TEST是否存在,如果监视程序/APP_TEST不存在,则从应用程序/SG800APP代码中释放监视程序/APP_TEST,而后系统复位;如果监视程序/APP_TEST存在,则/SG800APP继续执行初始化和自检。如果/SG800APP自检判断异常,则/SG800APP进入等待程序恢复的处理,不使能与监视程序/APP_TEST之间的进程通信端口 ;如果应用程序/SG800APP自检判断正常,则应用程序/SG800APP启动它与监视程序/APP_TEST之间的进程通信端口。其中,进程通信端口通过调用LINUX系统的进程间通信模块(IPC)实现。
[0037]步骤3:与步骤2同时,监视程序/APP_TEST启动后,完成自身初始化,完成设定的等待应用程序/SG800APP初始化和自检的延时,启动它与应用程序/SG800APP之间的IPC
进程通信端口。
[0038]步骤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执行后续步骤。
[0039]步骤5:如果监视程序/APP_TEST和应用程序/SG800APP通信异常,则监视程序/APP_TEST检查备份程序/BACKUP/SG800APP.bak是否存在。如果备份程序/BACKUP/SG800APP.bak存在,则用备份程序/BACKUP/SG800APP.bak替代当前应用程序/SG800APP,再删除备份程序/BACKUP/SG800APP.bak,而后复位系统;如果备份程序/BACKUP/SG800APP.bak不存在,且备份程序/BACKUP/SG800APP.0ld存在,则用备份程序/BACKUP/SG800APP.0ld替代当前应用程序/SG800APP,再删除备份程序/BACKUP/SG800APP.0ld,而后复位系统;如果备份程序/BACKUP/SG800APP.bak和备份程序/BACKUP/SG800APP.0ld都不存在,则应用程序/SG800APP恢复失败。
[0040]实施例2
[0041]实施例2实际上是实施例1的简化:不进行升级,即不涉及应用升级程序的情况下,当嵌入式系统内核启动后,如果非易失存储器中的应用程序数据遭到损坏,则应用程序将出现无法运行、或者运行自检故障、或者进程通信交互故障,监视程序发现故障后,可以从备份程序I或备份程序2恢复应用程序,系统复位后可以重新恢复运行。从备份程序I或备份程序2恢复应用程序时,相应的备份程序将被删除,以免备份程序损坏,出现反复的恢复操作,导致反复重启和非易失存储器失效。
[0042]备份程序I是当监视程序判断当前应用程序能够正常运行后,如果备份程序I不存在,由当前正确运行的应用程序自动复制产生的,如图2监视程序进程中通信正常时的流程。
[0043]对实施例2没有单独附图,可以参考图2进行理解。由于不涉及升级程序,在嵌入式内核启动后,直接执行应用程序和监视程序。基本流程为:内核启动——执行应用程序和监视程序;监视程序启动一判断是否出现故障(涉及实施例1步骤2、步骤3、步骤4的内容,主要是通过应用程序自检、通信接口功能判断是否有故障产生)——若有故障则从备份程序I或备份程序2恢复应用程序。在之前没有经历升级的情况下,不会有备份程序2产生,所以必然从备份程序I恢复应用程序;若之前经历过升级,则可能从备份程序2恢复应用程序。
[0044]以上给出了具体的实施方式,但本发明不局限于所描述的实施方式。本发明的基本思路在于上述基本方案,对本领域普通技术人员而言,根据本发明的教导,设计出各种变形的模型、公式、参数并不需要花费创造性劳动。在不脱离本发明的原理和精神的情况下对实施方式进行的变化、修改、替换和变型仍落入本发明的保护范围内。
【权利要求】
1.嵌入式系统中应用程序的异常恢复方法,其特征在于,包括如下步骤:1)当嵌入式系统内核启动后,执行应用程序和监视程序;2)监视程序检测故障,发现故障后,从第一备份程序恢复应用程序;从第一备份程序恢复应用程序时,删除第一备份程序;第一备份程序是当监视程序判断当前应用程序能够正常运行后,如果第一备份程序不存在,由当前正确运行的应用程序复制产生的。
2.根据权利要求1所述的嵌入式系统中应用程序的异常恢复方法,其特征在于,步骤1)中,嵌入式系统内核启动后,检查应用升级程序是否存在,如果应用升级程序存在,则用第一备份程序替代第二备份程序,再删除第一备份程序,并且应用升级程序替代当前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果应用升级程序不存在,则直接执行应用程序和监视程序。
3.根据权利要求1所述的嵌入式系统中应用程序的异常恢复方法,其特征在于,步骤2)中,发现故障后,从第一备份程序或第二备份程序恢复应用程序;从第一备份程序或第二备份程序恢复应用程序时,删除相应的备份程序。
4.根据权利要求1或2或3所述的嵌入式系统中应用程序的异常恢复方法,其特征在于,步骤2)中,所述故障包括:应用程序出现无法运行、或者运行自检故障、或者进程通信交互故障;具体过程包括: 应用程序启动后,应用程序执行初始化和自检,如果应用程序自检判断异常,则应用程序进入等待程序恢复的处理,不使能与监视程序之间的进程通信端口 ;如果应用程序自检判断正常,则应用程序启动它与监视程序之间的进程通信端口 ;同时,监视程序启动后,完成自身初始化,完成设定的等待应用程序初始化和自检的延时,启动它与应用程序之间的进程通信端口; 在设定的启动检测时间内,监视程序以设定的频率尝试与应用程序进行通信交互,如果完成正常通信交互,则应用程序关闭与监视程序之间的进程通信端口,进入正常运行状态,同时监视程序结束;如果应用程序和监视程序通信交互异常,则应用程序进入等待程序恢复的处理,监视程序执行后续步骤。
5.根据权利要求4所述的嵌入式系统中应用程序的异常恢复方法,其特征在于,应用程序启动后,在其执行初始化和自检之前,应用程序检查监视程序是否存在,如果监视程序不存在,则从应用程序代码中释放监视程序,而后复位系统;如果监视程序存在,则继续执行。
6.根据权利要求4所述的嵌入式系统中应用程序的异常恢复方法,其特征在于,应用程序和监视程序完成正常通信后,监视程序在结束之前检查备份程序I是否存在,如果第一备份程序不存在,则监视程序将应用程序复制产生第一备份程序,然后监视程序结束;如果第一备份程序存在,则监视程序直接结束。
7.嵌入式系统中应用程序的异常恢复装置,其特征在于,包括如下模块:模块I)当嵌入式系统内核启动后,执行应用程序和监视程序;模块2)监视程序检测故障,发现故障后,从第一备份程序恢复应用程序;从第一备份程序恢复应用程序时,删除第一备份程序;第一备份程序是当监视程序判断当前应用程序能够正常运行后,如果第一备份程序不存在,由当前正确运行的应用程序复制产生的。
8.根据权利要求7所述的嵌入式系统中应用程序的异常恢复装置,其特征在于,模块1)中,嵌入式系统内核启动后,检查应用升级程序是否存在,如果应用升级程序存在,则用第一备份程序替代第二备份程序,再删除第一备份程序,并且应用升级程序替代当前的应用程序,再删除应用升级程序,而后执行应用程序和监视程序;如果应用升级程序不存在,则直接执行应用程序和监视程序。
9.根据权利要求7所述的嵌入式系统中应用程序的异常恢复装置,其特征在于,模块2)中,发现故障后,从第一备份程序或第二备份程序恢复应用程序;从第一备份程序或第二备份程序恢复应用程序时,删除相应的备份程序。
【文档编号】G06F11/14GK104346239SQ201410302420
【公开日】2015年2月11日 申请日期:2014年6月27日 优先权日:2014年6月27日
【发明者】庞浩, 杨帆, 熊章学, 张涛, 张锦春, 马清忠, 王盈盈, 林向阳, 冯海舟, 徐景涛 申请人:国家电网公司, 许继集团有限公司, 河南许继仪表有限公司, 盛吉高科(北京)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1