嵌入式实时操作系统的故障处理方法和装置制造方法

文档序号:6627829阅读:417来源:国知局
嵌入式实时操作系统的故障处理方法和装置制造方法
【专利摘要】本发明公开了一种嵌入式实时操作系统的故障处理方法和装置。所述方法包括:启动嵌入式实时操作系统,进入第一应用模式;检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。本发明通过重启操作系统动态切换应用模式,避免了系统故障的重复发生。
【专利说明】嵌入式实时操作系统的故障处理方法和装置

【技术领域】
[0001] 本发明实施例涉及嵌入式系统【技术领域】,尤其涉及一种嵌入式实时操作系统的故 障处理方法和装置。

【背景技术】
[0002] 嵌入式实时操作系统,是一种当外界事件或数据产生时能够接受并以足够快的速 度予以处理,且处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速 响应,并控制所有实时任务协调一致运行的嵌入式操作系统。嵌入式实时操作系统广泛应 用在工业控制、军事设备、航空航天等对系统的响应时间有苛刻要求的领域。
[0003] 随着嵌入式实时操作系统越来越广泛的应用,操作系统的安全性也越来越得到重 视。运用有嵌入式实时操作系统的应用程序在调试过程中,可以通过一些数据检测、错误定 位等方式确定错误发生的原因和位置,从而进行问题分析和更正。但是当系统正式发布运 行后,如果遇到了重要错误时目前却没有相关的处理机制。
[0004] 在实际应用过程中,通常一个嵌入式实时操作系统需要处理多件事情,在所处理 的事情中又根据事情的重要程度将事情分为不同的优先级。若运行过程中遇到某一严重故 障,如代码执行到某个路径时堆栈溢出,而该路径在测试调试阶段没有执行到等,按照现有 技术中的处理机制,系统会进入死循环,通过看门狗复位来重新运行系统。这样处理的好处 是可以通过硬件机制自动重启系统(包括了操作系统),让系统再重新运行。但这样的处理 机制有以下缺点:系统重启后,当条件满足时,导致系统严重故障的问题还会再次发生。


【发明内容】

[0005] 有鉴于此,本发明实施例提供一种嵌入式实时操作系统的故障处理方法和装置, 以避免系统故障的重复发生。
[0006] 第一方面,本发明实施例提供了一种嵌入式实时操作系统的故障处理方法,所述 方法包括:
[0007] 启动嵌入式实时操作系统,进入第一应用模式;
[0008] 检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;
[0009] 在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述 嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;
[0010] 重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。
[0011] 第二方面,本发明实施例还提供了一种嵌入式实时操作系统的故障处理装置,所 述装置包括:
[0012] 启动模块,用于启动嵌入式实时操作系统,进入第一应用模式;
[0013] 检测模块,用于检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一 故障;
[0014] 确定模块,用于在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系 统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启;
[0015] 重启模块,用于重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。
[0016] 本发明实施例提供的嵌入式实时操作系统的故障处理方法和装置,通过启动嵌入 式实时操作系统后,进入第一应用模式,检测嵌入式实时操作系统在第一应用模式下出现 的第一故障,在检测到第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌 入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启,重新启动嵌入式实 时操作系统后,进入第二应用模式。通过重启操作系统动态切换应用模式,避免了系统故障 的重复发生。

【专利附图】

【附图说明】
[0017] 图1是本发明第一实施例提供的一种嵌入式实时操作系统的故障处理方法的流 程图;
[0018] 图2是本发明实施例提供的嵌入式实时操作系统的故障处理方法中的应用模式 的配置示意图;
[0019] 图3是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的示意图;
[0020] 图4是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的流程图;
[0021] 图5是本发明实施例提供的嵌入式实时操作系统的故障处理方法中的操作系统 重启执行流程的示意图;
[0022] 图6是本发明第三实施例提供的一种嵌入式实时操作系统的故障处理装置的示 意图。

【具体实施方式】
[0023] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描 述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便 于描述,附图中仅示出了与本发明相关的部分而非全部内容。
[0024] 图1示出了本发明的第一实施例。
[0025] 图1是本发明第一实施例提供的一种嵌入式实时操作系统的故障处理方法的流 程图,该方法适用于嵌入式实时操作系统遇到严重故障时的处理,可由嵌入式实时操作系 统执行,该方法具体包括如下步骤:
[0026] 步骤110,启动嵌入式实时操作系统,进入第一应用模式。
[0027] 嵌入式实时操作系统的故障处理的前提是要有多个应用模式,以便于重启后进入 不同的应用模式来避免同一故障的重复发生。启动嵌入式实时操作系统后,嵌入式实时操 作系统进入的应用模式为第一应用模式。
[0028] 其中,应用模式是指不同的应用场景。对于嵌入式实时操作系统,应用模式的功能 主要是通过任务的实现体现的,不同的应用场景就会有不同的应用功能,体现在操作系统 对象上就是不同的任务实现方式。图2是本发明实施例提供的嵌入式实时操作系统的故障 处理方法中的应用模式的配置示意图,如图2所示,如果嵌入式实时操作系统可以配置为η 种应用模式,那么启动操作系统后,在不同的应用模式下实现的应用功能是不一样的。
[0029] 优选的,在所述启动嵌入式实时操作系统,进入第一应用模式之前,还包括:
[0030] 设置预设个数的应用模式。
[0031] 在系统静态配置时,对应用模式进行设置,主要是根据任务的不同来设置预设个 数的应用模式。为了处理系统运行时出现的严重故障(即严重影响系统功能的故障,如堆 栈溢出、未注册的中断产生等),在进行操作系统静态配置前,需要对当前应用程序功能即 应用模式以及可能出现的严重故障、出现严重故障后的处理方式进行明确定义,即明确在 系统正常运行情况下需要执行的功能,在出现不同严重故障的情况下需要保留执行的功能 (需要切换到的应用模式)。
[0032] 步骤120,检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障。
[0033] 嵌入式实时操作系统在第一应用模式下,随时检测所述嵌入式实时操作系统是否 出现故障,如果出现第一故障,检测所述第一故障的类型,并判断所述第一故障的严重程 度。
[0034] 步骤130,在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则 确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启。
[0035] 在检测到所述第一故障后,如果所述第一故障为严重故障(即严重影响系统功 能,如堆栈溢出、未注册的中断产生等),这类故障需要重启所述嵌入式实时操作系统,这时 可以通过重启操作系统切换应用模式来避免该故障的重复发生,在关闭操作系统之前,确 定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启。在检测到 所述第一故障后,如果所述第一故障并不是严重故障,则不需要重新启动所述嵌入式实时 操作系统,也不需要重新确定应用模式。
[0036] 优选的,在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确 定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启,包括:
[0037] 在检测到所述第一故障后,接收用户根据所述第一故障设定的是否需要操作系统 重启的指令;
[0038] 如果所述指令指示需要操作系统重启,则接收用户根据所述第一故障设定的所述 嵌入式实时操作系统重启后进入第二应用模式的信息;
[0039] 执行操作系统重启。
[0040] 嵌入式实时操作系统在关闭系统时提供应用接口给用户,以便于用户决定是否需 要操作系统重启,以及根据故障类型决定重启后需要切换到的应用模式。即通过应用接口 接收用户根据所述第一故障设定的是否需要操作系统重启的指令;如果所述指令指示需要 操作系统重启,则接收用户根据所述第一故障设定的所述嵌入式实时操作系统重启后进入 第二应用模式的信息;执行操作系统重启。
[0041] 步骤140,重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。
[0042] 重新启动所述嵌入式实时操作系统后,进入步骤130确定的第二应用模式。如果 所述嵌入式实时操作系统在该第二应用模式下出现严重故障,需要关闭操作系统,则可以 按照上述步骤(步骤120-140)进行处理,只不过需要注意应用模式的改变,确定重启后切 换到的应用模式,执行重启。
[0043] 本实施例通过启动嵌入式实时操作系统后,进入第一应用模式,检测嵌入式实时 操作系统在第一应用模式下出现的第一故障,在检测到第一故障后,如果需要重启所述嵌 入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行 操作系统重启,重新启动嵌入式实时操作系统后,进入第二应用模式。通过重启操作系统动 态切换应用模式,避免了系统故障的重复发生。
[0044] 在上述技术方案的基础上,启动嵌入式实时操作系统优选包括:
[0045]启动嵌入式实时操作系统;
[0046] 保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行地址,以使得 嵌入式实时操作系统重启后回到所述执行地址所指定的语句执行。
[0047] 在启动嵌入式实时操作系统后,要保存用于启动嵌入式实时操作系统的调用语句 的下一条语句的执行地址,以使得嵌入式实时操作系统重启后能够回到所述执行地址所指 定的语句执行,保证操作系统重启后,能够执行到系统应用相关初始化功能。
[0048] 在上述技术方案的基础上,重新启动所述嵌入式实时操作系统后,进入所述第二 应用模式,优选包括:
[0049] 重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行;
[0050] 进入所述第二应用模式。
[0051] 重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行,保 证执行到系统应用相关初始化功能,然后进入所述第二应用模式,避免同一故障的重复发 生。
[0052] 图3示出了本发明的第二实施例。
[0053] 图3是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的示意图。 如图3所示,假设嵌入式实时操作系统正常运行的应用模式为正常应用模式;当出现严重 故障Errorl时,为了保证系统中的主要功能正常运行,则需要切换到正常应用模式外的另 一个应用模式,即安全模式1 ;当系统中出现除Errorl以外的严重故障时,可以都切换到正 常应用模式和安全模式1以外的另一个应用模式:安全模式2。本领域技术人员可以理解, 严重故障类型较多,可以选择几种常见的严重故障配置相应的应用模式,而为不太常见的 其他严重故障配置一种应用模式,例如:嵌入式实时操作系统正常运行的应用模式配置为 正常应用模式,为第一严重故障配置第一应用模式,为第二严重故障配置第二应用模式,为 第三严重故障配置第三应用模式,为除了第一严重故障、第二严重故障和第三严重故障以 外的其他严重故障配置第四应用模式。
[0054] 图3中,F1为系统中的main函数,需要在该函数中执行操作系统启动;F2为操 作系统的启动代码;F3指示了操作系统的应用模式(包括正常应用模式、安全模式1和安 全模式2),不同的应用模式也意味着应用功能的不同;F4为操作系统正常工作时的应用模 式,即正常应用模式;F5为在某一模式下执行的任务;F6为当出现严重故障时调用的操作 系统重启函数,用户可在该函数中添加代码,来决定需要切换到哪个应用模式;F7为当出 现严重故障Errorl时执行的应用模式;F8为出现其他严重故障时执行的应用模式。
[0055] 图4是本发明第二实施例提供的嵌入式实时操作系统的故障处理方法的流程图, 如图4所示,该方法具体包括如下步骤:
[0056] 步骤410,正常启动嵌入式实时操作系统,并保存main函数中启动代码调用语句 的下一条语句的执行地址,进入正常应用模式。
[0057] 操作系统正常启动时,在FI (main函数)中调用操作系统启动函数F2,默认情况 下直接进入正常应用模式F4。为了保证操作系统重启后能够回到main函数中重新执行 操作系统启动(F2),而不是直接调用操作系统启动函数,因此需要在操作系统启动时保存 main函数中启动代码调用语句的下一条语句的执行地址(PC指针),以方便系统重启时返 回main函数中执行,从而能够执行到系统应用向初始化功能,因此,需要将main函数以以 下形式实现:
[0058] void main(void)
[0059] { while (1) { /*应用相关初始化*/ StartOs (); } }
[0060] 其中,StartOsO为操作系统启动函数。操作系统启动时,保存whiled)语句的 执行地址。为了保证系统重启后,系统应用相关的初始化能得到执行,在main函数中将初 始化和操作系统启动代码放到循环(while (1))中,重启时将回到main函数中重新执行初 始化及操作系统启动以及模式切换。
[0061] 步骤420,检测嵌入式实时操作系统在正常应用模式下出现的故障。
[0062] 嵌入式实时操作系统在执行的过程中,可能会遇到故障,检测操作系统遇到的故 障,并判断故障的类型。
[0063] 步骤430,如果所述故障需要重启嵌入式实时操作系统,则确定操作系统重启后要 进入的应用模式,并执行操作系统重启。
[0064] 如果所述故障需要重启嵌入式实时操作系统,即所述故障为严重故障,则调用F6 操作系统关闭功能来实现操作系统的关闭。在操作系统关闭前,需要通过所述故障的类型, 来判断操作系统重启后要进入的应用模式,并执行操作系统重启。其中,如果操作系统遇到 的严重故障为Errorl,则确定操作系统重启后要进入的应用模式为安全模式1 ;如果操作 系统遇到的严重故障为Errorl以外的其他严重故障,则确定操作系统重启后要进入的应 用模式为安全模式2。
[0065] 其中,操作系统关闭功能(F6)中需要能提供应用接口给用户,让用户根据严重故 障类型决定需要切换到的应用模式,或者决定是否需要操作系统重启。
[0066] 步骤440,操作系统重启后,重新跳回main函数中,重新执行操作系统启动功能。
[0067] 操作系统重启时,即执行了 StartOs (),然后调回main函数中,即在保存的 while (1)语句的执行地址处继续执行,重新执行了操作系统启动功能,包括系统应用相关 初始化功能。
[0068] 步骤450,进入确定的应用模式。
[0069] 操作系统重启后,进入步骤430确定的应用模式,S卩如果操作系统重启前遇到的 严重故障为Errorl,则操作系统要进入的应用模式为安全模式1 ;如果操作系统重启前遇 到的严重故障为Errorl以外的其他故障,则操作系统要进入的应用模式为安全模式2。
[0070] 图5是本发明实施例提供的嵌入式实时操作系统的故障处理方法中的操作系统 重启执行流程的示意图。如图5所示,当操作系统在运行过程中发生严重故障时,将调用操 作系统关闭函数ShutdownO,要实现重启需要进行以下操作:
[0071] 首先,在操作系统启动时,启动函数StartOsO (即图中F9)中需保存main函数中 下一条语句执行的PC指针(程序所在的地址),如图5中所示的PC1,同时根据应用模式确 定需要启动的任务。
[0072] 接下来,当操作系统发生严重故障时,调用系统关闭函数Shutdown (),并进行内核 相关处理(F10),如错误记录。
[0073] 其中,系统关闭函数ShutdownO中调用提供给用户进行错误判断等处理的应用 接口(FI 1),在该接口中用户可根据错误类型判断是否需要切换应用模式,实现如下:
[0074] void ShutdownUserHandle(ErrorType error) { if (error == Error1) { 应用模式=安全模式1 } else if (error == Error2) { 不重启,进入死循环/*看门狗复位*/ } else { 应用模式=安全模式2 } }
[0075] 然后,用户设置完成后,如果需要进行重启,则修改当前运行的地址指针为保存的 PC指针,修改后程序将跳回F13处执行。
[0076] 最后,由于main函数中为循环语句,因此F13中执行时将回到循环起始处,依次执 行应用相关初始化,以及按照修改后的应用模式重启操作系统。
[0077] 本实施例通过提前配置的三种应用模式,操作系统启动时默认进入正常应用模 式,如果遇到严重故障,则根据严重故障类型确定重启后要进入的应用模式,并执行操作系 统重启,进入确定的应用模式,避免了系统同一故障的重复发生。
[0078] 图6示出了本发明的第三实施例。
[0079] 图6是本发明第三实施例提供的一种嵌入式实时操作系统的故障处理装置的示 意图。如图6所示,本实施例提供的嵌入式实时操作系统的故障处理装置包括:启动模块 610、检测模块620、确定模块630和重启模块640。
[0080] 其中,启动模块610用于启动嵌入式实时操作系统,进入第一应用模式。
[0081] 优选的,所述装置还包括:
[0082] 设置模块,用于在所述启动嵌入式实时操作系统,进入第一应用模式之前,设置预 设个数的应用模式。
[0083] 检测模块620用于检测所述嵌入式实时操作系统在所述第一应用模式下出现的 第一故障。
[0084] 确定模块630用于在检测到所述第一故障后,如果需要重启所述嵌入式实时操作 系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启。
[0085] 优选的,所述确定模块包括:
[0086] 第一接收子模块,用于在检测到所述第一故障后,接收用户根据所述第一故障设 定的是否需要操作系统重启的指令;
[0087] 第二接收子模块,用于如果所述指令指示需要操作系统重启,则接收用户根据所 述第一故障设定的所述嵌入式实时操作系统重启后进入第二应用模式的信息;
[0088] 执行子模块,用于执行操作系统重启。
[0089] 重启模块640用于重新启动所述嵌入式实时操作系统后,进入所述第二应用模 式。
[0090] 优选的,所述启动模块包括:
[0091] 启动子模块,用于启动嵌入式实时操作系统;
[0092] 保存子模块,用于保存用于启动嵌入式实时操作系统的调用语句的下一条语句的 执行地址,以使得嵌入式实时操作系统重启后回到所述执行地址所指定的语句执行。
[0093] 优选的,所述重启模块包括:
[0094] 跳转子模块,用于重新启动所述嵌入式实时操作系统后,回到所述执行地址所指 定的语句执行;
[0095] 进入子模块,用于进入所述第二应用模式。
[0096] 本实施例通过启动模块启动嵌入式实时操作系统,进入第一应用模式;检测模块 检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障;确定模块在检测到 所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系 统重启后进入的第二应用模式,并执行操作系统重启;重启模块在重新启动所述嵌入式实 时操作系统后,进入所述第二应用模式。通过重启操作系统动态切换应用模式,避免了系统 故障的重复发生。
[0097] 值得注意的是,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人 员可以理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种 明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对 本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思 的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
【权利要求】
1. 一种嵌入式实时操作系统的故障处理方法,其特征在于,所述方法包括: 启动嵌入式实时操作系统,进入第一应用模式; 检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故障; 在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则确定所述嵌入 式实时操作系统重启后进入的第二应用模式,并执行操作系统重启; 重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。
2. 根据权利要求1所述的方法,其特征在于,在所述启动嵌入式实时操作系统,进入第 一应用模式之前,还包括: 设置预设个数的应用模式。
3. 根据权利要求1或2所述的方法,其特征在于,在检测到所述第一故障后,如果需要 重启所述嵌入式实时操作系统,则确定所述嵌入式实时操作系统重启后进入的第二应用模 式,并执行操作系统重启,包括: 在检测到所述第一故障后,接收用户根据所述第一故障设定的是否需要操作系统重启 的指令; 如果所述指令指示需要操作系统重启,则接收用户根据所述第一故障设定的所述嵌入 式实时操作系统重启后进入第二应用模式的信息; 执行操作系统重启。
4. 根据权利要求1或2所述的方法,其特征在于,启动嵌入式实时操作系统包括: 启动嵌入式实时操作系统; 保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行地址,以使得嵌入 式实时操作系统重启后回到所述执行地址所指定的语句执行。
5. 根据权利要求4所述的方法,其特征在于,重新启动所述嵌入式实时操作系统后,进 入所述第二应用模式,包括: 重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的语句执行; 进入所述第二应用模式。
6. -种嵌入式实时操作系统的故障处理装置,其特征在于,所述装置包括: 启动模块,用于启动嵌入式实时操作系统,进入第一应用模式; 检测模块,用于检测所述嵌入式实时操作系统在所述第一应用模式下出现的第一故 障; 确定模块,用于在检测到所述第一故障后,如果需要重启所述嵌入式实时操作系统,则 确定所述嵌入式实时操作系统重启后进入的第二应用模式,并执行操作系统重启; 重启模块,用于重新启动所述嵌入式实时操作系统后,进入所述第二应用模式。
7. 根据权利要求6所述的装置,其特征在于,所述装置还包括: 设置模块,用于在所述启动嵌入式实时操作系统,进入第一应用模式之前,设置预设个 数的应用模式。
8. 根据权利要求6或7所述的装置,其特征在于,所述确定模块包括: 第一接收子模块,用于在检测到所述第一故障后,接收用户根据所述第一故障设定的 是否需要操作系统重启的指令; 第二接收子模块,用于如果所述指令指示需要操作系统重启,则接收用户根据所述第 一故障设定的所述嵌入式实时操作系统重启后进入第二应用模式的信息; 执行子模块,用于执行操作系统重启。
9. 根据权利要求6或7所述的装置,其特征在于,所述启动模块包括: 启动子模块,用于启动嵌入式实时操作系统; 保存子模块,用于保存用于启动嵌入式实时操作系统的调用语句的下一条语句的执行 地址,以使得嵌入式实时操作系统重启后回到所述执行地址所指定的语句执行。
10. 根据权利要求9所述的装置,其特征在于,所述重启模块包括: 跳转子模块,用于重新启动所述嵌入式实时操作系统后,回到所述执行地址所指定的 语句执行; 进入子模块,用于进入所述第二应用模式。
【文档编号】G06F11/00GK104268027SQ201410487757
【公开日】2015年1月7日 申请日期:2014年9月22日 优先权日:2014年9月22日
【发明者】王载琼, 刘博 , 张阳, 沈志淳 申请人:北京经纬恒润科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1