專利名稱:一種自我修復(fù)的多重開機(jī)系統(tǒng)及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種開機(jī)系統(tǒng)及其方法,尤其是一種自我修復(fù)的多重開機(jī)系統(tǒng) 及其方法。
技術(shù)背景開機(jī)程序系統(tǒng)是嵌入式裝置中最重要的部份,當(dāng)裝置完成開機(jī)程序后,可 以有許多的防護(hù)或容錯措施以防止人為或非人為因素所造成的毀損。但為求精 簡和加快開機(jī)速度,許多嵌入式裝置往往完全不具備開機(jī)程序錯誤回復(fù)的功能, 或者是開機(jī)程序錯誤回復(fù)的功能不佳。其它尚有許多非人為的因素可能造成開機(jī)系統(tǒng)的故障,例如Multi Level Cell (MLC)的閃存有讀寫次數(shù)約一萬次的限制,且其容易受到電磁干擾造成數(shù) 據(jù)損毀;而硬盤可能因為震動或是突然斷電等因素,造成開機(jī)程序的少數(shù)數(shù)據(jù) 區(qū)塊損毀而使得裝置無法開機(jī)運(yùn)作。因此現(xiàn)有的開機(jī)程序系統(tǒng)的缺點在于,只 要開機(jī)程序有一小部分?jǐn)?shù)據(jù)區(qū)塊損毀,便會造成整個裝置因無法開機(jī)而無法使 用。發(fā)明內(nèi)容本發(fā)明的目的在于提供一種自我修復(fù)的多重開機(jī)系統(tǒng)及其方法,解決背景 技術(shù)中所述的開機(jī)程序局部數(shù)據(jù)塊損毀且為少量離散分布的情況下,所引起的 整個裝置無法開機(jī)使用的技術(shù)問題,并且本發(fā)明成本低廉、簡單易行。本發(fā)明的技術(shù)解決方案是本發(fā)明一種自我修復(fù)的多重開機(jī)系統(tǒng),其特殊 之處在于該系統(tǒng)包括用于儲存多個正值開機(jī)程序及至少一個反值開機(jī)程序的 儲存模塊、自多個正值開機(jī)程序中取出第一比對程序及第二比對程序進(jìn)行開機(jī) 程序比對的比對模塊和根據(jù)比對模塊的結(jié)果覆寫開機(jī)程序的覆寫模塊,儲存模 塊接入比對模塊,比對模塊接入覆寫模塊,覆寫模塊接入儲存模塊。該系統(tǒng)還包括有用于檢査錯誤檢查碼的檢査模塊,儲存模塊接入檢查模塊, 檢查模塊分別接入比對模塊和覆寫模塊。上述比對是通過比對模塊以數(shù)據(jù)區(qū)塊為比對單位、利用互斥運(yùn)算進(jìn)行比對。一種實現(xiàn)上述的自我修復(fù)的多重開機(jī)系統(tǒng)的開機(jī)方法,其特殊之處在于 該方法包括以下步驟301) 提供開機(jī)程序提供多個正值開機(jī)程序及至少一反值開機(jī)程序,正值 開機(jī)程序及反值開機(jī)程序均由多個數(shù)據(jù)區(qū)塊組成,且數(shù)據(jù)區(qū)塊由多個位值組成;302) 獲取比對程序自任一正值開機(jī)程序中取得第一比對程序及第二比對 程序;303) 第一次比對比對第一比對程序與第二比對程序的數(shù)據(jù)區(qū)塊;304) 獲取待判定區(qū)塊自第一比對程序中取得相異于第二比對程序的至少 一數(shù)據(jù)區(qū)塊為待判定區(qū)塊;305) 第二次比對比對待判定區(qū)塊與反值開機(jī)程序,獲取待判定區(qū)塊中與 反值開機(jī)程序中未完全反相的數(shù)據(jù)區(qū)塊;306) 修復(fù)開機(jī)程序即修復(fù)獲取第一比對程序或第二比對程序的正值開機(jī)程 序以第二比對程序覆寫步驟305)獲得的數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對 程序,進(jìn)而得到修復(fù)的第一比對程序或第二比對程序的正值開機(jī)程序;307) 是否修復(fù)其余的開機(jī)程序,否,則結(jié)束;是,則進(jìn)至步驟308);308) 修復(fù)其余的開機(jī)程序,以第一比對程序覆寫第二比對程序,從而修復(fù) 其余的正值開機(jī)程序;同時,以反相運(yùn)算后的第一比對程序覆寫反值開機(jī)程序, 從而修復(fù)反值開機(jī)程序,結(jié)束程序的修復(fù)。上述步驟301)與302)之間還包括步驟502)檢查正值開機(jī)程序的錯誤檢 查碼是否正常,若至少一個正值開機(jī)程序的錯誤檢查碼正常,則進(jìn)至步驟504); 若所有正值開機(jī)程序的錯誤檢查碼均為異常,則進(jìn)至步驟503);503) 檢查反值開機(jī)程序的錯誤檢查碼是否正常,若是,則進(jìn)至步驟504);若否,則進(jìn)至步驟302);504) 修復(fù)其余的開機(jī)程序,當(dāng)步驟502)檢查正值開機(jī)程序的錯誤檢査碼 中至少一個錯誤檢査碼正常,則以錯誤檢查碼正常的正值開機(jī)程序覆寫錯誤檢 査碼異常的其余的正值開機(jī)程序;同時,以反相運(yùn)算后的錯誤檢查碼正常的正 值開機(jī)程序覆寫錯誤檢査碼異常的反值開機(jī)程序;當(dāng)步驟503)檢査反值開機(jī)程 序的錯誤檢查碼是正常時,則以反相運(yùn)算后的錯誤檢査碼正常的反值開機(jī)程序 覆寫錯誤檢查碼異常的正值開機(jī)程序。一種實現(xiàn)上述的自我修復(fù)的多重開機(jī)系統(tǒng)的開機(jī)方法,其特殊之處在于 該方法包括以下步驟401) 提供開機(jī)程序提供多個正值開機(jī)程序及至少一反值開機(jī)程序,正值 開機(jī)程序及反值開機(jī)程序均由多個數(shù)據(jù)區(qū)塊組成,且數(shù)據(jù)區(qū)塊由多個位值組成;402) 獲取比對程序自任一正值開機(jī)程序中取得第一比對程序及第二比對 程序;403) 第一次比對比對第一比對程序與反值開機(jī)程序的數(shù)據(jù)區(qū)塊;404) 獲取待判定區(qū)塊自第一比對程序中取得與反值開機(jī)程序未完全反相 的至少一數(shù)據(jù)區(qū)塊為待判定區(qū)塊;405) 第二次比對比對待判定區(qū)塊與第二比對程序,獲取待判定區(qū)塊中與 第二比對程序相異的數(shù)據(jù)區(qū)塊;406) 修復(fù)開機(jī)程序即修復(fù)獲取第一比對程序或第二比對程序的正值開機(jī)程 序以第二比對程序覆寫該數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對程序,進(jìn)而得 到修復(fù)的獲取第一比對程序或第二比對程序的正值開機(jī)程序;407) 是否修復(fù)其余的開機(jī)程序,否,則結(jié)束;是,則進(jìn)至步驟308);408) 修復(fù)其余的開機(jī)程序,以第一比對程序覆寫第二比對程序,從而修復(fù) 其余的正值開機(jī)程序;同時,以反相運(yùn)算后的第一比對程序覆寫反值開機(jī)程序, 從而修復(fù)反值開機(jī)程序,結(jié)束程序的修復(fù)。上述步驟401)與402)之間還包括步驟602)檢査正值開機(jī)程序的錯誤檢 查碼是否正常,若至少一個正值開機(jī)程序的錯誤檢查碼正常,則進(jìn)至步驟604); 若所有正值開機(jī)程序的錯誤檢查碼均為異常,則進(jìn)至步驟603);603) 檢查反值開機(jī)程序的錯誤檢査碼是否正常,若是,則進(jìn)至步驟604); 若否,則進(jìn)至步驟402);604) 修復(fù)其余的開機(jī)程序,當(dāng)步驟602)檢查正值開機(jī)程序的錯誤檢查碼 中至少一個錯誤檢查碼正常,則以錯誤檢査碼正常的正值開機(jī)程序覆寫錯誤檢 査碼異常的其余的正值開機(jī)程序;同時,以反相運(yùn)算后的錯誤檢査碼正常的正 值開機(jī)程序覆寫錯誤檢查碼異常的反值開機(jī)程序;當(dāng)驟503)檢查反值開機(jī)程序 的錯誤檢查碼是正常時,則以反相運(yùn)算后的錯誤檢查碼正常的反值開機(jī)程序覆 寫錯誤檢查碼異常的正值開機(jī)程序。通過比對模塊是以數(shù)據(jù)區(qū)塊為比對單位、利用互斥運(yùn)算進(jìn)行比對。 上述錯誤檢查碼是循環(huán)冗余編碼。 上述錯誤檢查碼是總合檢查值。通過本發(fā)明的自我修復(fù)的開機(jī)方法,可在正值開機(jī)程序與反值開機(jī)程序的 數(shù)據(jù)區(qū)塊損毀僅為少量且離散分布的情況下,予以修復(fù)且簡單快速;而本發(fā)明 的多重開機(jī)程序系統(tǒng)組成結(jié)構(gòu)簡單、操作簡單易行,成本低廉。
圖1為開機(jī)程序示意圖;圖2為比對程序示意圖;圖3為本發(fā)明實施例一的系統(tǒng)示意圖; 圖4為本發(fā)明實施例二的系統(tǒng)示意圖; 圖5為本發(fā)明實施例一的方法流程圖; 圖6為本發(fā)明實施例二的方法流程圖。
具體實施方式
參見圖1,本發(fā)明的開機(jī)程序包括兩個正值開機(jī)程序101及一個反值開機(jī)程 序102,正值開機(jī)程序101及反值開機(jī)程序102均由數(shù)據(jù)區(qū)塊103組成,數(shù)據(jù)區(qū) 塊103由位值104組成。參見圖2,本發(fā)明的比對程序包括第一比對程序105及第二比對程序106, 其中第一比對程序105中包括數(shù)據(jù)區(qū)塊107。參見圖3,本發(fā)明實施例一的系統(tǒng)包括用于儲存多個正值開機(jī)程序101及至 少一個反值開機(jī)程序102的儲存模塊201、自多個正值開機(jī)程序101中取出第一 比對程序105及第二比對程序106進(jìn)行開機(jī)程序比對的比對模塊202和根據(jù)比 對模塊202的結(jié)果覆寫開機(jī)程序的覆寫模塊203,其中,儲存模塊201接入比對 模塊202,比對模塊202接入覆寫模塊203,覆寫模塊203接入儲存模塊201 。本發(fā)明中所述的正值開機(jī)程序及反值開機(jī)程序是由多個數(shù)據(jù)區(qū)塊103組成, 而每一個數(shù)據(jù)區(qū)塊103由多個位值104組成。其中,反值開機(jī)程序102的位值 104是經(jīng)由反相運(yùn)算(NOT運(yùn)算)正值開機(jī)程序101的位值104而得,比對模 塊202是以數(shù)據(jù)區(qū)塊103為比對單位,利用互斥運(yùn)算(XOR運(yùn)算)進(jìn)行開機(jī)程 序的比對。參見圖4,本發(fā)明的系統(tǒng)還包括用于檢查錯誤檢查碼的檢查模塊401,儲存 模塊201接入檢查模塊401,檢查模塊401分別接入比對模塊202和覆寫模塊 202。參見圖5,本發(fā)明實施例一的具體步驟如下步驟301、提供開機(jī)程序提供多個正值開機(jī)程序101及至少一反值開機(jī)程序102,正值開機(jī)程序101及反值開機(jī)程序102均由多個數(shù)據(jù)區(qū)塊103組成,且 數(shù)據(jù)區(qū)塊103由多個位值104組成;步驟302、獲取比對程序自任一正值開機(jī)程序101中取得第一比對程序 105及第二比對程序106;步驟303、第一次比對比對第一比對程序105與第二比對程序106的數(shù)據(jù) 區(qū)塊103或比對第一比對程序105與反值開機(jī)程序102的數(shù)據(jù)區(qū)塊103;步驟304、獲取待判定區(qū)塊當(dāng)在步驟303中比對第一比對程序105與第二比對程序106時,則自第一 比對程序105中取得相異于第二比對程序106的至少一數(shù)據(jù)區(qū)塊為待判定區(qū)塊 107;當(dāng)在步驟303中比對第一比對程序105與反值開機(jī)程序102時,則自第一 比對程序105中取得與反值開機(jī)程序102未完全反相的至少一數(shù)據(jù)區(qū)塊為待判 定區(qū)塊107;步驟305、第二次比對當(dāng)步驟304中所述的待判定區(qū)塊107為自第一比對程序105中取得相異于 第二比對程序106的至少一數(shù)據(jù)區(qū)塊時,則比對待判定區(qū)塊107與反值開機(jī)程 序102,獲取待判定區(qū)塊107中與反值開機(jī)程序102中未完全反相的數(shù)據(jù)區(qū)塊;當(dāng)步驟304中所述的待判定區(qū)塊107為自第一比對程序105中取得與反值 開機(jī)程序102未完全反相的至少一數(shù)據(jù)區(qū)塊時,比對待判定區(qū)塊107與第二比 對程序106,獲取待判定區(qū)塊107中與第二比對程序106相異的數(shù)據(jù)區(qū)塊;步驟306、修復(fù)開機(jī)程序即修復(fù)獲取第一比對程序105或第二比對程序106 的正值開機(jī)程序101:當(dāng)步驟305獲取待判定區(qū)塊107中與反值開機(jī)程序102中未完全反相的數(shù) 據(jù)區(qū)塊時,則以第二比對程序106覆寫該數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對 程序105,進(jìn)而得到修復(fù)的獲取第一比對程序105或第二比對程序106的正值開 機(jī)程序101;當(dāng)步驟305獲取待判定區(qū)塊107中與第二比對程序106相異的數(shù)據(jù)區(qū)塊時, 則以第二比對程序106覆寫該數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對程序105,進(jìn) 而得到修復(fù)的獲取第一比對程序105或第二比對程序106的正值開機(jī)程序101;步驟307、是否修復(fù)其余的開機(jī)程序,否,則結(jié)束;是,則進(jìn)至步驟308;步驟308、修復(fù)其余的開機(jī)程序以第一比對程序105覆寫第二比對程序 106,從而修復(fù)其余的正值開機(jī)程序101;同時,以反相運(yùn)算(NOT運(yùn)算)后的 第一比對程序105覆寫反值開機(jī)程序102,從而修復(fù)反值開機(jī)程序102。參見圖6,本發(fā)明實施例一的具體步驟如下步驟301、提供開機(jī)程序提供多個正值開機(jī)程序101及至少一反值開機(jī)程 序102,正值開機(jī)程序101及反值開機(jī)程序102均由多個數(shù)據(jù)區(qū)塊103組成,且 數(shù)據(jù)區(qū)塊103由多個位值104組成;步驟502:檢査正值開機(jī)程序IOI的錯誤檢査碼是否正常,若至少一個正值 開機(jī)程序101的錯誤檢查碼正常,則進(jìn)至步驟504;若所有正值開機(jī)程序101的 錯誤檢査碼均為異常,則進(jìn)至步驟503;步驟503:檢査反值開機(jī)程序102的錯誤檢査碼是否正常,若是,則進(jìn)至步驟504;若否,則進(jìn)至步驟302;步驟504、修復(fù)其余的開機(jī)程序當(dāng)步驟502檢査正值開機(jī)程序101的錯誤檢查碼中至少一個錯誤檢查碼正 常,則以錯誤檢査碼正常的正值開機(jī)程序101覆寫錯誤檢查碼異常的其余的正 值開機(jī)程序101;同時,以反相運(yùn)算(NOT運(yùn)算)后的錯誤檢查碼正常的正值 開機(jī)程序101覆寫錯誤檢查碼異常的反值開機(jī)程序102;當(dāng)驟503檢查反值開機(jī)程序102的錯誤檢查碼是正常時,則以反相運(yùn)算 (NOT運(yùn)算)后的錯誤檢查碼正常的反值開機(jī)程序102覆寫錯誤檢查碼異常的 正值開機(jī)程序101;步驟302、獲取比對程序自任一正值開機(jī)程序101中取得第一比對程序 105及第二比對程序106;步驟303、第一次比對比對第一比對程序105與第二比對程序106的數(shù)據(jù) 區(qū)塊103或比對第一比對程序105與反值開機(jī)程序102的數(shù)據(jù)區(qū)塊103;步驟304、獲取待判定區(qū)塊當(dāng)在步驟303中比對第一比對程序105與第二比對程序106時,則自第一 比對程序105中取得相異于第二比對程序106的至少一數(shù)據(jù)區(qū)塊為待判定區(qū)塊107;當(dāng)在步驟303中比對第一比對程序105與反值開機(jī)程序102時,則自第--比對程序105中取得與反值開機(jī)程序102未完全反相的至少一數(shù)據(jù)區(qū)塊為待判 定區(qū)塊107;步驟305、第二次比對當(dāng)步驟304中所述的待判定區(qū)塊107為自第一比對程序105中取得相異于 第二比對程序106的至少一數(shù)據(jù)區(qū)塊時,則比對待判定區(qū)塊107與反值開機(jī)程 序102,獲取待判定區(qū)塊107中與反值開機(jī)程序102中未完全反相的數(shù)據(jù)區(qū)塊;當(dāng)步驟304中所述的待判定區(qū)塊107為自第一比對程序105中取得與反值 開機(jī)程序102未完全反相的至少一數(shù)據(jù)區(qū)塊時,比對待判定區(qū)塊107與第二比 對程序106,獲取待判定區(qū)塊107中與第二比對程序106相異的數(shù)據(jù)區(qū)塊;步驟306、修復(fù)開機(jī)程序即修復(fù)獲取第一比對程序105或第二比對程序106的正值開機(jī)程序101:當(dāng)步驟305獲取待判定區(qū)塊107中與反值開機(jī)程序102中未完全反相的數(shù) 據(jù)區(qū)塊時,則以第二比對程序106覆寫該數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對 程序105,進(jìn)而得到修復(fù)的獲取第一比對程序105或第二比對程序106的正值開 機(jī)程序101;當(dāng)步驟305獲取待判定區(qū)塊107中與第二比對程序106相異的數(shù)據(jù)區(qū)塊時, 則以第二比對程序106覆寫該數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對程序105,進(jìn) 而得到修復(fù)的獲取第一比對程序105或第二比對程序106的正值開機(jī)程序101;步驟307、是否修復(fù)其余的開機(jī)程序,否,則結(jié)束;是,則進(jìn)至步驟308;步驟308、修復(fù)其余的開機(jī)程序以第一比對程序105覆寫第二比對程序 106,從而修復(fù)其余的正值開機(jī)程序101;同時,以反相運(yùn)算(NOT運(yùn)算)后的 第一比對程序105覆寫反值開機(jī)程序102,從而修復(fù)反值開機(jī)程序102。本實施例中所述的位值包括正值開機(jī)程序位值和反值開機(jī)程序位值,所述 反值開機(jī)程序位值是通過反相運(yùn)算(NOT運(yùn)算)正值開機(jī)程序位值獲得的位值; 所述的比對是通過比對模塊以數(shù)據(jù)區(qū)塊為比對單位、利用互斥運(yùn)算(XOR運(yùn)算) 進(jìn)行比對;所述的錯誤檢查碼是一循環(huán)冗余編碼(CRC)或一總合檢查值 (Checksum )。
權(quán)利要求
1、一種自我修復(fù)的多重開機(jī)系統(tǒng),其特征在于該系統(tǒng)包括用于儲存多個正值開機(jī)程序及至少一個反值開機(jī)程序的儲存模塊、自多個正值開機(jī)程序中取出第一比對程序及第二比對程序進(jìn)行開機(jī)程序比對的比對模塊和根據(jù)比對模塊的結(jié)果覆寫開機(jī)程序的覆寫模塊,所述儲存模塊接入比對模塊,所述比對模塊接入覆寫模塊,所述覆寫模塊接入儲存模塊。
2、 根據(jù)權(quán)利要求l所述的自我修復(fù)的多重開機(jī)系統(tǒng),其特征在于該系統(tǒng) 還包括有用于檢查錯誤檢查碼的檢查模塊,所述儲存模塊接入檢查模塊,所述 檢査模塊分別接入比對模塊和覆寫模塊。
3、 根據(jù)權(quán)利要求1或2所述的自我修復(fù)的多重開機(jī)系統(tǒng),其特征在于所 述比對是通過比對模塊以數(shù)據(jù)區(qū)塊為比對單位、利用互斥運(yùn)算進(jìn)行比對。
4、 一種實現(xiàn)權(quán)利要求1所述的自我修復(fù)的多重開機(jī)系統(tǒng)的開機(jī)方法,其特 征在于該方法包括以下步驟301) 提供開機(jī)程序提供多個正值開機(jī)程序及至少一反值開機(jī)程序,正值 開機(jī)程序及反值開機(jī)程序均由多個數(shù)據(jù)區(qū)塊組成,且數(shù)據(jù)區(qū)塊由多個位值組成;302) 獲取比對程序自任一正值開機(jī)程序中取得第一比對程序及第二比對 程序;303) 第一次比對比對第一比對程序與第二比對程序的數(shù)據(jù)區(qū)塊;304) 獲取待判定區(qū)塊自第一比對程序中取得相異于第二比對程序的至少 一數(shù)據(jù)區(qū)塊為待判定區(qū)塊;305) 第二次比對比對待判定區(qū)塊與反值開機(jī)程序,獲取待判定區(qū)塊中與 反值開機(jī)程序中未完全反相的數(shù)據(jù)區(qū)塊;306) 修復(fù)開機(jī)程序即修復(fù)獲取第一比對程序或第二比對程序的正值開機(jī)程 序以第二比對程序覆寫步驟305)獲得的數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對 程序,進(jìn)而得到修復(fù)的第一比對程序或第二比對程序的正值開機(jī)程序;307) 是否修復(fù)其余的開機(jī)程序,否,則結(jié)束;是,則進(jìn)至步驟308);308) 修復(fù)其余的開機(jī)程序,以第一比對程序覆寫第二比對程序,從而修復(fù) 其余的正值開機(jī)程序;同時,以反相運(yùn)算后的第一比對程序覆寫反值開機(jī)程序, 從而修復(fù)反值開機(jī)程序,結(jié)束程序的修復(fù)。
5、 根據(jù)權(quán)利要求4所述的自我修復(fù)的多重開機(jī)方法,其特征在于所述步 驟301)與302)之間還包括步驟502)檢查正值開機(jī)程序的錯誤檢查碼是否正 常,若至少一個正值開機(jī)程序的錯誤檢查碼正常,則進(jìn)至步驟504);若所有正 值開機(jī)程序的錯誤檢查碼均為異常,則進(jìn)至步驟503);503) 檢查反值開機(jī)程序的錯誤檢査碼是否正常,若是,則進(jìn)至步驟504);若否,則進(jìn)至步驟302);504) 修復(fù)其余的開機(jī)程序,當(dāng)步驟502)檢查正值開機(jī)程序的錯誤檢査碼 中至少一個錯誤檢查碼正常,則以錯誤檢查碼正常的正值開機(jī)程序覆寫錯誤檢 查碼異常的其余的正值開機(jī)程序;同時,以反相運(yùn)算后的錯誤檢査碼正常的正 值開機(jī)程序覆寫錯誤檢查碼異常的反值開機(jī)程序;當(dāng)步驟503)檢查反值開機(jī)程 序的錯誤檢查碼是正常時,則以反相運(yùn)算后的錯誤檢查碼正常的反值開機(jī)程序 覆寫錯誤檢查碼異常的正值開機(jī)程序。
6、 一種實現(xiàn)權(quán)利要求l所述的自我修復(fù)的多重開機(jī)系統(tǒng)的開機(jī)方法,其特 征在于該方法包括以下步驟401) 提供開機(jī)程序提供多個正值開機(jī)程序及至少一反值開機(jī)程序,正值 開機(jī)程序及反值開機(jī)程序均由多個數(shù)據(jù)區(qū)塊組成,且數(shù)據(jù)區(qū)塊由多個位值組成;402) 獲取比對程序自任一正值開機(jī)程序中取得第一比對程序及第二比對 程序;403) 第一次比對比對第一比對程序與反值開機(jī)程序的數(shù)據(jù)區(qū)塊;404) 獲取待判定區(qū)塊自第一比對程序中取得與反值開機(jī)程序未完全反相 的至少一數(shù)據(jù)區(qū)塊為待判定區(qū)塊;405) 第二次比對比對待判定區(qū)塊與第二比對程序,獲取待判定區(qū)塊中與 第二比對程序相異的數(shù)據(jù)區(qū)塊;406) 修復(fù)開機(jī)程序即修復(fù)獲取第一比對程序或第二比對程序的正值開機(jī)程 序以第二比對程序覆寫該數(shù)據(jù)區(qū)塊,從而得到修復(fù)的第一比對程序,進(jìn)而得 到修復(fù)的獲取第一比對程序或第二比對程序的正值開機(jī)程序;407) 是否修復(fù)其余的開機(jī)程序,否,則結(jié)束;是,則進(jìn)至步驟308);408) 修復(fù)其余的開機(jī)程序,以第一比對程序覆寫第二比對程序,從而修復(fù) 其余的正值開機(jī)程序;同時,以反相運(yùn)算后的第一比對程序覆寫反值開機(jī)程序, 從而修復(fù)反值開機(jī)程序,結(jié)束程序的修復(fù)。
7、 根據(jù)權(quán)利要求6所述的自我修復(fù)的多重開機(jī)方法,其特征在于所述步 驟401)與402)之間還包括步驟602)檢查正值開機(jī)程序的錯誤檢查碼是否正 常,若至少一個正值開機(jī)程序的錯誤檢查碼正常,則進(jìn)至步驟604);若所有正 值開機(jī)程序的錯誤檢査碼均為異常,則進(jìn)至步驟603); 603) 檢查反值開機(jī)程序的錯誤檢查碼是否正常,若是,則進(jìn)至步驟604); 若否,則進(jìn)至步驟402); 604) 修復(fù)其余的開機(jī)程序,當(dāng)步驟602)檢査正值開機(jī)程序的錯誤檢查碼中至少一個錯誤檢查碼正常,則以錯誤檢查碼正常的正值開機(jī)程序覆寫錯誤檢 查碼異常的其余的正值開機(jī)程序;同時,以反相運(yùn)算后的錯誤檢查碼正常的正 值開機(jī)程序覆寫錯誤檢查碼異常的反值開機(jī)程序;當(dāng)驟503)檢查反值開機(jī)程序 的錯誤檢查碼是正常時,則以反相運(yùn)算后的錯誤檢查碼正常的反值開機(jī)程序覆 寫錯誤檢查碼異常的正值開機(jī)程序。
8、 根據(jù)權(quán)利要求4或5或6或7所述的自我修復(fù)的多重開機(jī)方法,其特征 在于通過比對模塊是以數(shù)據(jù)區(qū)塊為比對單位、利用互斥運(yùn)算進(jìn)行比對。
9、 根據(jù)權(quán)利要求5或7所述的自我修復(fù)的多重開機(jī)方法,其特征在于所 述錯誤檢査碼是循環(huán)冗余編碼。
10、 根據(jù)權(quán)利要求5或7所述的自我修復(fù)的多重開機(jī)方法,其特征在于所述錯誤檢查碼是總合檢查值。
全文摘要
本發(fā)明涉及一種自我修復(fù)的多重開機(jī)系統(tǒng)及其方法,該系統(tǒng)包括用于儲存多個正值開機(jī)程序及至少一個反值開機(jī)程序的儲存模塊、自多個正值開機(jī)程序中取出第一比對程序及第二比對程序進(jìn)行開機(jī)程序比對的比對模塊和根據(jù)比對模塊的結(jié)果覆寫開機(jī)程序的覆寫模塊,儲存模塊接入比對模塊,比對模塊接入覆寫模塊,覆寫模塊接入儲存模塊。本發(fā)明的系統(tǒng)組成結(jié)構(gòu)簡單、操作簡單易行,成本低廉,本發(fā)明的開機(jī)方法,可在正值開機(jī)程序與反值開機(jī)程序的數(shù)據(jù)區(qū)塊損毀僅為少量且離散分布的情況下,予以修復(fù)且簡單快速。
文檔編號G06F11/14GK101403976SQ20081023203
公開日2009年4月8日 申請日期2008年10月30日 優(yōu)先權(quán)日2008年10月30日
發(fā)明者王志銘, 陳淮琰 申請人:無敵科技(西安)有限公司