本發(fā)明涉及電子設(shè)備的自恢復(fù)技術(shù),具體涉及一種具有自恢復(fù)功能的嵌入式系統(tǒng)以及自恢復(fù)方法。
背景技術(shù):
隨著信息技術(shù)的普及,各種嵌入式系統(tǒng),例如手持式PDA、手機(jī)、AP、交換機(jī)、物聯(lián)網(wǎng)系統(tǒng)以及各種工業(yè)嵌入式控制系統(tǒng)等也得到了極大的發(fā)展。
上述這些嵌入式系統(tǒng)的架構(gòu)由于嵌入式系統(tǒng)硬件工作環(huán)境嚴(yán)苛,軟件病毒的侵襲也無(wú)處不在。對(duì)設(shè)備來(lái)說(shuō),最嚴(yán)重后果就是加載啟動(dòng)失效,不能引導(dǎo)系統(tǒng),也不能人工通過命令恢復(fù),導(dǎo)致嵌入式系統(tǒng)完全失效。
現(xiàn)有技術(shù)中,嵌入式系統(tǒng)從上電那一刻到應(yīng)用程序正常運(yùn)行,其間經(jīng)歷過一系列漫長(zhǎng)的過程,下面對(duì)主要的步驟簡(jiǎn)單描述:
a、嵌入式系統(tǒng)上電后,CPU會(huì)從存儲(chǔ)單元的起始物理地址讀取指令開始執(zhí)行。
存儲(chǔ)單元中存放啟動(dòng)裝載代碼(bootloader代碼),于是CPU就會(huì)開始運(yùn)行Bootloader的代碼。
b、如果嵌入式系統(tǒng)采用的存儲(chǔ)單元是Nor Flash,CPU可以直接運(yùn)行在Nor Flash上的指令。
如果采用存儲(chǔ)單元的是NAND Flash,一種方法是NAND Flash控制器能夠把NAND Flash的前4k數(shù)據(jù)搬到4k的內(nèi)部RAM中,并設(shè)置CPU從這個(gè)內(nèi)部RAM的起始地址開始啟動(dòng)執(zhí)行。
另一種方法是NAND控制器能夠把NAND Flash的前4k數(shù)據(jù)的地址映射到系統(tǒng)總線的一個(gè)地址上,并設(shè)定CPU從這個(gè)地址開始啟動(dòng)執(zhí)行。這兩種方法都是硬件來(lái)完成的。
c、CPU利用bootloader代碼完成系統(tǒng)加載啟動(dòng)。
由以上過程可以看出,系統(tǒng)上電后CPU能否有正確的bootloader代碼可以執(zhí)行,是最關(guān)鍵的步驟,如果存放bootloader代碼的存儲(chǔ)器本身?yè)p壞,或是bootloader代碼被病毒感染(從古老的CIH,到BIOS bootkits,都是bootloader被病毒侵入),不能引導(dǎo)系統(tǒng),也不能人工通過命令恢復(fù),嵌入式系統(tǒng)失效,只能人工操作硬件來(lái)修復(fù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于為了解決現(xiàn)有技術(shù)中嵌入式系統(tǒng)由于軟硬件問題導(dǎo)致加載啟動(dòng)失效,最終導(dǎo)致嵌入式系統(tǒng)完全失效等問題的出現(xiàn);提供一種具有自恢復(fù)功能的嵌入式系統(tǒng)以及自恢復(fù)方法。
為了達(dá)到上述目的,本發(fā)明通過以下技術(shù)方案實(shí)現(xiàn):
一種具有自恢復(fù)功能的嵌入式系統(tǒng),所述嵌入式系統(tǒng)包含:看門狗電路模塊、選擇模塊、中央處理器單元、第一存儲(chǔ)單元以及第二存儲(chǔ)單元;其中,所述第一存儲(chǔ)單元、所述第二存儲(chǔ)單元內(nèi)分別設(shè)有啟動(dòng)裝載代碼,所述第一存儲(chǔ)單元、所述第二存儲(chǔ)單元為具有不同接口類型的存儲(chǔ)單元;
看門狗電路模塊,適于輸出復(fù)位信號(hào);
選擇模塊,適于根據(jù)所述復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào);
中央處理器單元,適于根據(jù)所述第一啟動(dòng)信號(hào)產(chǎn)生包含所述第一存儲(chǔ)單元的接口類型信息的片選信號(hào),選通所述第一存儲(chǔ)單元并采用所述第一存儲(chǔ)單元內(nèi)的所述啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng);
當(dāng)所述中央處理器單元未發(fā)送加載成功信號(hào)至所述看門狗電路模塊時(shí),判斷所述系統(tǒng)加載啟動(dòng)失?。?/p>
所述看門狗電路模塊,適于再次輸出所述復(fù)位信號(hào);
所述選擇模塊,適于根據(jù)所述復(fù)位信號(hào)產(chǎn)生第二啟動(dòng)信號(hào);
中央處理器單元,適于根據(jù)所述第二啟動(dòng)信號(hào)產(chǎn)生包含所述第二存儲(chǔ)單元的接口類型信息的片選信號(hào),選通所述第二存儲(chǔ)單元并采用所述第二存儲(chǔ)單元內(nèi)的所述啟動(dòng)裝載代碼再次進(jìn)行所述系統(tǒng)加載啟動(dòng)。
較佳地,所述中央處理器單元在根據(jù)所述第一啟動(dòng)信號(hào)或所述第二啟動(dòng)信號(hào)從所述第一存儲(chǔ)單元或所述第二存儲(chǔ)單元進(jìn)行所述系統(tǒng)加載啟動(dòng)之前:
所述中央處理器單元還適于根據(jù)所述復(fù)位信號(hào)進(jìn)行系統(tǒng)復(fù)位;
或,所述中央處理器單元未發(fā)送所述加載成功信號(hào)具體為:
在所述中央處理器單元進(jìn)行所述系統(tǒng)加載啟動(dòng)后,在設(shè)定時(shí)間內(nèi)所述中央處理器單元未向所述看門狗電路模塊發(fā)送的喂狗信號(hào)。
較佳地,當(dāng)進(jìn)行的所述再次系統(tǒng)加載啟動(dòng)失敗后,所述看門狗電路模塊適于輸出復(fù)位信號(hào);所述選擇模塊重新適于根據(jù)所述復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào)。
較佳地,當(dāng)采用一個(gè)所述啟動(dòng)裝載代碼進(jìn)行所述系統(tǒng)加載啟動(dòng)時(shí),檢測(cè)另外一個(gè)所述啟動(dòng)裝載代碼是否存在錯(cuò)誤;當(dāng)所述另外一個(gè)啟動(dòng)裝載代碼存在錯(cuò)誤時(shí),根據(jù)預(yù)置算法恢復(fù)所述另外一個(gè)啟動(dòng)裝載代碼。
較佳地,所述選擇模塊為JK觸發(fā)器,所述JK觸發(fā)器包含:
第一數(shù)據(jù)輸入端,適于輸入高電平信號(hào);
第二數(shù)據(jù)輸入端,適于輸入所述高電平信號(hào);
時(shí)鐘信號(hào)輸入端,適于輸入所述復(fù)位信號(hào);
第一數(shù)據(jù)輸出端,適于輸出邏輯信號(hào);
第二數(shù)據(jù)輸出端,適于輸出所述邏輯信號(hào)的取反信號(hào);
在所述第一數(shù)據(jù)輸入端、所述第二數(shù)據(jù)輸入端均輸入所述高電平信號(hào)時(shí):當(dāng)所述時(shí)鐘信號(hào)輸入端輸入所述復(fù)位信號(hào)后,所述JK觸發(fā)器控制所述第一數(shù)據(jù)輸出端、所述第二數(shù)據(jù)輸出端分別輸出的兩個(gè)信號(hào)組成所述第一啟動(dòng)信號(hào);當(dāng)所述時(shí)鐘信號(hào)輸入端再次輸入所述復(fù)位信號(hào),所述JK觸發(fā)器翻轉(zhuǎn)控制所述第一數(shù)據(jù)輸出端、所述第二數(shù)據(jù)輸出端分別輸出的另外兩個(gè)信號(hào)組成所述第二啟動(dòng)信號(hào)。
一種用于上述的具有自恢復(fù)功能的嵌入式系統(tǒng)的自恢復(fù)方法,所述自恢復(fù)方法包含:
根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào);
根據(jù)所述第一啟動(dòng)信號(hào)產(chǎn)生包含第一存儲(chǔ)單元的接口類型信息的片選信號(hào),選通所述第一存儲(chǔ)單元并采用所述第一存儲(chǔ)單元內(nèi)的所述啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng);
當(dāng)未發(fā)送加載成功信號(hào),判斷進(jìn)行的系統(tǒng)加載啟動(dòng)失敗時(shí),根據(jù)再次輸出的所述復(fù)位信號(hào)產(chǎn)生第二啟動(dòng)信號(hào);
根據(jù)所述第二啟動(dòng)信號(hào)產(chǎn)生包含所述第二存儲(chǔ)單元的接口類型的片選信號(hào),選通所述第二存儲(chǔ)單元并采用所述第二存儲(chǔ)單元內(nèi)的所述啟動(dòng)裝載代碼進(jìn)行再次所述系統(tǒng)加載啟動(dòng)。
較佳地,在根據(jù)所述第一啟動(dòng)信號(hào)或所述第二啟動(dòng)信號(hào)從對(duì)應(yīng)的所述第一存儲(chǔ)單元或所述第二存儲(chǔ)單元進(jìn)行所述系統(tǒng)加載啟動(dòng)之前:
根據(jù)所述復(fù)位信號(hào)進(jìn)行系統(tǒng)復(fù)位。
較佳地,所述未發(fā)送加載啟動(dòng)信號(hào)為:
在進(jìn)行所述系統(tǒng)加載啟動(dòng)后,設(shè)定時(shí)間內(nèi)未發(fā)出的喂狗信號(hào)。
較佳地,當(dāng)采用一個(gè)所述啟動(dòng)裝載代碼進(jìn)行所述系統(tǒng)加載啟動(dòng)時(shí),檢測(cè)另外一個(gè)所述啟動(dòng)裝載代碼是否存在錯(cuò)誤;當(dāng)所述另外一個(gè)啟動(dòng)裝載代碼存在錯(cuò)誤時(shí),根據(jù)預(yù)置算法恢復(fù)所述另外一個(gè)啟動(dòng)裝載代碼。
較佳地。當(dāng)進(jìn)行的所述再次系統(tǒng)加載啟動(dòng)失敗時(shí),重新執(zhí)行所述根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào)。
在符合本領(lǐng)域常識(shí)的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實(shí)例。
本發(fā)明的積極進(jìn)步效果在于:
本發(fā)明公開的一種具有自恢復(fù)功能的嵌入式系統(tǒng)以及自恢復(fù)方法,采用看門狗電路模塊、選擇模塊、中央處理器單元、第一存儲(chǔ)單元以及第二存儲(chǔ)單元組成具有自恢復(fù)功能的嵌入式系統(tǒng)。根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào);根據(jù)第一啟動(dòng)信號(hào)產(chǎn)生包含第一存儲(chǔ)單元的接口類型信息的片選信號(hào),選通第一存儲(chǔ)單元并采用第一存儲(chǔ)單元的啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng);當(dāng)進(jìn)行的系統(tǒng)加載啟動(dòng)失敗時(shí),根據(jù)再次輸出的復(fù)位信號(hào)產(chǎn)生第二啟動(dòng)信號(hào);根據(jù)第二啟動(dòng)信號(hào)產(chǎn)生包含第而存儲(chǔ)單元的接口類型信息的片選信號(hào),選通第二存儲(chǔ)單元并采用第二存儲(chǔ)單元的啟動(dòng)裝載代碼進(jìn)行再次系統(tǒng)加載啟動(dòng)。本發(fā)明從硬件、軟件雙重保證中央處理器單元有機(jī)會(huì)從失效的運(yùn)行環(huán)境中實(shí)現(xiàn)自動(dòng)恢復(fù),提高了嵌入式系統(tǒng)的可靠性。
附圖說(shuō)明
圖1為本發(fā)明具有自恢復(fù)功能的嵌入式系統(tǒng)的整體結(jié)構(gòu)示意圖。
圖2為本發(fā)明具有自恢復(fù)功能的嵌入式系統(tǒng)的實(shí)施例結(jié)構(gòu)示意圖。
圖3為本發(fā)明用于具有自恢復(fù)功能的嵌入式系統(tǒng)的自恢復(fù)方法的實(shí)施例流程示意圖。
具體實(shí)施方式
下面通過實(shí)施例的方式進(jìn)一步說(shuō)明本發(fā)明,但并不因此將本發(fā)明限制在所述的實(shí)施例范圍之中。下列實(shí)施例中未注明具體條件的實(shí)驗(yàn)方法,按照常規(guī)方法和條件,或按照商品說(shuō)明書選擇。
實(shí)施例1
如圖1所示,一種具有自恢復(fù)功能的嵌入式系統(tǒng),包含:看門狗電路模塊1、選擇模塊2、中央處理器單元3、第一存儲(chǔ)單元4以及第二存儲(chǔ)單元5。其中,第一存儲(chǔ)單元4、第二存儲(chǔ)單元5內(nèi)分別設(shè)有啟動(dòng)裝載代碼(bootloader代碼),第一存儲(chǔ)單元4、第二存儲(chǔ)單元5為具有不同接口類型的存儲(chǔ)單元。
本實(shí)施例中,第一存儲(chǔ)單元4、第二存儲(chǔ)單元5為具有不同接口類型的存儲(chǔ)單元,是指兩個(gè)存儲(chǔ)單元與中央處理器單元3連接的接口具有不同硬件類型和/或通信協(xié)議類型。
例如,當(dāng)?shù)谝淮鎯?chǔ)單元4可以采用NOR Flash、NAND Flash中的一種時(shí),對(duì)應(yīng)的第二存儲(chǔ)單元5分別可以采用NAND Flash、NOR Flash中的一種。第一存儲(chǔ)單元4、第二存儲(chǔ)單元5還可以采用安全數(shù)碼卡(SD卡)、利用USB(Universal Serial Bus,通用串行總線)接口與中央處理器單元3連接的存儲(chǔ)單元。
如圖1所示,本實(shí)施例公開的嵌入式系統(tǒng)還包含一個(gè)或多個(gè)功能不同的功能單元6。當(dāng)嵌入式系統(tǒng)完成系統(tǒng)加載啟動(dòng)后,中央處理器單元3控制一個(gè)或多個(gè)功能不同的功能單元6進(jìn)行正常運(yùn)行。
本實(shí)施例公開的一種具有自恢復(fù)功能的嵌入式系統(tǒng),具體工作原理如下:
首先,看門狗電路模塊1輸出復(fù)位信號(hào);其次,選擇模塊2根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào);再次,中央處理器單元3根據(jù)第一啟動(dòng)信號(hào)產(chǎn)生包含第一存儲(chǔ)單元4的接口類型信息的片選信號(hào),選通第一存儲(chǔ)單元4并采用第一存儲(chǔ)單元4內(nèi)的啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)。當(dāng)系統(tǒng)加載啟動(dòng)成功時(shí),中央處理器單元3控制一個(gè)或多個(gè)功能不同的功能單元6進(jìn)行正常運(yùn)行,中央處理器單元3發(fā)送喂狗信號(hào)至看門狗電路模塊1。
當(dāng)中央處理器單元3進(jìn)行的系統(tǒng)加載啟動(dòng)失敗后,看門狗電路模塊1再次輸出復(fù)位信號(hào);選擇模塊2根據(jù)復(fù)位信號(hào)產(chǎn)生第二啟動(dòng)信號(hào);中央處理器單元3根據(jù)第二啟動(dòng)信號(hào)產(chǎn)生包含第二存儲(chǔ)單元5的接口類型信息的片選信號(hào),選通第二存儲(chǔ)單元5并采用第二存儲(chǔ)單元5內(nèi)的啟動(dòng)裝載代碼從第二存儲(chǔ)單元5再次進(jìn)行系統(tǒng)加載啟動(dòng)。
本實(shí)施例中,中央處理器單元3根據(jù)第一存儲(chǔ)單元4或第二存儲(chǔ)單元5內(nèi)的bootloader代碼進(jìn)行系統(tǒng)加載啟動(dòng)。
以上為本發(fā)明實(shí)施例1提供的具有自恢復(fù)功能的嵌入式系統(tǒng),通過該實(shí)施方式,在系統(tǒng)啟動(dòng)時(shí)中央處理器單元3會(huì)自動(dòng)循環(huán)可以引導(dǎo)的啟動(dòng)裝載代碼,實(shí)現(xiàn)系統(tǒng)加載啟動(dòng)。當(dāng)任一存儲(chǔ)單元硬件或存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼出現(xiàn)錯(cuò)誤或損壞導(dǎo)致當(dāng)次系統(tǒng)加載啟動(dòng)失敗時(shí),可以利用另一存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼實(shí)現(xiàn)系統(tǒng)加載啟動(dòng)。本實(shí)施例能夠?qū)崿F(xiàn)嵌入式系統(tǒng)自動(dòng)切換啟動(dòng),避免由于存儲(chǔ)單元硬件或存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼的錯(cuò)誤或問題導(dǎo)致系統(tǒng)加載啟動(dòng)失敗,從而必須通過人工操作介入實(shí)現(xiàn)系統(tǒng)加載啟動(dòng)。
實(shí)施例2
如圖1所示,一種具有自恢復(fù)功能的嵌入式系統(tǒng),包含:看門狗電路模塊1、選擇模塊2、中央處理器單元3、第一存儲(chǔ)單元4、第二存儲(chǔ)單元5以及功能單元6。
其中,第一存儲(chǔ)單元4、第二存儲(chǔ)單元5內(nèi)分別設(shè)有啟動(dòng)裝載代碼(bootloader代碼),第一存儲(chǔ)單元4、第二存儲(chǔ)單元5為具有不同接口類型的存儲(chǔ)單元。
本實(shí)施例中,第一存儲(chǔ)單元4、第二存儲(chǔ)單元5為具有不同接口類型的存儲(chǔ)單元,是指兩個(gè)存儲(chǔ)單元與中央處理器單元3連接的接口具有不同硬件類型和/或通信協(xié)議類型。
例如,當(dāng)?shù)谝淮鎯?chǔ)單元4可以采用NOR Flash、NAND Flash中的一種時(shí),對(duì)應(yīng)的第二存儲(chǔ)單元5分別可以采用NAND Flash、NOR Flash中的一種。第一存儲(chǔ)單元4、第二存儲(chǔ)單元5還可以采用安全數(shù)碼卡(Secure DigitalMemory Card,SD卡)、利用USB(Universal Serial Bus,通用串行總線)接口與中央處理器單元3連接的存儲(chǔ)單元。
本實(shí)施例公開的一種具有自恢復(fù)功能的嵌入式系統(tǒng),具體工作原理如下:
首先,看門狗電路模塊1輸出復(fù)位信號(hào)。其次,選擇模塊2根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào)。再次,中央處理器單元3根據(jù)復(fù)位信號(hào)進(jìn)行復(fù)位,并采集第一啟動(dòng)信號(hào)。第四,中央處理器單元3根據(jù)第一啟動(dòng)信號(hào)產(chǎn)生包含第一存儲(chǔ)單元4的接口類型信息的片選信號(hào),選通第一存儲(chǔ)單元4并采用內(nèi)的啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)。當(dāng)系統(tǒng)加載啟動(dòng)成功時(shí),中央處理器單元3控制一個(gè)或多個(gè)功能不同的功能單元6進(jìn)行正常運(yùn)行,中央處理器單元3發(fā)送喂狗信號(hào)至看門狗電路模塊1。
在中央處理器單元3進(jìn)行系統(tǒng)加載啟動(dòng)后,當(dāng)在設(shè)定時(shí)間內(nèi)中央處理器單元3未向看門狗電路模塊1發(fā)送喂狗信號(hào)時(shí),看門狗電路模塊1判斷中央處理器單元3進(jìn)行的系統(tǒng)加載啟動(dòng)失敗。本實(shí)施例中,設(shè)定時(shí)間可選范圍為0-1.6s。
當(dāng)中央處理器單元3進(jìn)行的系統(tǒng)加載啟動(dòng)失敗后,首先,看門狗電路模塊1再次輸出復(fù)位信號(hào);其次,選擇模塊2根據(jù)復(fù)位信號(hào)產(chǎn)生第二啟動(dòng)信號(hào);再次,中央處理器單元3根據(jù)復(fù)位信號(hào)進(jìn)行復(fù)位,并采集第二啟動(dòng)信號(hào);最后,中央處理器單元3根據(jù)第二啟動(dòng)信號(hào)產(chǎn)生包含第二存儲(chǔ)單元的接口類型信息的片選信號(hào),選通第二存儲(chǔ)單元5并采用第二存儲(chǔ)單元5內(nèi)的啟動(dòng)裝載代碼再次進(jìn)行系統(tǒng)加載啟動(dòng)。當(dāng)系統(tǒng)加載啟動(dòng)成功時(shí),中央處理器單元3控制一個(gè)或多個(gè)功能不同的功能單元6進(jìn)行正常運(yùn)行,中央處理器單元3發(fā)送喂狗信號(hào)至看門狗電路模塊1。
本實(shí)施例中,中央處理器單元3根據(jù)啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)。當(dāng)采用一個(gè)啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)時(shí),檢測(cè)另外一個(gè)啟動(dòng)裝載代碼是否存在錯(cuò)誤;當(dāng)另外一個(gè)啟動(dòng)裝載代碼存在錯(cuò)誤時(shí),根據(jù)預(yù)置算法恢復(fù)當(dāng)另外一個(gè)啟動(dòng)裝載代碼。
本實(shí)施例中,當(dāng)再次進(jìn)行的系統(tǒng)加載啟動(dòng)失敗后,看門狗電路模塊1重新發(fā)出復(fù)位信號(hào),選擇模塊2根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào);中央處理器單元3根據(jù)復(fù)位信號(hào)進(jìn)行復(fù)位,并采集第一啟動(dòng)信號(hào);最后,中央處理器單元3根據(jù)第一啟動(dòng)信號(hào)產(chǎn)生包含第一存儲(chǔ)單元4的接口類型信息的片選信號(hào),選通第一存儲(chǔ)單元4并采用第一存儲(chǔ)單元4內(nèi)的啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)。
如圖1、2所示,本實(shí)施例中,中央處理器單元3分別與看門狗電路模塊1、選擇模塊2、第一存儲(chǔ)單元4、第二存儲(chǔ)單元5進(jìn)行數(shù)據(jù)通訊,看門狗電路模塊1與選擇模塊2進(jìn)行數(shù)據(jù)通訊。
本實(shí)施例中,JK觸發(fā)器作為選擇模塊2,該JK觸發(fā)器包含:第一數(shù)據(jù)輸入端、第二數(shù)據(jù)輸入端、時(shí)鐘信號(hào)輸入端、第一數(shù)據(jù)輸出端以及第二數(shù)據(jù)輸出端。
其中,第一數(shù)據(jù)輸入端I1適于輸入高電平信號(hào)H;第二數(shù)據(jù)輸入端I2適于輸入高電平信號(hào)H;時(shí)鐘信號(hào)輸入端CLOCK適于輸入復(fù)位信號(hào)RST_OUT;第一數(shù)據(jù)輸出端Q1適于輸出邏輯信號(hào);第二數(shù)據(jù)輸出端適于輸出邏輯信號(hào)的取反信號(hào)。
根據(jù)JK觸發(fā)器的工作原理可知,在第一數(shù)據(jù)輸入端I1、第二數(shù)據(jù)輸入端I2均輸入高電平信號(hào)H時(shí):當(dāng)時(shí)鐘信號(hào)輸入端CLOCK輸入復(fù)位信號(hào)RST_OUT后,JK觸發(fā)器控制第一數(shù)據(jù)輸出端Q1、第二數(shù)據(jù)輸出端分別輸出的兩個(gè)信號(hào)組成第一啟動(dòng)信號(hào);當(dāng)時(shí)鐘信號(hào)輸入端再次輸入復(fù)位信號(hào),JK觸發(fā)器翻轉(zhuǎn)控制第一數(shù)據(jù)輸出端Q1、第二數(shù)據(jù)輸出端分別輸出的兩個(gè)不同信號(hào)組成第二啟動(dòng)信號(hào)。
本實(shí)施例采用NOR Flash、NAND Flash作為嵌入式系統(tǒng)的兩個(gè)存儲(chǔ)單元。
A.在嵌入式系統(tǒng)初次上電后,看門狗電路模塊1的RST OUT輸出端輸出復(fù)位信號(hào)RST_OUT。
B.復(fù)位信號(hào)RST_OUT輸入至中央處理器單元3的RST_IN輸入端用于復(fù)位中央處理器單元3,中央處理器單元3分別通過IN_1輸入端和IN_2輸入端采樣對(duì)應(yīng)的NOR_Bootstrip或NAND_Bootstrip信號(hào),這兩個(gè)信號(hào)在RST_OUT上升沿被采樣的值,將決定中央處理器單元3的CS_NOR、CS_NAND哪個(gè)信號(hào)對(duì)應(yīng)通過中央處理器單元3的NOR_CS輸出端或NAND_CS輸出端被送出。
本實(shí)施例中,利用JK觸發(fā)器的原理,采用復(fù)位信號(hào)RST_OUT作為時(shí)鐘信號(hào),第一數(shù)據(jù)輸入端I1、第二數(shù)據(jù)輸入端I2均輸入高電平信號(hào)H,JK觸發(fā)器隨機(jī)控制兩個(gè)數(shù)據(jù)輸出端輸出一組選通信號(hào)(圖2中,當(dāng)?shù)谝粩?shù)據(jù)輸出端Q1、第二數(shù)據(jù)輸出端輸出的兩個(gè)信號(hào)的狀態(tài)組合為10時(shí),則對(duì)應(yīng)選通NOR Flash,也即輸出NOR Bootstrip信號(hào)至中央處理器單元3),則該輸出選通信號(hào)選擇的存儲(chǔ)單元為第一存儲(chǔ)單元4。
C.如果JK觸發(fā)器輸出NOR_Bootstrip信號(hào),則中央處理器單元3被配置為從NOR Flash啟動(dòng),也即NOR Flash作為第一存儲(chǔ)單元4,中央處理器單元3輸出CS_NOR信號(hào)。
D.如果由于NOR FLASH損壞或是NOR FLASH內(nèi)設(shè)的bootloader代碼被破壞,系統(tǒng)加載啟動(dòng)沒有成功,則看門狗電路模塊1的WDI輸入端的未在設(shè)定時(shí)間內(nèi)獲得中央處理單元3的FEED輸出端輸出的喂狗信號(hào)FEED_WD,則看門狗電路模塊1會(huì)在設(shè)定時(shí)間之后再次送出RST_OUT信號(hào),此次JK觸發(fā)器的第一數(shù)據(jù)輸出端Q1、第二數(shù)據(jù)輸出端輸出的兩個(gè)信號(hào)的狀態(tài)組合為01時(shí),也即輸出NAND_Bootstrip信號(hào)至中央處理器單元3,則NAND Flash作為第二存儲(chǔ)單元5,中央處理器單元3輸出CS_NAND信號(hào),選擇從NAND Flash進(jìn)行系統(tǒng)加載啟動(dòng)。
E.當(dāng)任一個(gè)啟動(dòng)裝載代碼正確運(yùn)行以后,檢測(cè)另外一個(gè)啟動(dòng)裝載代碼是否存在錯(cuò)誤;當(dāng)另外一個(gè)啟動(dòng)裝載代碼存在錯(cuò)誤時(shí),根據(jù)預(yù)置算法恢復(fù)當(dāng)另外一個(gè)啟動(dòng)裝載代碼。本實(shí)施例中的預(yù)置算法包括:基于文件特征的文件恢復(fù)算法、基于ABFF算法的文件掃描恢復(fù)算法、CRC校驗(yàn)恢復(fù)算法等方法。
上述為本發(fā)明實(shí)施例2公開的具有自恢復(fù)功能的嵌入式系統(tǒng)的實(shí)施方式。本實(shí)施例采用自動(dòng)切換模式,系統(tǒng)上電后,當(dāng)?shù)谝淮螆?zhí)行系統(tǒng)加載啟動(dòng)功能由于存儲(chǔ)單元硬件或該存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼損壞或錯(cuò)誤時(shí),無(wú)需人工干預(yù),可自動(dòng)從另一存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼執(zhí)行系統(tǒng)加載啟動(dòng)功能,進(jìn)而恢復(fù)整個(gè)系統(tǒng)。同時(shí),在采用一個(gè)啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)時(shí),對(duì)另一個(gè)啟動(dòng)裝載代碼進(jìn)行檢測(cè)及恢復(fù)。綜上所述,本發(fā)明從硬件、軟件雙重保證中央處理器單元有機(jī)會(huì)從失效的運(yùn)行環(huán)境中實(shí)現(xiàn)自動(dòng)恢復(fù),提高了嵌入式系統(tǒng)的可靠性,適用于需要長(zhǎng)期可靠工作的應(yīng)用環(huán)境。
實(shí)施例3
一種用于如圖1所示的具有自恢復(fù)功能的嵌入式系統(tǒng)的自恢復(fù)方法,其中,該嵌入式系統(tǒng)包含:看門狗電路模塊1、選擇模塊2、中央處理器單元3、第一存儲(chǔ)單元4、第二存儲(chǔ)單元5以及功能單元6。本實(shí)施例的自恢復(fù)方法包含:
看門狗電路模塊1產(chǎn)生復(fù)位信號(hào),選擇模塊2根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào)。
中央處理器單元3根據(jù)第一啟動(dòng)信號(hào)產(chǎn)生包含第一存儲(chǔ)單元4的接口類型信息的片選信號(hào),選通第一存儲(chǔ)單元4并采用第一存儲(chǔ)單元4內(nèi)的啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)。
當(dāng)進(jìn)行的系統(tǒng)加載啟動(dòng)失敗時(shí),看門狗電路模塊1再次輸出的復(fù)位信號(hào),選擇模塊2根據(jù)再次輸出的復(fù)位信號(hào)產(chǎn)生第二啟動(dòng)信號(hào)。
中央處理器單元3根據(jù)第二啟動(dòng)信號(hào)產(chǎn)生包含第二存儲(chǔ)單元5的接口類型信息的片選信號(hào),選通第二存儲(chǔ)單元5并采用第二存儲(chǔ)單元5內(nèi)的啟動(dòng)裝載代碼進(jìn)行再次系統(tǒng)加載啟動(dòng)。
以上為本發(fā)明實(shí)施例3提供的用于具有自恢復(fù)功能的嵌入式系統(tǒng)的自恢復(fù)方法,通過該實(shí)施方式,在系統(tǒng)啟動(dòng)時(shí)中央處理器單元會(huì)自動(dòng)循環(huán)可以引導(dǎo)的啟動(dòng)裝載代碼,實(shí)現(xiàn)系統(tǒng)加載啟動(dòng)。當(dāng)任一存儲(chǔ)單元硬件或存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼出現(xiàn)錯(cuò)誤或損壞導(dǎo)致當(dāng)次系統(tǒng)加載啟動(dòng)失敗時(shí),可以利用另一存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼實(shí)現(xiàn)系統(tǒng)加載啟動(dòng)。本實(shí)施例能夠?qū)崿F(xiàn)嵌入式系統(tǒng)自動(dòng)切換啟動(dòng),避免由于存儲(chǔ)單元硬件或存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼的錯(cuò)誤或問題導(dǎo)致系統(tǒng)加載啟動(dòng)失敗,從而必須要求人工操作介入實(shí)現(xiàn)系統(tǒng)加載啟動(dòng)。
實(shí)施例4
基于上述本發(fā)明實(shí)施例3公開的一種用于具有自恢復(fù)功能的嵌入式系統(tǒng)的自恢復(fù)方法,如圖1所示,該嵌入式系統(tǒng)包含:看門狗電路模塊1、選擇模塊2、中央處理器單元3、第一存儲(chǔ)單元4、第二存儲(chǔ)單元5以及功能單元6。
如圖3所示,本實(shí)施例公開了具體的自恢復(fù)方法:
S1,看門狗電路模塊1產(chǎn)生復(fù)位信號(hào),選擇模塊2根據(jù)復(fù)位信號(hào)產(chǎn)生第一啟動(dòng)信號(hào)。
S2,中央處理器單元3根據(jù)第一啟動(dòng)信號(hào)產(chǎn)生包含第一存儲(chǔ)單元4的接口類型信息的片選信號(hào),選通第一存儲(chǔ)單元4并采用第一存儲(chǔ)單元4內(nèi)的啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)。
在步驟S2之前,中央處理器單元3根據(jù)復(fù)位信號(hào)進(jìn)行系統(tǒng)復(fù)位。
S3,看門狗電路模塊1判斷系統(tǒng)加載啟動(dòng)是否成功;當(dāng)成功時(shí),中央處理器單元3控制功能單元6進(jìn)行正常運(yùn)行;當(dāng)失敗時(shí),執(zhí)行步驟S4。步驟S3具體包含:
當(dāng)在設(shè)定時(shí)間內(nèi)中央處理器單元3未發(fā)送喂狗信號(hào)至看門狗電路模塊1時(shí),看門狗電路模塊1判斷進(jìn)行的系統(tǒng)加載啟動(dòng)失敗。
S4,看門狗電路模塊1再次輸出的復(fù)位信號(hào),選擇模塊2根據(jù)再次輸出的復(fù)位信號(hào)產(chǎn)生第二啟動(dòng)信號(hào)。
S5,中央處理器單元3根據(jù)第二啟動(dòng)信號(hào)產(chǎn)生包含第二存儲(chǔ)單元5的接口類型信息的片選信號(hào),選通第二存儲(chǔ)單元5并采用第二存儲(chǔ)單元5內(nèi)的啟動(dòng)裝載代碼進(jìn)行再次系統(tǒng)加載啟動(dòng)。
在步驟S5之前,中央處理器單元3根據(jù)復(fù)位信號(hào)進(jìn)行系統(tǒng)復(fù)位。
S6,看門狗電路模塊1判斷系統(tǒng)加載啟動(dòng)是否成功;當(dāng)成功時(shí),中央處理器單元3控制功能單元6進(jìn)行正常運(yùn)行;當(dāng)失敗時(shí),執(zhí)行步驟S1。步驟S6具體包含:
當(dāng)在設(shè)定時(shí)間內(nèi)中央處理器單元3未發(fā)送喂狗信號(hào)至看門狗電路模塊1時(shí),看門狗電路模塊1判斷進(jìn)行的系統(tǒng)加載啟動(dòng)失敗。
本實(shí)施例中,在進(jìn)行步驟S2或S5中,當(dāng)采用一個(gè)啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)時(shí),檢測(cè)另外一個(gè)啟動(dòng)裝載代碼是否存在錯(cuò)誤;當(dāng)另外一個(gè)啟動(dòng)裝載代碼存在錯(cuò)誤時(shí),根據(jù)預(yù)置算法恢復(fù)當(dāng)另外一個(gè)啟動(dòng)裝載代碼。
上述為本發(fā)明實(shí)施例4公開的一種用于具有自恢復(fù)功能的嵌入式系統(tǒng)的自恢復(fù)方法的實(shí)施方式。本實(shí)施例采用自動(dòng)切換模式,系統(tǒng)上電后,當(dāng)?shù)谝淮螆?zhí)行系統(tǒng)加載啟動(dòng)功能由于存儲(chǔ)單元硬件或該存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼損壞或錯(cuò)誤時(shí),無(wú)需人工干預(yù),可自動(dòng)從另一存儲(chǔ)單元內(nèi)的啟動(dòng)裝載代碼執(zhí)行系統(tǒng)加載啟動(dòng)功能,進(jìn)而恢復(fù)整個(gè)系統(tǒng)。同時(shí),在采用一個(gè)啟動(dòng)裝載代碼進(jìn)行系統(tǒng)加載啟動(dòng)時(shí),對(duì)另一個(gè)啟動(dòng)裝載代碼進(jìn)行檢測(cè)及恢復(fù)。綜上所述,本發(fā)明從硬件、軟件雙重保證中央處理器單元有機(jī)會(huì)從失效的運(yùn)行環(huán)境中實(shí)現(xiàn)自動(dòng)恢復(fù),提高了嵌入式系統(tǒng)的可靠性。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說(shuō)明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對(duì)這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。