一種啟動(dòng)方法、裝置和計(jì)算機(jī)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種啟動(dòng)方法、裝置和計(jì)算機(jī)系統(tǒng)。
【背景技術(shù)】
[0002] 計(jì)算機(jī)系統(tǒng)在上電時(shí),會(huì)首先執(zhí)行一段引導(dǎo)程序(boot loader),用于引導(dǎo)系統(tǒng)啟 動(dòng)和硬件的初始化。
[0003] 通常會(huì)采用Nand-Flash存放引導(dǎo)程序。計(jì)算機(jī)系統(tǒng)上電的時(shí)候,CPU(Central Processing Unit,中央處理器)會(huì)從Nand-Flash讀取引導(dǎo)程序,并寫入至RAM (Random Access Memory,隨機(jī)存取存儲(chǔ)器)中執(zhí)行。
[0004] Nand-Flash通常以塊(Block)為單位存儲(chǔ)數(shù)據(jù)。在寫入過程中,Nand-Flash容易 產(chǎn)生壞塊,壞塊將無法被讀取和寫入。這樣,一旦存放引導(dǎo)程序的Block成為壞塊,則將導(dǎo) 致系統(tǒng)啟動(dòng)失敗。
[0005] 另外,在引導(dǎo)程序升級(jí)過程中,如果發(fā)生掉電,也可能導(dǎo)致Nand-Flash中的引導(dǎo) 程序被破壞,致使系統(tǒng)啟動(dòng)失敗。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供一種啟動(dòng)方法、裝置和計(jì)算機(jī)系統(tǒng),用以降低由于Nand-Flash出現(xiàn)壞 塊導(dǎo)致系統(tǒng)啟動(dòng)失敗的概率。
[0007] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0008] 第一方面,提供一種啟動(dòng)方法,其特征在于,包括:
[0009] 啟動(dòng)裝置在中央處理器CPU啟動(dòng)系統(tǒng)失敗時(shí),接收備份區(qū)選擇指令,所述備份 區(qū)選擇指令用于指示所述啟動(dòng)裝置從存儲(chǔ)器的備份區(qū)中讀取引導(dǎo)程序;所述存儲(chǔ)器為 Nand-Flash ;
[0010] 接收所述CPU發(fā)送的程序讀取指令,所述程序讀取指令中包括所述引導(dǎo)程序在所 述Nand-Flash中的主區(qū)地址;
[0011] 根據(jù)所述主區(qū)地址,從主備地址對(duì)應(yīng)關(guān)系中獲取所述引導(dǎo)程序在所述Nand-Flash 中的備份地址,其中,所述主備地址對(duì)應(yīng)關(guān)系中包括所述主區(qū)地址和所述備份地址的對(duì)應(yīng) 關(guān)系;
[0012] 從所述Nand-Flash的備份地址中讀取所述引導(dǎo)程序;
[0013] 將所述引導(dǎo)程序發(fā)送至所述CPU,以使所述CPU根據(jù)所述引導(dǎo)程序啟動(dòng)系統(tǒng)。
[0014] 在第一方面的第一種可能的實(shí)現(xiàn)方式中,在所述獲取所述引導(dǎo)程序在所述 Nand-Flash中的備份地址之后,包括:
[0015] 根據(jù)所述備份地址生成備份程序讀取指令;所述備份程序讀取指令包括所述引導(dǎo) 程序的在所述Nand-Flash中的備份地址;
[0016] 所述從所述備份地址中讀取所述引導(dǎo)程序包括:
[0017] 向所述Nand-Flash發(fā)送所述備份程序讀取指令,以從所述備份地址中讀取所述 引導(dǎo)程序。
[0018] 結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,在所述將所述引導(dǎo)程序發(fā)送至所述CPU之前,包括:
[0019] 檢測(cè)讀取的第一塊Block是否為壞塊,并在確定所述第一 Block為壞塊時(shí),將所 述主備地址對(duì)應(yīng)關(guān)系中的所述第一 Block的地址更改為與所述第一 Block相鄰的下一個(gè) Block的地址;所述第一 Block為所述備份區(qū)中的任一 Block,所述Nand-Flash的備份區(qū)包 括至少兩個(gè)Block ;
[0020] 向復(fù)位裝置發(fā)送復(fù)位指示消息,以便所述復(fù)位裝置在接收到所述復(fù)位指示消息 時(shí),控制系統(tǒng)復(fù)位并向所述啟動(dòng)裝置發(fā)送所述備份區(qū)選擇指令。
[0021] 第二方面,提供一種啟動(dòng)裝置,包括:
[0022] 第一接收單元,用于在中央處理器CPU啟動(dòng)系統(tǒng)失敗時(shí),接收備份區(qū)選擇指令,所 述備份區(qū)選擇指令用于指示所述啟動(dòng)裝置從存儲(chǔ)器的備份區(qū)中讀取引導(dǎo)程序;所述存儲(chǔ)器 為 Nand-Flash ;
[0023] 第二接收單元,用于接收所述CPU發(fā)送的程序讀取指令,所述程序讀取指令中包 括所述引導(dǎo)程序的在所述Nand-Flash中的主區(qū)地址;
[0024] 獲取單元,用于根據(jù)所述主區(qū)地址,從主備地址對(duì)應(yīng)關(guān)系中獲取所述引導(dǎo)程序在 所述Nand-Flash中的備份地址,其中,所述主備地址對(duì)應(yīng)關(guān)系中包括所述主區(qū)地址與所述 備份地址的對(duì)應(yīng)關(guān)系;
[0025] 存儲(chǔ)單元,用于存儲(chǔ)所述主備地址對(duì)應(yīng)關(guān)系;
[0026] 讀取單元,用于從所述Nand-Flash的備份地址中讀取所述引導(dǎo)程序;
[0027] 發(fā)送單元,用于將所述引導(dǎo)程序發(fā)送至所述CPU,以使所述CPU根據(jù)所述引導(dǎo)程序 啟動(dòng)系統(tǒng)。
[0028] 在第二方面的第一種可能的實(shí)現(xiàn)方式中,還包括:
[0029] 指令生成單元,用于根據(jù)所述備份地址生成備份程序讀取指令;所述備份程序讀 取指令包括所述引導(dǎo)程序在所述Nand-Flash中的備份地址;
[0030] 所述讀取單元還用于,向所述Nand-Flash發(fā)送所述備份程序讀取指令,從所述備 份地址中讀取所述引導(dǎo)程序。
[0031] 結(jié)合第二方面或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述啟動(dòng)裝置還包括:檢測(cè)單元,更改單元和指示單元;
[0032] 所述檢測(cè)單元,用于檢測(cè)讀取的第一塊Block是否為壞塊;
[0033] 所述更改單元,用于在所述檢測(cè)單元確定所述第一 Block為壞塊時(shí),將所述主備 地址對(duì)應(yīng)關(guān)系中的所述第一 Block的地址更改為與所述第一 Block相鄰的下一個(gè)Block的 地址;所述第一 Block為所述備份區(qū)中的任一 Block,所述Nand-Flash的備份區(qū)包括至少 兩個(gè)Block ;
[0034] 所述指示單元,用于向復(fù)位裝置發(fā)送復(fù)位指示消息,以便所述復(fù)位裝置在接收到 所述復(fù)位指示消息時(shí),控制系統(tǒng)復(fù)位并向所述啟動(dòng)裝置發(fā)送所述備份區(qū)選擇指令。
[0035] 第三方面,提供另一種啟動(dòng)裝置,與存儲(chǔ)器相連,所述存儲(chǔ)器為Nand-Flash,所述 啟動(dòng)裝置包括:多路選擇模塊和與所述多路選擇模塊相連的數(shù)據(jù)處理模塊;
[0036] 所述多路選擇模塊,用于在中央處理器CPU啟動(dòng)系統(tǒng)失敗時(shí),接收復(fù)位裝置發(fā)送 的備份區(qū)選擇指令,所述備份區(qū)選擇指令用于指示所述啟動(dòng)裝置從所述Nand-Flash的備 份區(qū)中讀取引導(dǎo)程序;還用于接收所述CPU發(fā)送的程序讀取指令,所述程序讀取指令中包 括所述引導(dǎo)程序的在所述Nand-Flash中的主區(qū)地址,將所述程序讀取指令發(fā)送至所述數(shù) 據(jù)處理模塊;
[0037] 所述數(shù)據(jù)處理模塊,用于根據(jù)所述程序讀取指令中的所述主區(qū)地址,從主備地址 對(duì)應(yīng)關(guān)系中獲取所述引導(dǎo)程序在所述Nand-Flash中的備份地址,所述主備地址對(duì)應(yīng)關(guān)系 中包括所述主區(qū)地址與備份地址的對(duì)應(yīng)關(guān)系;還用于從所述Nand-Flash的備份地址中讀 取所述引導(dǎo)程序,并將所述引導(dǎo)程序發(fā)送至所述CPU,以使所述CPU根據(jù)所述引導(dǎo)程序啟動(dòng) 系統(tǒng)。
[0038] 在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理模塊具體用于根據(jù)所述 備份地址生成備份程序讀取指令;所述備份程序讀取指令中包括所述引導(dǎo)程序在所述 Nand-Flash中的備份地址;
[0039] 向所述Nand-Flash發(fā)送所述備份程序讀取指令,以從所述備份地址中讀取所述 引導(dǎo)程序。
[0040] 結(jié)合第三方面或者第三方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式 中,所述數(shù)據(jù)處理模塊還用于檢測(cè)讀取的第一 Block是否為壞塊;
[0041] 在確定所述第一 Block為壞塊時(shí),將所述主備地址對(duì)應(yīng)關(guān)系中的所述第一 Block 的地址更改為與所述第一 Block相鄰的下一個(gè)Block的地址;所述第一 Block為所述備份 區(qū)中的任一 Block,所述Nand-Flash的備份區(qū)包括至少兩個(gè)Block ;
[0042] 向復(fù)位裝置發(fā)送復(fù)位指示消息,以便所述復(fù)位裝置在接收到所述復(fù)位指示消息 時(shí),控制系統(tǒng)復(fù)位并向所述啟動(dòng)裝置發(fā)送所述備份區(qū)選擇指令。
[0043] 結(jié)合第三方面至第三方面的第二種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式, 在第三種可能的實(shí)現(xiàn)方式中,所述多路選擇模塊包括第一通道和第二通道,其中,所述多路 選擇模塊通過所述第一通道直接連接所述Nand-Flash,所述多路選擇模塊通過所述第二通 道與所述數(shù)據(jù)處理模塊相連,所述數(shù)據(jù)處理模塊連接所述Nand-Flash ;
[0044] 所述多路選擇模塊具體用于:
[0045] 根據(jù)所述備份區(qū)選擇指令通過所述第二通道向所述數(shù)據(jù)處理模塊發(fā)送所述程序 讀取指令。
[0046] 結(jié)合第三方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述多路 選擇模塊還用于,接收所述CPU發(fā)送的控制指令;
[0047] 根據(jù)所述控制指令通過所述第一通道將接收到的所述CPU發(fā)送的數(shù)據(jù)讀取指令 發(fā)送至所述Nand-Flash ;所述數(shù)據(jù)讀取指令為所述CPU在系統(tǒng)啟動(dòng)后,發(fā)送的用于讀取所 述Nand-Flash中的數(shù)據(jù)的指令。
[0048] 第四方面,提供一種計(jì)算機(jī)系統(tǒng),包括中央處理器CPU,存儲(chǔ)器,和復(fù)位裝置,還包 括啟動(dòng)裝置;
[0049] 其中,所述存儲(chǔ)器為Nand-Flash,所述啟動(dòng)裝置分別與所述CPU,所述復(fù)位裝置和 所述Nand-Flash相連;
[0050] 所述啟動(dòng)裝置為第二方面至第二方面的第二種可能的實(shí)現(xiàn)方式中任一種可能的 實(shí)現(xiàn)方式所述的啟動(dòng)裝置;或者,所述啟動(dòng)裝置為第三方面至第三方面的第四種可能的實(shí) 現(xiàn)方式中任一種可能的實(shí)現(xiàn)方式所述的啟動(dòng)裝置;
[0051] 所述Nand-Flash包括主區(qū)和備份區(qū);其中,所述主區(qū)和所述備份區(qū)分別存儲(chǔ)有引 導(dǎo)程序;
[0052] 所述復(fù)位裝置用于,在所述CPU啟動(dòng)系統(tǒng)失敗時(shí),向所述啟動(dòng)裝置發(fā)送備份區(qū)選 擇指令,所述備份區(qū)選擇指令用于指示所述啟動(dòng)裝置從所述Nand-Flash的備份區(qū)中讀取 引導(dǎo)程序;
[0053] 所述CPU用于,向所述啟動(dòng)裝置發(fā)送程序讀取指令,并接收所述啟動(dòng)裝置返回的 所述引導(dǎo)程序,運(yùn)行所述引導(dǎo)程序并啟動(dòng)系統(tǒng)。
[0054] 采用上述方案,Nand-Flash的主區(qū)和備份區(qū)分別存儲(chǔ)有引導(dǎo)程序,在CPU發(fā)送 的程序讀取指令不變的情況下,啟動(dòng)裝置根據(jù)復(fù)位裝置發(fā)送的備份區(qū)選擇指令,讀取該 Nand-Flash備份區(qū)中的引導(dǎo)程序,并將該引導(dǎo)程序返回至該CPU,相比現(xiàn)有技術(shù)中CPU只能 讀取到該Nand-Flash主區(qū)中的引導(dǎo)程序,本發(fā)明降低了因?yàn)橹鲄^(qū)中出現(xiàn)壞塊而導(dǎo)致計(jì)算 機(jī)系統(tǒng)啟動(dòng)失敗的概率。
【附圖說明】
[0055] 為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用 的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本 領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的 附圖。
[0056] 圖1為本發(fā)明實(shí)施例提供的一種計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;
[0057] 圖2為本發(fā)明實(shí)施例提供的另一種計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;
[0058] 圖3為本發(fā)明實(shí)施例提供的又一種計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;
[0059] 圖4為本發(fā)明實(shí)施例提供的一種啟動(dòng)方法的流程示意圖;
[0060] 圖5為本發(fā)明實(shí)施例提供的一種Nand-Flash的主區(qū)與備份區(qū)的示意圖;
[0061] 圖6為本發(fā)明實(shí)施例提供的另一種啟動(dòng)方法的流程示意圖;
[