專利名稱:基本輸入輸出系統(tǒng)的糾錯系統(tǒng)及方法
技術領域:
本發(fā)明是關于一種基本輸入輸出系統(tǒng)的糾錯系統(tǒng)及方法。
背景技術:
計算機系統(tǒng)的內(nèi)存主要可分為只讀存儲器(Read-only Memory,ROM)和隨機存儲器(Random Access Memory,RAM),隨機存儲器即常說的內(nèi)存,也就是插裝在計算機上的內(nèi)存條,主要用來在系統(tǒng)運行時臨時存放各種程序和數(shù)據(jù),機器關閉時里面的內(nèi)容就丟掉。只讀存儲器ROM則是安裝在計算機上的一塊專用芯片,里面的內(nèi)容由計算機制造商在出廠前固化在里面,不會隨計算機的關閉而丟失,里面存儲的內(nèi)容主要就是基本輸入輸出系統(tǒng)(Basic Input/Output System,BIOS)。BIOS可以視為是一個永久地記錄在ROM中的一個軟件,是操作系統(tǒng)輸入輸出管理系統(tǒng)的一部分,它包括加電自檢程序(Power-on Self Test,簡稱POST)、基本啟動程序、基本的硬件驅(qū)動程序等,主要用來負責機器的啟動和系統(tǒng)中重要硬件的控制和驅(qū)動,并為高層軟件提供基層調(diào)用。
BIOS是計算機軟件與硬件協(xié)調(diào)工作的橋梁,一旦受到損壞往往導致系統(tǒng)無法工作。目前修復受損BIOS的方法主要有三種一、雙BIOS主板上安排兩塊BIOS芯片,一塊作為主BIOS,另外一塊為從BIOS(作為主BIOS的備份),兩塊BIOS芯片的內(nèi)容完全一樣;每一次激活系統(tǒng),備份BIOS都會自動檢查主BIOS的狀況,如果發(fā)現(xiàn)主BIOS內(nèi)容有損壞,立即用備份BIOS重寫主BIOS,萬一無法修復就直接從備份BIOS激活;二、載體BIOS將BIOS的內(nèi)容備份于另一些存儲設備(例如硬盤、隨機存儲器或Flash ROM等)中,作為備份BIOS,只提供原BIOS恢復功能,不能從備份的BIOS引導系統(tǒng);三、網(wǎng)絡恢復通過一通訊網(wǎng)絡從裝載于一服務器上的BIOS來恢復本地計算機上損毀的BIOS資料。
以上方法雖然能在一定程度上修復受損的BIOS,保證系統(tǒng)正常工作,但BIOS本身無自行糾錯功能,雙BIOS方法增加了制作成本,且備份BIOS多處于閑置狀態(tài);載體BIOS及網(wǎng)絡恢復方法依賴性強,若載體或網(wǎng)絡出現(xiàn)故障,則仍無法保證系統(tǒng)正常工作。
發(fā)明內(nèi)容鑒于以上內(nèi)容,有必要提供一種基本輸入輸出系統(tǒng)的糾錯系統(tǒng),使得BIOS能夠自行糾錯。
此外,還有必要提供一種基本輸入輸出系統(tǒng)的糾錯方法,使得BIOS能夠自行糾錯。
一種基本輸入輸出系統(tǒng)的糾錯系統(tǒng),運行于一計算機,該計算機包括一儲存有一基本輸入輸出系統(tǒng)的只讀存儲器及一隨機存儲器,所述的基本輸入輸出系統(tǒng)的的糾錯系統(tǒng)包括一代碼建立模塊,用于在設置基本輸入輸出系統(tǒng)時,當基本輸入輸出系統(tǒng)的程序代碼編譯完畢后建立一第一錯誤檢查和糾正代碼,及用于在計算機啟動后基本輸入輸出系統(tǒng)自檢過程中校驗和出錯時建立一第二錯誤檢查和糾正代碼;一程序載入模塊,用于在計算機啟動后將基本輸入輸出系統(tǒng)除引導區(qū)程序外的所有程序從只讀存儲器載入到隨機存儲器執(zhí)行;一判斷模塊,用于在計算機啟動后判斷基本輸入輸出系統(tǒng)校驗和是否出錯;一定位模塊,用于當基本輸入輸出系統(tǒng)校驗和出錯時,將所得的當前數(shù)據(jù)的第二錯誤檢查和糾正代碼與第一錯誤檢查和糾正代碼進行比對,找出出錯數(shù)據(jù);及一更正模塊,用于更正出錯數(shù)據(jù)。
一種基本輸入輸出系統(tǒng)的糾錯方法,用于修復一計算機內(nèi)的基本輸入輸出系統(tǒng),所述的計算機包括一儲存有所述的基本輸入輸出系統(tǒng)的只讀存儲器及一隨機存儲器,該方法包括以下步驟在設置基本輸入輸出系統(tǒng)時,當基本輸入輸出系統(tǒng)的程序代碼編譯完畢后建立一第一錯誤檢查和糾正代碼;計算機啟動后將基本輸入輸出系統(tǒng)除引導區(qū)程序外的所有程序從只讀存儲器載入到隨機存儲器執(zhí)行;判斷基本輸入輸出系統(tǒng)校驗和是否出錯;若基本輸入輸出系統(tǒng)校驗和出錯,則為當前數(shù)據(jù)建立一第二錯誤檢查和糾正代碼;將所得的當前數(shù)據(jù)的第二錯誤檢查和糾正代碼與第一錯誤檢查和糾正代碼進行比對,找出出錯數(shù)據(jù);及更正出錯數(shù)據(jù)。
所述的基本輸入輸出系統(tǒng)的糾錯系統(tǒng)及方法在基本輸入輸出系統(tǒng)中引入了自行糾錯功能,可以讓有資料問題的基本輸入輸出系統(tǒng)正常使用。
圖1是本發(fā)明基本輸入輸出系統(tǒng)的糾錯系統(tǒng)較佳實施例的硬體架構圖。
圖2是本發(fā)明基本輸入輸出系統(tǒng)的糾錯系統(tǒng)較佳實施例的功能模塊圖。
圖3是本發(fā)明基本輸入輸出系統(tǒng)的糾錯方法較佳實施例的工作流程圖。
具體實施方式為方便理解,對以下術語作部分解釋Checksum(校驗和)數(shù)據(jù)處理和數(shù)據(jù)通信領域中一個簡單易行的完整性控制方法。通過一系列算術或邏輯操作將數(shù)據(jù)的所有字節(jié)組合起來,得到一個校驗和值。以后可以通過相同的方法計算出校驗和值并與上次計算出的值進行比較。若相等,說明數(shù)據(jù)沒有改變;若不等,說明數(shù)據(jù)已經(jīng)被修改了。
數(shù)據(jù)通訊中廣泛應用校驗碼技術,如ECC(Error Correcting Code,糾錯碼)被廣泛應用于計算機內(nèi)存糾錯,經(jīng)過內(nèi)存的糾錯,計算機的操作指令才可以繼續(xù)執(zhí)行。絕大多數(shù)常見的內(nèi)存出錯都是單位錯,多位錯,列錯,行錯。它們都比較相似。單位錯大多發(fā)生在讀一個完整的比特或詞的時候有一位比特出錯。當讀相同的比特和詞時總是同一位數(shù)據(jù)出錯,則稱為多位錯。單位錯發(fā)生在很多詞中,就稱列錯或行錯。ECC內(nèi)存使用額外的比特存儲一個用數(shù)據(jù)加密的代碼。當數(shù)據(jù)被寫入內(nèi)存,相應的ECC代碼與此同時也被保存下來。當重新讀回剛才存儲的數(shù)據(jù)時,保存下來的ECC代碼就會和讀數(shù)據(jù)時產(chǎn)生的ECC代碼做比較。如果兩個代碼不相同,他們則會被解碼,以確定數(shù)據(jù)中的哪一位是不正確的。
如圖1所示,是本發(fā)明基本輸入輸出系統(tǒng)的糾錯系統(tǒng)較佳實施例的硬體架構圖。該系統(tǒng)儲存于一計算機1內(nèi)的BIOS20中,該計算機1包括一只讀存儲器(ROM)10及一隨機存儲器(RAM)11,該只讀存儲器10包括所述的基本輸入輸出系統(tǒng)(BIOS)20,該基本輸入輸出系統(tǒng)20包括所述的基本輸入輸出系統(tǒng)(BIOS)的糾錯系統(tǒng)200。計算機1啟動后,將基本輸入輸出系統(tǒng)20除引導區(qū)程序外的所有程序從只讀存儲器10載入到隨機存儲器11執(zhí)行。
如圖2所示,是本發(fā)明基本輸入輸出系統(tǒng)的糾錯系統(tǒng)較佳實施例的功能模塊圖。該系統(tǒng)200包括一代碼建立模塊2001、一程序載入模塊2002、一判斷模塊2003、一定位模塊2004、及一更正模塊2005。
代碼建立模塊2001用于當基本輸入輸出系統(tǒng)20的程序代碼編譯完畢后建立一第一錯誤檢查和糾正代碼,及用于在計算機1啟動后基本輸入輸出系統(tǒng)20加電自檢過程中校驗和出錯時建立一第二錯誤檢查和糾正代碼。計算機中傳輸?shù)牟僮髦噶顬槎M制數(shù)據(jù)“0”和“1”所成的編碼,程序即為完成某一任務的指令的有序集合,以ECC為例,在設置基本輸入輸出系統(tǒng)20時完成基本輸入輸出系統(tǒng)20的程序代碼編譯后,代碼建立模塊2001為編譯所得的二進制代碼建立第一錯誤檢查和糾正代碼(ECC1);計算機1啟動后若基本輸入輸出系統(tǒng)20自檢過程中校驗和出錯,則代碼建立模塊2001為當前的二進制代碼建立第二錯誤檢查和糾正代碼(ECC2)。程序載入模塊2002用于在計算機1啟動后將基本輸入輸出系統(tǒng)20除引導區(qū)程序外的所有程序從只讀存儲器10載入到隨機存儲器11執(zhí)行。判斷模塊2003用于在計算機1啟動后判斷基本輸入輸出系統(tǒng)校驗和是否出錯。定位模塊2004,用于當基本輸入輸出系統(tǒng)20校驗和出錯時,將所得的當前數(shù)據(jù)的第二錯誤檢查和糾正代碼與第一錯誤檢查和糾正代碼進行比對,找出出錯數(shù)據(jù),以ECC為例,將ECC2與ECC1比對,進行解碼以找出出錯數(shù)據(jù)。更正模塊2005用于更正出錯數(shù)據(jù),若找出的出錯數(shù)據(jù)為“1”,則將其改為“0”,若為“0”,則將其改為“1”。
如圖3所示,是本發(fā)明基本輸入輸出系統(tǒng)的糾錯方法較佳實施例的工作流程圖。首先,代碼建立模塊2001在設置BIOS20時當BIOS20的程序代碼編譯完畢后建立一第一錯誤檢查和糾正代碼(步驟S10),以ECC為例,代碼建立模塊2001為編譯所得的二進制代碼建立一第一錯誤檢查和糾正代碼(ECC1)。加電后啟動計算機1(步驟S11)。程序載入模塊2002將基本輸入輸出系統(tǒng)20除引導區(qū)程序外的所有程序從只讀存儲器10載入到隨機存儲器11執(zhí)行(步驟S12)。判斷模塊2003判斷基本輸入輸出系統(tǒng)校驗和(checksum)是否出錯(步驟S13)。若基本輸入輸出系統(tǒng)20校驗和出錯,則代碼建立模塊2001為當前數(shù)據(jù)建立一第二錯誤檢查和糾正代碼(步驟S14),以ECC為例,計算機1啟動后若基本輸入輸出系統(tǒng)20自檢過程中校驗和出錯,則代碼建立模塊2001為當前的二進制代碼建立一第二錯誤檢查和糾正代碼(ECC2)。定位模塊2004將第二錯誤檢查和糾正代碼與第一錯誤檢查和糾正代碼進行比對,找出出錯數(shù)據(jù)(步驟S15),以ECC為例,將ECC2與ECC1比對,進行解碼以找出出錯數(shù)據(jù)。更正模塊2005更正出錯數(shù)據(jù)(步驟S16),若找出的出錯數(shù)據(jù)為“1”,則將其改為“0”,若為“0”,則將其改為“1”。
在步驟S13中,若判斷基本輸入輸出系統(tǒng)20校驗和未出錯,則直接結束流程。
本實施例以ECC為例說明,對于其他校驗碼程序,如漢明碼(Han-ming Code)、循環(huán)冗余碼(Cyclic Redundancy Code,CRC)等,方法相同。
權利要求
1.一種基本輸入輸出系統(tǒng)的糾錯系統(tǒng),運行于一計算機,該計算機包括一儲存有一基本輸入輸出系統(tǒng)的只讀存儲器及一隨機存儲器,其特征在于,所述的基本輸入輸出系統(tǒng)的的糾錯系統(tǒng)包括一代碼建立模塊,用于在設置基本輸入輸出系統(tǒng)時,當基本輸入輸出系統(tǒng)的程序代碼編譯完畢后建立一第一錯誤檢查和糾正代碼,及用于在計算機啟動后,基本輸入輸出系統(tǒng)自檢過程中校驗和出錯時建立一第二錯誤檢查和糾正代碼;一程序載入模塊,用于在計算機啟動后將基本輸入輸出系統(tǒng)除引導區(qū)程序外的所有程序從只讀存儲器載入到隨機存儲器執(zhí)行;一判斷模塊,用于判斷基本輸入輸出系統(tǒng)校驗和是否出錯;一定位模塊,用于當基本輸入輸出系統(tǒng)校驗和出錯時,將所得的當前數(shù)據(jù)的第二錯誤檢查和糾正代碼與第一錯誤檢查和糾正代碼進行比對,找出出錯數(shù)據(jù);及一更正模塊,用于更正出錯數(shù)據(jù)。
2.如權利要求1所述的基本輸入輸出系統(tǒng)的糾錯系統(tǒng),其特征在于,所述的錯誤檢查和糾正代碼為一糾錯碼。
3.如權利要求1所述的基本輸入輸出系統(tǒng)的糾錯系統(tǒng),其特征在于,所述的錯誤檢查和糾正代碼為一漢明碼。
4.如權利要求1所述的基本輸入輸出系統(tǒng)的糾錯系統(tǒng),其特征在于,所述的錯誤檢查和糾正代碼為一循環(huán)碼。
5.一種基本輸入輸出系統(tǒng)的糾錯方法,用于修復一計算機內(nèi)的基本輸入輸出系統(tǒng),所述的計算機包括一儲存有所述的基本輸入輸出系統(tǒng)的只讀存儲器及一隨機存儲器,其特征在于,該方法包括以下步驟在設置基本輸入輸出系統(tǒng)時,當基本輸入輸出系統(tǒng)的程序代碼編譯完畢后建立一第一錯誤檢查和糾正代碼;計算機啟動后將基本輸入輸出系統(tǒng)除引導區(qū)程序外的所有程序從只讀存儲器載入到隨機存儲器執(zhí)行;判斷基本輸入輸出系統(tǒng)校驗和是否出錯;若基本輸入輸出系統(tǒng)校驗和出錯,則為當前數(shù)據(jù)建立一第二錯誤檢查和糾正代碼;將所得的當前數(shù)據(jù)的第二錯誤檢查和糾正代碼與第一錯誤檢查和糾正代碼進行比對,找出出錯數(shù)據(jù);及更正出錯數(shù)據(jù)。
6.如權利要求5所述的基本輸入輸出系統(tǒng)的糾錯方法,其特征在于,所述的錯誤檢查和糾正代碼為一糾錯碼。
7.如權利要求5所述的基本輸入輸出系統(tǒng)的糾錯方法,其特征在于,所述的錯誤檢查和糾正代碼為一漢明碼。
8.如權利要求5所述的基本輸入輸出系統(tǒng)的糾錯方法,其特征在于,所述的錯誤檢查和糾正代碼為一循環(huán)碼。
全文摘要
本發(fā)明提供一種基本輸入輸出系統(tǒng)的糾錯方法,運行于一計算機,該計算機包括一儲存有一基本輸入輸出系統(tǒng)的只讀存儲器及一隨機存儲器,該方法包括以下步驟在設置基本輸入輸出系統(tǒng)時,當基本輸入輸出系統(tǒng)的程序代碼編譯完畢后建立一第一錯誤檢查和糾正代碼;計算機啟動后將基本輸入輸出系統(tǒng)除引導區(qū)程序外的所有程序從只讀存儲器載入到隨機存儲器執(zhí)行;判斷基本輸入輸出系統(tǒng)校驗和是否出錯;若基本輸入輸出系統(tǒng)校驗和出錯,則為當前數(shù)據(jù)建立一第二錯誤檢查和糾正代碼;將所得的當前數(shù)據(jù)的第二錯誤檢查和糾正代碼與第一錯誤檢查和糾正代碼進行比對,找出出錯數(shù)據(jù)并更正出錯數(shù)據(jù)。本發(fā)明還提供一種基本輸入輸出系統(tǒng)的糾錯系統(tǒng)。
文檔編號G06F9/445GK1971536SQ200510101740
公開日2007年5月30日 申請日期2005年11月24日 優(yōu)先權日2005年11月24日
發(fā)明者李明隆 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司