著录项信息
专利名称 | 嵌入式实时操作系统的故障处理方法和装置 |
申请号 | CN201410487757.8 | 申请日期 | 2014-09-22 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-01-07 | 公开/公告号 | CN104268027A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/00 | IPC分类号 | G;0;6;F;1;1;/;0;0查看分类表>
|
申请人 | 北京经纬恒润科技有限公司 | 申请人地址 | 北京市朝阳区安翔北里11号B座8层北京经纬恒润科技有限公司
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京经纬恒润科技有限公司 | 当前权利人 | 北京经纬恒润科技有限公司 |
发明人 | 王载琼;刘博;张阳;沈志淳 |
代理机构 | 北京品源专利代理有限公司 | 代理人 | 路凯;胡彬 |
摘要
本发明公开了一种嵌入式实时操作系统的故障处理方法和装置。所述方法包括:启动嵌入式实时操作系统,进入第一应用模式;检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。本发明通过重启操作系统动态切换应用模式,避免了系统故障的重复发生。
1.一种嵌入式实时操作系统的故障处理方法,其特征在于,所述方法包括:
设置预设个数的应用模式,除第一应用模式外,其余应用模式对应不同的故障;
启动嵌入式实时操作系统,进入第一应用模式;
检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;
在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;
重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。
2.根据权利要求1所述的方法,其特征在于,在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启,包括:
在检测到所述第一故障后,接收用户根据所述第一故障设定的是否需要操作系统重启的指令;
如果所述指令指示需要操作系统重启,则接收用户根据所述第一故障设定的所述嵌入式实时操作系统重启后进入第二应用模式的信息;
执行操作系统重启。
3.根据权利要求1所述的方法,其特征在于,启动嵌入式实时操作系统包括:
启动嵌入式实时操作系统;
保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行地址,以使得嵌入式实时操作系统重启后回到所述执行地址所指定的语句执行。
4.根据权利要求3所述的方法,其特征在于,重新启动所述嵌入式实时操作系统后,进入所述第二应用模式,包括:
重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行;
进入所述第二应用模式。
5.一种嵌入式实时操作系统的故障处理装置,其特征在于,所述装置包括:
模式设置模块,用于设置预设个数的应用模式,除第一应用模式外,其余应用模式对应不同的故障;
启动模块,用于启动嵌入式实时操作系统,进入第一应用模式;
检测模块,用于检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;
确定模块,用于在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;
重启模块,用于重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。
6.根据权利要求5所述的装置,其特征在于,所述确定模块包括:
第一接收子模块,用于在检测到所述第一故障后,接收用户根据所述第一故障设定的是否需要操作系统重启的指令;
第二接收子模块,用于如果所述指令指示需要操作系统重启,则接收用户根据所述第一故障设定的所述嵌入式实时操作系统重启后进入第二应用模式的信息;
执行子模块,用于执行操作系统重启。
7.根据权利要求5所述的装置,其特征在于,所述启动模块包括:
启动子模块,用于启动嵌入式实时操作系统;
保存子模块,用于保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行地址,以使得嵌入式实时操作系统重启后回到所述执行地址所指定的语句执行。
8.根据权利要求7所述的装置,其特征在于,所述重启模块包括:
跳转子模块,用于重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行;
进入子模块,用于进入所述第二应用模式。
嵌入式实时操作系统的故障处理方法和装置\n技术领域\n[0001] 本发明实施例涉及嵌入式系统技术领域,尤其涉及一种嵌入式实时操作系统的故障处理方法和装置。\n背景技术\n[0002] 嵌入式实时操作系统,是一种当外界事件或数据产生时能够接受并以足够快的速度予以处理,且处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。嵌入式实时操作系统广泛应用在工业控制、军事设备、航空航天等对系统的响应时间有苛刻要求的领域。\n[0003] 随着嵌入式实时操作系统越来越广泛的应用,操作系统的安全性也越来越得到重视。运用有嵌入式实时操作系统的应用程序在调试过程中,可以通过一些数据检测、错误定位等方式确定错误发生的原因和位置,从而进行问题分析和更正。但是当系统正式发布运行后,如果遇到了重要错误时目前却没有相关的处理机制。\n[0004] 在实际应用过程中,通常一个嵌入式实时操作系统需要处理多件事情,在所处理的事情中又根据事情的重要程度将事情分为不同的优先级。若运行过程中遇到某一严重故障,如代码执行到某个路径时堆栈溢出,而该路径在测试调试阶段没有执行到等,按照现有技术中的处理机制,系统会进入死循环,通过看门狗复位来重新运行系统。这样处理的好处是可以通过硬件机制自动重启系统(包括了操作系统),让系统再重新运行。但这样的处理机制有以下缺点:系统重启后,当条件满足时,导致系统严重故障的问题还会再次发生。\n发明内容\n[0005] 有鉴于此,本发明实施例提供一种嵌入式实时操作系统的故障处理方法和装置,以避免系统故障的重复发生。\n[0006] 第一方面,本发明实施例提供了一种嵌入式实时操作系统的故障处理方法,所述方法包括:\n[0007] 启动嵌入式实时操作系统,进入第一应用模式;\n[0008] 检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;\n[0009] 在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;\n[0010] 重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。\n[0011] 第二方面,本发明实施例还提供了一种嵌入式实时操作系统的故障处理装置,所述装置包括:\n[0012] 启动模块,用于启动嵌入式实时操作系统,进入第一应用模式;\n[0013] 检测模块,用于检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;\n[0014] 确定模块,用于在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;\n[0015] 重启模块,用于重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。\n[0016] 本发明实施例提供的嵌入式实时操作系统的故障处理方法和装置,通过启动嵌入式实时操作系统后,进入第一应用模式,检测嵌入式实时操作系统在第一应用模式下出现的第一故障,在检测到第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启,重新启动嵌入式实时操作系统后,进入第二应用模式。通过重启操作系统动态切换应用模式,避免了系统故障的重复发生。\n附图说明\n[0017] 图1是本发明第一实施例提供的一种嵌入式实时操作系统的故障处理方法的流程图;\n[0018] 图2是本发明实施例提供的嵌入式实时操作系统的故障处理方法中的应用模式的配置示意图;\n[0019] 图3是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的示意图;\n[0020] 图4是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的流程图;\n[0021] 图5是本发明实施例提供的嵌入式实时操作系统的故障处理方法中的操作系统重启执行流程的示意图;\n[0022] 图6是本发明第三实施例提供的一种嵌入式实时操作系统的故障处理装置的示意图。\n具体实施方式\n[0023] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。\n[0024] 图1示出了本发明的第一实施例。\n[0025] 图1是本发明第一实施例提供的一种嵌入式实时操作系统的故障处理方法的流程图,该方法适用于嵌入式实时操作系统遇到严重故障时的处理,可由嵌入式实时操作系统执行,该方法具体包括如下步骤:\n[0026] 步骤110,启动嵌入式实时操作系统,进入第一应用模式。\n[0027] 嵌入式实时操作系统的故障处理的前提是要有多个应用模式,以便于重启后进入不同的应用模式来避免同一故障的重复发生。启动嵌入式实时操作系统后,嵌入式实时操作系统进入的应用模式为第一应用模式。\n[0028] 其中,应用模式是指不同的应用场景。对于嵌入式实时操作系统,应用模式的功能主要是通过任务的实现体现的,不同的应用场景就会有不同的应用功能,体现在操作系统对象上就是不同的任务实现方式。图2是本发明实施例提供的嵌入式实时操作系统的故障处理方法中的应用模式的配置示意图,如图2所示,如果嵌入式实时操作系统可以配置为n种应用模式,那么启动操作系统后,在不同的应用模式下实现的应用功能是不一样的。\n[0029] 优选的,在所述启动嵌入式实时操作系统,进入第一应用模式之前,还包括:\n[0030] 设置预设个数的应用模式。\n[0031] 在系统静态配置时,对应用模式进行设置,主要是根据任务的不同来设置预设个数的应用模式。为了处理系统运行时出现的严重故障(即严重影响系统功能的故障,如堆栈溢出、未注册的中断产生等),在进行操作系统静态配置前,需要对当前应用程序功能即应用模式以及可能出现的严重故障、出现严重故障后的处理方式进行明确定义,即明确在系统正常运行情况下需要执行的功能,在出现不同严重故障的情况下需要保留执行的功能(需要切换到的应用模式)。\n[0032] 步骤120,检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障。\n[0033] 嵌入式实时操作系统在第一应用模式下,随时检测所述嵌入式实时操作系统是否出现故障,如果出现第一故障,检测所述第一故障的类型,并判断所述第一故障的严重程度。\n[0034] 步骤130,在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启。\n[0035] 在检测到所述第一故障后,如果所述第一故障为严重故障(即严重影响系统功能,如堆栈溢出、未注册的中断产生等),这类故障需要重启所述嵌入式实时操作系统,这时可以通过重启操作系统切换应用模式来避免该故障的重复发生,在关闭操作系统之前,确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启。在检测到所述第一故障后,如果所述第一故障并不是严重故障,则不需要重新启动所述嵌入式实时操作系统,也不需要重新确定应用模式。\n[0036] 优选的,在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启,包括:\n[0037] 在检测到所述第一故障后,接收用户根据所述第一故障设定的是否需要操作系统重启的指令;\n[0038] 如果所述指令指示需要操作系统重启,则接收用户根据所述第一故障设定的所述嵌入式实时操作系统重启后进入第二应用模式的信息;\n[0039] 执行操作系统重启。\n[0040] 嵌入式实时操作系统在关闭系统时提供应用接口给用户,以便于用户决定是否需要操作系统重启,以及根据故障类型决定重启后需要切换到的应用模式。即通过应用接口接收用户根据所述第一故障设定的是否需要操作系统重启的指令;如果所述指令指示需要操作系统重启,则接收用户根据所述第一故障设定的所述嵌入式实时操作系统重启后进入第二应用模式的信息;执行操作系统重启。\n[0041] 步骤140,重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。\n[0042] 重新启动所述嵌入式实时操作系统后,进入步骤130确定的第二应用模式。如果所述嵌入式实时操作系统在该第二应用模式下出现严重故障,需要关闭操作系统,则可以按照上述步骤(步骤120-140)进行处理,只不过需要注意应用模式的改变,确定重启后切换到的应用模式,执行重启。\n[0043] 本实施例通过启动嵌入式实时操作系统后,进入第一应用模式,检测嵌入式实时操作系统在第一应用模式下出现的第一故障,在检测到第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启,重新启动嵌入式实时操作系统后,进入第二应用模式。通过重启操作系统动态切换应用模式,避免了系统故障的重复发生。\n[0044] 在上述技术方案的基础上,启动嵌入式实时操作系统优选包括:\n[0045] 启动嵌入式实时操作系统;\n[0046] 保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行地址,以使得嵌入式实时操作系统重启后回到所述执行地址所指定的语句执行。\n[0047] 在启动嵌入式实时操作系统后,要保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行地址,以使得嵌入式实时操作系统重启后能够回到所述执行地址所指定的语句执行,保证操作系统重启后,能够执行到系统应用相关初始化功能。\n[0048] 在上述技术方案的基础上,重新启动所述嵌入式实时操作系统后,进入所述第二应用模式,优选包括:\n[0049] 重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行;\n[0050] 进入所述第二应用模式。\n[0051] 重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行,保证执行到系统应用相关初始化功能,然后进入所述第二应用模式,避免同一故障的重复发生。\n[0052] 图3示出了本发明的第二实施例。\n[0053] 图3是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的示意图。\n如图3所示,假设嵌入式实时操作系统正常运行的应用模式为正常应用模式;当出现严重故障Error1时,为了保证系统中的主要功能正常运行,则需要切换到正常应用模式外的另一个应用模式,即安全模式1;当系统中出现除Error1以外的严重故障时,可以都切换到正常应用模式和安全模式1以外的另一个应用模式:安全模式2。本领域技术人员可以理解,严重故障类型较多,可以选择几种常见的严重故障配置相应的应用模式,而为不太常见的其他严重故障配置一种应用模式,例如:嵌入式实时操作系统正常运行的应用模式配置为正常应用模式,为第一严重故障配置第一应用模式,为第二严重故障配置第二应用模式,为第三严重故障配置第三应用模式,为除了第一严重故障、第二严重故障和第三严重故障以外的其他严重故障配置第四应用模式。\n[0054] 图3中,F1为系统中的main函数,需要在该函数中执行操作系统启动;F2为操作系统的启动代码;F3指示了操作系统的应用模式(包括正常应用模式、安全模式1和安全模式\n2),不同的应用模式也意味着应用功能的不同;F4为操作系统正常工作时的应用模式,即正常应用模式;F5为在某一模式下执行的任务;F6为当出现严重故障时调用的操作系统重启函数,用户可在该函数中添加代码,来决定需要切换到哪个应用模式;F7为当出现严重故障Error1时执行的应用模式;F8为出现其他严重故障时执行的应用模式。\n[0055] 图4是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的流程图,如图4所示,该方法具体包括如下步骤:\n[0056] 步骤410,正常启动嵌入式实时操作系统,并保存main函数中启动代码调用语句的下一条语句的执行地址,进入正常应用模式。\n[0057] 操作系统正常启动时,在F1(main函数)中调用操作系统启动函数F2,默认情况下直接进入正常应用模式F4。为了保证操作系统重启后能够回到main函数中重新执行操作系统启动(F2),而不是直接调用操作系统启动函数,因此需要在操作系统启动时保存main函数中启动代码调用语句的下一条语句的执行地址(PC指针),以方便系统重启时返回main函数中执行,从而能够执行到系统应用向初始化功能,因此,需要将main函数以以下形式实现:\n[0058]\n[0059]\n[0060] 其中,StartOs()为操作系统启动函数。操作系统启动时,保存while(1)语句的执行地址。为了保证系统重启后,系统应用相关的初始化能得到执行,在main函数中将初始化和操作系统启动代码放到循环(while(1))中,重启时将回到main函数中重新执行初始化及操作系统启动以及模式切换。\n[0061] 步骤420,检测嵌入式实时操作系统在正常应用模式下出现的故障。\n[0062] 嵌入式实时操作系统在执行的过程中,可能会遇到故障,检测操作系统遇到的故障,并判断故障的类型。\n[0063] 步骤430,如果所述故障需要重启嵌入式实时操作系统,则确定操作系统重启后要进入的应用模式,并执行操作系统重启。\n[0064] 如果所述故障需要重启嵌入式实时操作系统,即所述故障为严重故障,则调用F6操作系统关闭功能来实现操作系统的关闭。在操作系统关闭前,需要通过所述故障的类型,来判断操作系统重启后要进入的应用模式,并执行操作系统重启。其中,如果操作系统遇到的严重故障为Error1,则确定操作系统重启后要进入的应用模式为安全模式1;如果操作系统遇到的严重故障为Error1以外的其他严重故障,则确定操作系统重启后要进入的应用模式为安全模式2。\n[0065] 其中,操作系统关闭功能(F6)中需要能提供应用接口给用户,让用户根据严重故障类型决定需要切换到的应用模式,或者决定是否需要操作系统重启。\n[0066] 步骤440,操作系统重启后,重新跳回main函数中,重新执行操作系统启动功能。\n[0067] 操作系统重启时,即执行了StartOs(),然后调回main函数中,即在保存的while(1)语句的执行地址处继续执行,重新执行了操作系统启动功能,包括系统应用相关初始化功能。\n[0068] 步骤450,进入确定的应用模式。\n[0069] 操作系统重启后,进入步骤430确定的应用模式,即如果操作系统重启前遇到的严重故障为Error1,则操作系统要进入的应用模式为安全模式1;如果操作系统重启前遇到的严重故障为Error1以外的其他故障,则操作系统要进入的应用模式为安全模式2。\n[0070] 图5是本发明实施例提供的嵌入式实时操作系统的故障处理方法中的操作系统重启执行流程的示意图。如图5所示,当操作系统在运行过程中发生严重故障时,将调用操作系统关闭函数Shutdown(),要实现重启需要进行以下操作:\n[0071] 首先,在操作系统启动时,启动函数StartOs()(即图中F9)中需保存main函数中下一条语句执行的PC指针(程序所在的地址),如图5中所示的PC1,同时根据应用模式确定需要启动的任务。\n[0072] 接下来,当操作系统发生严重故障时,调用系统关闭函数Shutdown(),并进行内核相关处理(F10),如错误记录。\n[0073] 其中,系统关闭函数Shutdown()中调用提供给用户进行错误判断等处理的应用接口(F11),在该接口中用户可根据错误类型判断是否需要切换应用模式,实现如下:\n[0074]\n[0075] 然后,用户设置完成后,如果需要进行重启,则修改当前运行的地址指针为保存的PC指针,修改后程序将跳回F13处执行。\n[0076] 最后,由于main函数中为循环语句,因此F13中执行时将回到循环起始处,依次执行应用相关初始化,以及按照修改后的应用模式重启操作系统。\n[0077] 本实施例通过提前配置的三种应用模式,操作系统启动时默认进入正常应用模式,如果遇到严重故障,则根据严重故障类型确定重启后要进入的应用模式,并执行操作系统重启,进入确定的应用模式,避免了系统同一故障的重复发生。\n[0078] 图6示出了本发明的第三实施例。\n[0079] 图6是本发明第三实施例提供的一种嵌入式实时操作系统的故障处理装置的示意图。如图6所示,本实施例提供的嵌入式实时操作系统的故障处理装置包括:启动模块610、检测模块620、确定模块630和重启模块640。\n[0080] 其中,启动模块610用于启动嵌入式实时操作系统,进入第一应用模式。\n[0081] 优选的,所述装置还包括:\n[0082] 设置模块,用于在所述启动嵌入式实时操作系统,进入第一应用模式之前,设置预设个数的应用模式。\n[0083] 检测模块620用于检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障。\n[0084] 确定模块630用于在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启。\n[0085] 优选的,所述确定模块包括:\n[0086] 第一接收子模块,用于在检测到所述第一故障后,接收用户根据所述第一故障设定的是否需要操作系统重启的指令;\n[0087] 第二接收子模块,用于如果所述指令指示需要操作系统重启,则接收用户根据所述第一故障设定的所述嵌入式实时操作系统重启后进入第二应用模式的信息;\n[0088] 执行子模块,用于执行操作系统重启。\n[0089] 重启模块640用于重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。\n[0090] 优选的,所述启动模块包括:\n[0091] 启动子模块,用于启动嵌入式实时操作系统;\n[0092] 保存子模块,用于保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行地址,以使得嵌入式实时操作系统重启后回到所述执行地址所指定的语句执行。\n[0093] 优选的,所述重启模块包括:\n[0094] 跳转子模块,用于重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行;\n[0095] 进入子模块,用于进入所述第二应用模式。\n[0096] 本实施例通过启动模块启动嵌入式实时操作系统,进入第一应用模式;检测模块检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;确定模块在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;重启模块在重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。通过重启操作系统动态切换应用模式,避免了系统故障的重复发生。\n[0097] 值得注意的是,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员可以理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
法律信息
- 2017-09-29
- 2015-02-04
实质审查的生效
IPC(主分类): G06F 11/00
专利申请号: 201410487757.8
申请日: 2014.09.22
- 2015-01-07
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-04-30
|
2014-01-09
| | |
2
| |
2003-06-18
|
2000-12-19
| | |
3
| |
2013-12-04
|
2011-03-22
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |