嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法和裝置。所述方法包括:啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式;檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的第一故障;在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則確定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟;重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模式。本發(fā)明通過重啟操作系統(tǒng)動(dòng)態(tài)切換應(yīng)用模式,避免了系統(tǒng)故障的重復(fù)發(fā)生。
【專利說明】嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及嵌入式系統(tǒng)【技術(shù)領(lǐng)域】,尤其涉及一種嵌入式實(shí)時(shí)操作系統(tǒng)的故 障處理方法和裝置。
【背景技術(shù)】
[0002] 嵌入式實(shí)時(shí)操作系統(tǒng),是一種當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí)能夠接受并以足夠快的速 度予以處理,且處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速 響應(yīng),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的嵌入式操作系統(tǒng)。嵌入式實(shí)時(shí)操作系統(tǒng)廣泛應(yīng) 用在工業(yè)控制、軍事設(shè)備、航空航天等對系統(tǒng)的響應(yīng)時(shí)間有苛刻要求的領(lǐng)域。
[0003] 隨著嵌入式實(shí)時(shí)操作系統(tǒng)越來越廣泛的應(yīng)用,操作系統(tǒng)的安全性也越來越得到重 視。運(yùn)用有嵌入式實(shí)時(shí)操作系統(tǒng)的應(yīng)用程序在調(diào)試過程中,可以通過一些數(shù)據(jù)檢測、錯(cuò)誤定 位等方式確定錯(cuò)誤發(fā)生的原因和位置,從而進(jìn)行問題分析和更正。但是當(dāng)系統(tǒng)正式發(fā)布運(yùn) 行后,如果遇到了重要錯(cuò)誤時(shí)目前卻沒有相關(guān)的處理機(jī)制。
[0004] 在實(shí)際應(yīng)用過程中,通常一個(gè)嵌入式實(shí)時(shí)操作系統(tǒng)需要處理多件事情,在所處理 的事情中又根據(jù)事情的重要程度將事情分為不同的優(yōu)先級。若運(yùn)行過程中遇到某一嚴(yán)重故 障,如代碼執(zhí)行到某個(gè)路徑時(shí)堆棧溢出,而該路徑在測試調(diào)試階段沒有執(zhí)行到等,按照現(xiàn)有 技術(shù)中的處理機(jī)制,系統(tǒng)會(huì)進(jìn)入死循環(huán),通過看門狗復(fù)位來重新運(yùn)行系統(tǒng)。這樣處理的好處 是可以通過硬件機(jī)制自動(dòng)重啟系統(tǒng)(包括了操作系統(tǒng)),讓系統(tǒng)再重新運(yùn)行。但這樣的處理 機(jī)制有以下缺點(diǎn):系統(tǒng)重啟后,當(dāng)條件滿足時(shí),導(dǎo)致系統(tǒng)嚴(yán)重故障的問題還會(huì)再次發(fā)生。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明實(shí)施例提供一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法和裝置, 以避免系統(tǒng)故障的重復(fù)發(fā)生。
[0006] 第一方面,本發(fā)明實(shí)施例提供了一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法,所述 方法包括:
[0007] 啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式;
[0008] 檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的第一故障;
[0009] 在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則確定所述 嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟;
[0010] 重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模式。
[0011] 第二方面,本發(fā)明實(shí)施例還提供了一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理裝置,所 述裝置包括:
[0012] 啟動(dòng)模塊,用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式;
[0013] 檢測模塊,用于檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的第一 故障;
[0014] 確定模塊,用于在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系 統(tǒng),則確定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟;
[0015] 重啟模塊,用于重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模式。
[0016] 本發(fā)明實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法和裝置,通過啟動(dòng)嵌入 式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入第一應(yīng)用模式,檢測嵌入式實(shí)時(shí)操作系統(tǒng)在第一應(yīng)用模式下出現(xiàn) 的第一故障,在檢測到第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則確定所述嵌 入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟,重新啟動(dòng)嵌入式實(shí) 時(shí)操作系統(tǒng)后,進(jìn)入第二應(yīng)用模式。通過重啟操作系統(tǒng)動(dòng)態(tài)切換應(yīng)用模式,避免了系統(tǒng)故障 的重復(fù)發(fā)生。
【專利附圖】
【附圖說明】
[0017] 圖1是本發(fā)明第一實(shí)施例提供的一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法的流 程圖;
[0018] 圖2是本發(fā)明實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法中的應(yīng)用模式 的配置示意圖;
[0019] 圖3是本發(fā)明第二實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法的示意圖;
[0020] 圖4是本發(fā)明第二實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法的流程圖;
[0021] 圖5是本發(fā)明實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法中的操作系統(tǒng) 重啟執(zhí)行流程的示意圖;
[0022] 圖6是本發(fā)明第三實(shí)施例提供的一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理裝置的示 意圖。
【具體實(shí)施方式】
[0023] 下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖?,此處所描 述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便 于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
[0024] 圖1示出了本發(fā)明的第一實(shí)施例。
[0025] 圖1是本發(fā)明第一實(shí)施例提供的一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法的流 程圖,該方法適用于嵌入式實(shí)時(shí)操作系統(tǒng)遇到嚴(yán)重故障時(shí)的處理,可由嵌入式實(shí)時(shí)操作系 統(tǒng)執(zhí)行,該方法具體包括如下步驟:
[0026] 步驟110,啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式。
[0027] 嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理的前提是要有多個(gè)應(yīng)用模式,以便于重啟后進(jìn)入 不同的應(yīng)用模式來避免同一故障的重復(fù)發(fā)生。啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)后,嵌入式實(shí)時(shí)操 作系統(tǒng)進(jìn)入的應(yīng)用模式為第一應(yīng)用模式。
[0028] 其中,應(yīng)用模式是指不同的應(yīng)用場景。對于嵌入式實(shí)時(shí)操作系統(tǒng),應(yīng)用模式的功能 主要是通過任務(wù)的實(shí)現(xiàn)體現(xiàn)的,不同的應(yīng)用場景就會(huì)有不同的應(yīng)用功能,體現(xiàn)在操作系統(tǒng) 對象上就是不同的任務(wù)實(shí)現(xiàn)方式。圖2是本發(fā)明實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障 處理方法中的應(yīng)用模式的配置示意圖,如圖2所示,如果嵌入式實(shí)時(shí)操作系統(tǒng)可以配置為η 種應(yīng)用模式,那么啟動(dòng)操作系統(tǒng)后,在不同的應(yīng)用模式下實(shí)現(xiàn)的應(yīng)用功能是不一樣的。
[0029] 優(yōu)選的,在所述啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式之前,還包括:
[0030] 設(shè)置預(yù)設(shè)個(gè)數(shù)的應(yīng)用模式。
[0031] 在系統(tǒng)靜態(tài)配置時(shí),對應(yīng)用模式進(jìn)行設(shè)置,主要是根據(jù)任務(wù)的不同來設(shè)置預(yù)設(shè)個(gè) 數(shù)的應(yīng)用模式。為了處理系統(tǒng)運(yùn)行時(shí)出現(xiàn)的嚴(yán)重故障(即嚴(yán)重影響系統(tǒng)功能的故障,如堆 棧溢出、未注冊的中斷產(chǎn)生等),在進(jìn)行操作系統(tǒng)靜態(tài)配置前,需要對當(dāng)前應(yīng)用程序功能即 應(yīng)用模式以及可能出現(xiàn)的嚴(yán)重故障、出現(xiàn)嚴(yán)重故障后的處理方式進(jìn)行明確定義,即明確在 系統(tǒng)正常運(yùn)行情況下需要執(zhí)行的功能,在出現(xiàn)不同嚴(yán)重故障的情況下需要保留執(zhí)行的功能 (需要切換到的應(yīng)用模式)。
[0032] 步驟120,檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的第一故障。
[0033] 嵌入式實(shí)時(shí)操作系統(tǒng)在第一應(yīng)用模式下,隨時(shí)檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)是否 出現(xiàn)故障,如果出現(xiàn)第一故障,檢測所述第一故障的類型,并判斷所述第一故障的嚴(yán)重程 度。
[0034] 步驟130,在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則 確定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟。
[0035] 在檢測到所述第一故障后,如果所述第一故障為嚴(yán)重故障(即嚴(yán)重影響系統(tǒng)功 能,如堆棧溢出、未注冊的中斷產(chǎn)生等),這類故障需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),這時(shí) 可以通過重啟操作系統(tǒng)切換應(yīng)用模式來避免該故障的重復(fù)發(fā)生,在關(guān)閉操作系統(tǒng)之前,確 定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟。在檢測到 所述第一故障后,如果所述第一故障并不是嚴(yán)重故障,則不需要重新啟動(dòng)所述嵌入式實(shí)時(shí) 操作系統(tǒng),也不需要重新確定應(yīng)用模式。
[0036] 優(yōu)選的,在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則確 定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟,包括:
[0037] 在檢測到所述第一故障后,接收用戶根據(jù)所述第一故障設(shè)定的是否需要操作系統(tǒng) 重啟的指令;
[0038] 如果所述指令指示需要操作系統(tǒng)重啟,則接收用戶根據(jù)所述第一故障設(shè)定的所述 嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入第二應(yīng)用模式的信息;
[0039] 執(zhí)行操作系統(tǒng)重啟。
[0040] 嵌入式實(shí)時(shí)操作系統(tǒng)在關(guān)閉系統(tǒng)時(shí)提供應(yīng)用接口給用戶,以便于用戶決定是否需 要操作系統(tǒng)重啟,以及根據(jù)故障類型決定重啟后需要切換到的應(yīng)用模式。即通過應(yīng)用接口 接收用戶根據(jù)所述第一故障設(shè)定的是否需要操作系統(tǒng)重啟的指令;如果所述指令指示需要 操作系統(tǒng)重啟,則接收用戶根據(jù)所述第一故障設(shè)定的所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入 第二應(yīng)用模式的信息;執(zhí)行操作系統(tǒng)重啟。
[0041] 步驟140,重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模式。
[0042] 重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入步驟130確定的第二應(yīng)用模式。如果 所述嵌入式實(shí)時(shí)操作系統(tǒng)在該第二應(yīng)用模式下出現(xiàn)嚴(yán)重故障,需要關(guān)閉操作系統(tǒng),則可以 按照上述步驟(步驟120-140)進(jìn)行處理,只不過需要注意應(yīng)用模式的改變,確定重啟后切 換到的應(yīng)用模式,執(zhí)行重啟。
[0043] 本實(shí)施例通過啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入第一應(yīng)用模式,檢測嵌入式實(shí)時(shí) 操作系統(tǒng)在第一應(yīng)用模式下出現(xiàn)的第一故障,在檢測到第一故障后,如果需要重啟所述嵌 入式實(shí)時(shí)操作系統(tǒng),則確定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行 操作系統(tǒng)重啟,重新啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入第二應(yīng)用模式。通過重啟操作系統(tǒng)動(dòng) 態(tài)切換應(yīng)用模式,避免了系統(tǒng)故障的重復(fù)發(fā)生。
[0044] 在上述技術(shù)方案的基礎(chǔ)上,啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)優(yōu)選包括:
[0045]啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng);
[0046] 保存用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)的調(diào)用語句的下一條語句的執(zhí)行地址,以使得 嵌入式實(shí)時(shí)操作系統(tǒng)重啟后回到所述執(zhí)行地址所指定的語句執(zhí)行。
[0047] 在啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)后,要保存用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)的調(diào)用語句 的下一條語句的執(zhí)行地址,以使得嵌入式實(shí)時(shí)操作系統(tǒng)重啟后能夠回到所述執(zhí)行地址所指 定的語句執(zhí)行,保證操作系統(tǒng)重啟后,能夠執(zhí)行到系統(tǒng)應(yīng)用相關(guān)初始化功能。
[0048] 在上述技術(shù)方案的基礎(chǔ)上,重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二 應(yīng)用模式,優(yōu)選包括:
[0049] 重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,回到所述執(zhí)行地址所指定的語句執(zhí)行;
[0050] 進(jìn)入所述第二應(yīng)用模式。
[0051] 重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,回到所述執(zhí)行地址所指定的語句執(zhí)行,保 證執(zhí)行到系統(tǒng)應(yīng)用相關(guān)初始化功能,然后進(jìn)入所述第二應(yīng)用模式,避免同一故障的重復(fù)發(fā) 生。
[0052] 圖3示出了本發(fā)明的第二實(shí)施例。
[0053] 圖3是本發(fā)明第二實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法的示意圖。 如圖3所示,假設(shè)嵌入式實(shí)時(shí)操作系統(tǒng)正常運(yùn)行的應(yīng)用模式為正常應(yīng)用模式;當(dāng)出現(xiàn)嚴(yán)重 故障Errorl時(shí),為了保證系統(tǒng)中的主要功能正常運(yùn)行,則需要切換到正常應(yīng)用模式外的另 一個(gè)應(yīng)用模式,即安全模式1 ;當(dāng)系統(tǒng)中出現(xiàn)除Errorl以外的嚴(yán)重故障時(shí),可以都切換到正 常應(yīng)用模式和安全模式1以外的另一個(gè)應(yīng)用模式:安全模式2。本領(lǐng)域技術(shù)人員可以理解, 嚴(yán)重故障類型較多,可以選擇幾種常見的嚴(yán)重故障配置相應(yīng)的應(yīng)用模式,而為不太常見的 其他嚴(yán)重故障配置一種應(yīng)用模式,例如:嵌入式實(shí)時(shí)操作系統(tǒng)正常運(yùn)行的應(yīng)用模式配置為 正常應(yīng)用模式,為第一嚴(yán)重故障配置第一應(yīng)用模式,為第二嚴(yán)重故障配置第二應(yīng)用模式,為 第三嚴(yán)重故障配置第三應(yīng)用模式,為除了第一嚴(yán)重故障、第二嚴(yán)重故障和第三嚴(yán)重故障以 外的其他嚴(yán)重故障配置第四應(yīng)用模式。
[0054] 圖3中,F(xiàn)1為系統(tǒng)中的main函數(shù),需要在該函數(shù)中執(zhí)行操作系統(tǒng)啟動(dòng);F2為操 作系統(tǒng)的啟動(dòng)代碼;F3指示了操作系統(tǒng)的應(yīng)用模式(包括正常應(yīng)用模式、安全模式1和安 全模式2),不同的應(yīng)用模式也意味著應(yīng)用功能的不同;F4為操作系統(tǒng)正常工作時(shí)的應(yīng)用模 式,即正常應(yīng)用模式;F5為在某一模式下執(zhí)行的任務(wù);F6為當(dāng)出現(xiàn)嚴(yán)重故障時(shí)調(diào)用的操作 系統(tǒng)重啟函數(shù),用戶可在該函數(shù)中添加代碼,來決定需要切換到哪個(gè)應(yīng)用模式;F7為當(dāng)出 現(xiàn)嚴(yán)重故障Errorl時(shí)執(zhí)行的應(yīng)用模式;F8為出現(xiàn)其他嚴(yán)重故障時(shí)執(zhí)行的應(yīng)用模式。
[0055] 圖4是本發(fā)明第二實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法的流程圖, 如圖4所示,該方法具體包括如下步驟:
[0056] 步驟410,正常啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),并保存main函數(shù)中啟動(dòng)代碼調(diào)用語句 的下一條語句的執(zhí)行地址,進(jìn)入正常應(yīng)用模式。
[0057] 操作系統(tǒng)正常啟動(dòng)時(shí),在FI (main函數(shù))中調(diào)用操作系統(tǒng)啟動(dòng)函數(shù)F2,默認(rèn)情況 下直接進(jìn)入正常應(yīng)用模式F4。為了保證操作系統(tǒng)重啟后能夠回到main函數(shù)中重新執(zhí)行 操作系統(tǒng)啟動(dòng)(F2),而不是直接調(diào)用操作系統(tǒng)啟動(dòng)函數(shù),因此需要在操作系統(tǒng)啟動(dòng)時(shí)保存 main函數(shù)中啟動(dòng)代碼調(diào)用語句的下一條語句的執(zhí)行地址(PC指針),以方便系統(tǒng)重啟時(shí)返 回main函數(shù)中執(zhí)行,從而能夠執(zhí)行到系統(tǒng)應(yīng)用向初始化功能,因此,需要將main函數(shù)以以 下形式實(shí)現(xiàn):
[0058] void main(void)
[0059] { while (1) { /*應(yīng)用相關(guān)初始化*/ StartOs (); } }
[0060] 其中,StartOsO為操作系統(tǒng)啟動(dòng)函數(shù)。操作系統(tǒng)啟動(dòng)時(shí),保存whiled)語句的 執(zhí)行地址。為了保證系統(tǒng)重啟后,系統(tǒng)應(yīng)用相關(guān)的初始化能得到執(zhí)行,在main函數(shù)中將初 始化和操作系統(tǒng)啟動(dòng)代碼放到循環(huán)(while (1))中,重啟時(shí)將回到main函數(shù)中重新執(zhí)行初 始化及操作系統(tǒng)啟動(dòng)以及模式切換。
[0061] 步驟420,檢測嵌入式實(shí)時(shí)操作系統(tǒng)在正常應(yīng)用模式下出現(xiàn)的故障。
[0062] 嵌入式實(shí)時(shí)操作系統(tǒng)在執(zhí)行的過程中,可能會(huì)遇到故障,檢測操作系統(tǒng)遇到的故 障,并判斷故障的類型。
[0063] 步驟430,如果所述故障需要重啟嵌入式實(shí)時(shí)操作系統(tǒng),則確定操作系統(tǒng)重啟后要 進(jìn)入的應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟。
[0064] 如果所述故障需要重啟嵌入式實(shí)時(shí)操作系統(tǒng),即所述故障為嚴(yán)重故障,則調(diào)用F6 操作系統(tǒng)關(guān)閉功能來實(shí)現(xiàn)操作系統(tǒng)的關(guān)閉。在操作系統(tǒng)關(guān)閉前,需要通過所述故障的類型, 來判斷操作系統(tǒng)重啟后要進(jìn)入的應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟。其中,如果操作系統(tǒng)遇到 的嚴(yán)重故障為Errorl,則確定操作系統(tǒng)重啟后要進(jìn)入的應(yīng)用模式為安全模式1 ;如果操作 系統(tǒng)遇到的嚴(yán)重故障為Errorl以外的其他嚴(yán)重故障,則確定操作系統(tǒng)重啟后要進(jìn)入的應(yīng) 用模式為安全模式2。
[0065] 其中,操作系統(tǒng)關(guān)閉功能(F6)中需要能提供應(yīng)用接口給用戶,讓用戶根據(jù)嚴(yán)重故 障類型決定需要切換到的應(yīng)用模式,或者決定是否需要操作系統(tǒng)重啟。
[0066] 步驟440,操作系統(tǒng)重啟后,重新跳回main函數(shù)中,重新執(zhí)行操作系統(tǒng)啟動(dòng)功能。
[0067] 操作系統(tǒng)重啟時(shí),即執(zhí)行了 StartOs (),然后調(diào)回main函數(shù)中,即在保存的 while (1)語句的執(zhí)行地址處繼續(xù)執(zhí)行,重新執(zhí)行了操作系統(tǒng)啟動(dòng)功能,包括系統(tǒng)應(yīng)用相關(guān) 初始化功能。
[0068] 步驟450,進(jìn)入確定的應(yīng)用模式。
[0069] 操作系統(tǒng)重啟后,進(jìn)入步驟430確定的應(yīng)用模式,S卩如果操作系統(tǒng)重啟前遇到的 嚴(yán)重故障為Errorl,則操作系統(tǒng)要進(jìn)入的應(yīng)用模式為安全模式1 ;如果操作系統(tǒng)重啟前遇 到的嚴(yán)重故障為Errorl以外的其他故障,則操作系統(tǒng)要進(jìn)入的應(yīng)用模式為安全模式2。
[0070] 圖5是本發(fā)明實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法中的操作系統(tǒng) 重啟執(zhí)行流程的示意圖。如圖5所示,當(dāng)操作系統(tǒng)在運(yùn)行過程中發(fā)生嚴(yán)重故障時(shí),將調(diào)用操 作系統(tǒng)關(guān)閉函數(shù)ShutdownO,要實(shí)現(xiàn)重啟需要進(jìn)行以下操作:
[0071] 首先,在操作系統(tǒng)啟動(dòng)時(shí),啟動(dòng)函數(shù)StartOsO (即圖中F9)中需保存main函數(shù)中 下一條語句執(zhí)行的PC指針(程序所在的地址),如圖5中所示的PC1,同時(shí)根據(jù)應(yīng)用模式確 定需要啟動(dòng)的任務(wù)。
[0072] 接下來,當(dāng)操作系統(tǒng)發(fā)生嚴(yán)重故障時(shí),調(diào)用系統(tǒng)關(guān)閉函數(shù)Shutdown (),并進(jìn)行內(nèi)核 相關(guān)處理(F10),如錯(cuò)誤記錄。
[0073] 其中,系統(tǒng)關(guān)閉函數(shù)ShutdownO中調(diào)用提供給用戶進(jìn)行錯(cuò)誤判斷等處理的應(yīng)用 接口(FI 1),在該接口中用戶可根據(jù)錯(cuò)誤類型判斷是否需要切換應(yīng)用模式,實(shí)現(xiàn)如下:
[0074] void ShutdownUserHandle(ErrorType error) { if (error == Error1) { 應(yīng)用模式=安全模式1 } else if (error == Error2) { 不重啟,進(jìn)入死循環(huán)/*看門狗復(fù)位*/ } else { 應(yīng)用模式=安全模式2 } }
[0075] 然后,用戶設(shè)置完成后,如果需要進(jìn)行重啟,則修改當(dāng)前運(yùn)行的地址指針為保存的 PC指針,修改后程序?qū)⑻谾13處執(zhí)行。
[0076] 最后,由于main函數(shù)中為循環(huán)語句,因此F13中執(zhí)行時(shí)將回到循環(huán)起始處,依次執(zhí) 行應(yīng)用相關(guān)初始化,以及按照修改后的應(yīng)用模式重啟操作系統(tǒng)。
[0077] 本實(shí)施例通過提前配置的三種應(yīng)用模式,操作系統(tǒng)啟動(dòng)時(shí)默認(rèn)進(jìn)入正常應(yīng)用模 式,如果遇到嚴(yán)重故障,則根據(jù)嚴(yán)重故障類型確定重啟后要進(jìn)入的應(yīng)用模式,并執(zhí)行操作系 統(tǒng)重啟,進(jìn)入確定的應(yīng)用模式,避免了系統(tǒng)同一故障的重復(fù)發(fā)生。
[0078] 圖6示出了本發(fā)明的第三實(shí)施例。
[0079] 圖6是本發(fā)明第三實(shí)施例提供的一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理裝置的示 意圖。如圖6所示,本實(shí)施例提供的嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理裝置包括:啟動(dòng)模塊 610、檢測模塊620、確定模塊630和重啟模塊640。
[0080] 其中,啟動(dòng)模塊610用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式。
[0081] 優(yōu)選的,所述裝置還包括:
[0082] 設(shè)置模塊,用于在所述啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式之前,設(shè)置預(yù) 設(shè)個(gè)數(shù)的應(yīng)用模式。
[0083] 檢測模塊620用于檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的 第一故障。
[0084] 確定模塊630用于在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作 系統(tǒng),則確定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟。
[0085] 優(yōu)選的,所述確定模塊包括:
[0086] 第一接收子模塊,用于在檢測到所述第一故障后,接收用戶根據(jù)所述第一故障設(shè) 定的是否需要操作系統(tǒng)重啟的指令;
[0087] 第二接收子模塊,用于如果所述指令指示需要操作系統(tǒng)重啟,則接收用戶根據(jù)所 述第一故障設(shè)定的所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入第二應(yīng)用模式的信息;
[0088] 執(zhí)行子模塊,用于執(zhí)行操作系統(tǒng)重啟。
[0089] 重啟模塊640用于重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模 式。
[0090] 優(yōu)選的,所述啟動(dòng)模塊包括:
[0091] 啟動(dòng)子模塊,用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng);
[0092] 保存子模塊,用于保存用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)的調(diào)用語句的下一條語句的 執(zhí)行地址,以使得嵌入式實(shí)時(shí)操作系統(tǒng)重啟后回到所述執(zhí)行地址所指定的語句執(zhí)行。
[0093] 優(yōu)選的,所述重啟模塊包括:
[0094] 跳轉(zhuǎn)子模塊,用于重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,回到所述執(zhí)行地址所指 定的語句執(zhí)行;
[0095] 進(jìn)入子模塊,用于進(jìn)入所述第二應(yīng)用模式。
[0096] 本實(shí)施例通過啟動(dòng)模塊啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式;檢測模塊 檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的第一故障;確定模塊在檢測到 所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則確定所述嵌入式實(shí)時(shí)操作系 統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟;重啟模塊在重新啟動(dòng)所述嵌入式實(shí) 時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模式。通過重啟操作系統(tǒng)動(dòng)態(tài)切換應(yīng)用模式,避免了系統(tǒng) 故障的重復(fù)發(fā)生。
[0097] 值得注意的是,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人 員可以理解,本發(fā)明不限于這里所述的特定實(shí)施例,對本領(lǐng)域技術(shù)人員來說能夠進(jìn)行各種 明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過以上實(shí)施例對 本發(fā)明進(jìn)行了較為詳細(xì)的說明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思 的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。
【權(quán)利要求】
1. 一種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理方法,其特征在于,所述方法包括: 啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式; 檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的第一故障; 在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則確定所述嵌入 式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟; 重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模式。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第 一應(yīng)用模式之前,還包括: 設(shè)置預(yù)設(shè)個(gè)數(shù)的應(yīng)用模式。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在檢測到所述第一故障后,如果需要 重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則確定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模 式,并執(zhí)行操作系統(tǒng)重啟,包括: 在檢測到所述第一故障后,接收用戶根據(jù)所述第一故障設(shè)定的是否需要操作系統(tǒng)重啟 的指令; 如果所述指令指示需要操作系統(tǒng)重啟,則接收用戶根據(jù)所述第一故障設(shè)定的所述嵌入 式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入第二應(yīng)用模式的信息; 執(zhí)行操作系統(tǒng)重啟。
4. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)包括: 啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng); 保存用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)的調(diào)用語句的下一條語句的執(zhí)行地址,以使得嵌入 式實(shí)時(shí)操作系統(tǒng)重啟后回到所述執(zhí)行地址所指定的語句執(zhí)行。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn) 入所述第二應(yīng)用模式,包括: 重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,回到所述執(zhí)行地址所指定的語句執(zhí)行; 進(jìn)入所述第二應(yīng)用模式。
6. -種嵌入式實(shí)時(shí)操作系統(tǒng)的故障處理裝置,其特征在于,所述裝置包括: 啟動(dòng)模塊,用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式; 檢測模塊,用于檢測所述嵌入式實(shí)時(shí)操作系統(tǒng)在所述第一應(yīng)用模式下出現(xiàn)的第一故 障; 確定模塊,用于在檢測到所述第一故障后,如果需要重啟所述嵌入式實(shí)時(shí)操作系統(tǒng),則 確定所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入的第二應(yīng)用模式,并執(zhí)行操作系統(tǒng)重啟; 重啟模塊,用于重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,進(jìn)入所述第二應(yīng)用模式。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 設(shè)置模塊,用于在所述啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng),進(jìn)入第一應(yīng)用模式之前,設(shè)置預(yù)設(shè)個(gè) 數(shù)的應(yīng)用模式。
8. 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述確定模塊包括: 第一接收子模塊,用于在檢測到所述第一故障后,接收用戶根據(jù)所述第一故障設(shè)定的 是否需要操作系統(tǒng)重啟的指令; 第二接收子模塊,用于如果所述指令指示需要操作系統(tǒng)重啟,則接收用戶根據(jù)所述第 一故障設(shè)定的所述嵌入式實(shí)時(shí)操作系統(tǒng)重啟后進(jìn)入第二應(yīng)用模式的信息; 執(zhí)行子模塊,用于執(zhí)行操作系統(tǒng)重啟。
9. 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述啟動(dòng)模塊包括: 啟動(dòng)子模塊,用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng); 保存子模塊,用于保存用于啟動(dòng)嵌入式實(shí)時(shí)操作系統(tǒng)的調(diào)用語句的下一條語句的執(zhí)行 地址,以使得嵌入式實(shí)時(shí)操作系統(tǒng)重啟后回到所述執(zhí)行地址所指定的語句執(zhí)行。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述重啟模塊包括: 跳轉(zhuǎn)子模塊,用于重新啟動(dòng)所述嵌入式實(shí)時(shí)操作系統(tǒng)后,回到所述執(zhí)行地址所指定的 語句執(zhí)行; 進(jìn)入子模塊,用于進(jìn)入所述第二應(yīng)用模式。
【文檔編號】G06F11/00GK104268027SQ201410487757
【公開日】2015年1月7日 申請日期:2014年9月22日 優(yōu)先權(quán)日:2014年9月22日
【發(fā)明者】王載瓊, 劉博 , 張陽, 沈志淳 申請人:北京經(jīng)緯恒潤科技有限公司