一種高可靠性的計算機(jī)啟動方法
【專利摘要】本申請?zhí)峁┮环N高可靠性的計算機(jī)啟動方法,該方法包括:在計算機(jī)上電時,邏輯器件組合在內(nèi)部啟動具有預(yù)定時長的定時器;邏輯器件組合在確定自身保存的啟動模式為主模式時,控制CPU啟動第一區(qū)塊中的主bootloader;邏輯器件組合在確定自身保存的啟動模式為從模式時,控制CPU啟動第二區(qū)塊中的備份bootloader;CPU在確定bootloader啟動成功時,通知邏輯器件組合啟動成功;邏輯器件組合在收到CPU的啟動成功通知時關(guān)閉所述定時器,在確定所述定時器超時且當(dāng)前啟動模式為主模式時,將所述啟動模式從主模式修改為從模式并將所述CPU復(fù)位。本申請可以有效降低單一bootloader損壞帶來的可靠性降低的負(fù)面影響。
【專利說明】
一種高可靠性的計算機(jī)啟動方法
【技術(shù)領(lǐng)域】
[0001]本申請計算機(jī)技術(shù),尤其涉及高可靠性計算機(jī)啟動方法。
【背景技術(shù)】
[0002]隨著集成電路的發(fā)展,電子產(chǎn)品價格越來越低,智能電子終端越來越多的進(jìn)入到人們的生活當(dāng)中,智能手機(jī)、平板電腦、機(jī)頂盒等,促進(jìn)人與人之間的交流,同時也豐富著人們的生活。在智能電子產(chǎn)品使用過程中,難以避免要進(jìn)行系統(tǒng)的升級,來提升系統(tǒng)性能與功倉泛。
[0003]智能產(chǎn)品使用環(huán)境千差萬別,因此對可靠性有很高的要求。假設(shè)設(shè)備系統(tǒng)升級過程中出現(xiàn)斷電或者升級了錯誤的系統(tǒng)鏡像包等情況,很有可能無法進(jìn)入系統(tǒng)。此時只能在1300^108(161-( “引導(dǎo)加載器”或“引導(dǎo)加載程序”)下升級系統(tǒng),這對普通用戶來說,操作困難。
[0004]少數(shù)智能手機(jī)在130於10狀161'下實(shí)現(xiàn)了基本的⑶I界面,用戶可以比較方便的再次升級系統(tǒng),但是如果化0丨10^161'都被意外破壞了,此時只能返廠維修。有一些產(chǎn)品在13001:108(161-下實(shí)現(xiàn)雙系統(tǒng)備份,但是該方案在損壞的情況下不能起到作用,無法自動恢復(fù)系統(tǒng)。
[0005]還有一些產(chǎn)品采用兩片獨(dú)立的存儲器來分別存放主系統(tǒng)與備份系統(tǒng),該方案將兩片獨(dú)立的存儲器通過一種電子開關(guān)分別于0^相連,用戶通過操作電子開關(guān)(比如智能手機(jī)上的一些組合按鍵)來選擇需要將那一片存儲器與0^導(dǎo)通,以此來選擇進(jìn)入哪一種系統(tǒng)。該方案硬件實(shí)現(xiàn)上成本較高,電路系統(tǒng)復(fù)雜,不具備產(chǎn)品成本優(yōu)勢。且該方案每次只能將一個存儲器與0^連接,實(shí)際上兩片存儲器中的系統(tǒng)是完全獨(dú)立的,互相不能備份與恢復(fù),僅僅只能選擇從哪一種系統(tǒng)啟動而已,如果兩個系統(tǒng)都壞了,也只能返回廠家來維修。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本申請?zhí)峁┮环N高可靠性的計算機(jī)啟動方法,其中該計算機(jī)包括處理器0^、邏輯器件組合以及存儲器,其中所述邏輯器件組合位于處理器以及存儲器之間,并通過地址總線分別與處理器以及存儲器相連;所述存儲器設(shè)置有存儲主1300丨10狀161~的第一區(qū)塊、存儲有備份1300丨10狀161~的第二區(qū)塊以及存儲操作系統(tǒng)的區(qū)塊;該方法包括:
[0007]在計算機(jī)上電時,邏輯器件組合在內(nèi)部啟動具有預(yù)定時長的定時器;
[0008]邏輯器件組合在確定自身保存的啟動模式為主模式時,控制0^啟動第一區(qū)塊中的主 13001:103(16:^ ;
[0009]邏輯器件組合在確定自身保存的啟動模式為從模式時,控制0^啟動第二區(qū)塊中的備份 13001:103(16:^ ;
[0010]0?11在確定)3001:1021(16:^啟動成功時,通知邏輯器件組合啟動成功;
[0011]邏輯器件組合在收到0^的啟動成功通知時關(guān)閉所述定時器,在確定所述定時器超時且當(dāng)前啟動模式為主模式時,將所述啟動模式從主模式修改為從模式并將所述0^復(fù)位。
[0012]本申請可以有效降低單一 13001:1021(16:^損壞帶來的可靠性降低的負(fù)面影響
【專利附圖】
【附圖說明】
[0013]圖1是本申請一個例子中計算機(jī)系統(tǒng)內(nèi)部的硬件結(jié)構(gòu)圖。
[0014]圖2是本申請一個例子中上的區(qū)塊劃分示意圖。
[0015]圖3是本申請一個例子中啟動13001:1021(16:^的流程圖。
[0016]圖4是本申請另一個例子中啟動13001:1021(16:^的流程圖。
【具體實(shí)施方式】
[0017]請參考圖1所示,本申請?zhí)峁┮环N具有高可靠性的計算機(jī)啟動解決方案,該計算機(jī)包括處理器(⑶⑴、邏輯器件組合(比如⑶⑶)以及非易失性存儲器(比如口“別),一般來說計算機(jī)還通常包括內(nèi)存(未圖示),當(dāng)然該計算機(jī)系統(tǒng)還可能包括更多的硬件,這取決于該計算機(jī)系統(tǒng)的類型,比如智能手機(jī)可能還包括攝像頭以及射頻等硬件。在本申請中,所述邏輯器件組合可以為單一的邏輯器件,如一個或多個;也可以是其他邏輯器件與必要電子開關(guān)的組合,比如或1⑶與少量電子開關(guān)的組合;以下將以邏輯器件組合是
為例進(jìn)行說明,相對??以或1⑶等實(shí)現(xiàn)方案來說,成本更加低廉。
[0018]請參考圖2,其中所述?的第一區(qū)塊,存儲備份化於10狀161~的第二區(qū)塊,存儲主操作系統(tǒng)(以下簡稱“系統(tǒng)”)的第三區(qū)塊以及存儲備份系統(tǒng)的第四區(qū)塊。當(dāng)然,在一個簡單的例子中,存儲器上可以只有一個存放主系統(tǒng)的區(qū)塊。所述位于0^與之間,通過地址總線與0^以及幾…!!分別相連,所述0^通過數(shù)據(jù)總線與相連。請參考圖3,該計算機(jī)的啟動過程包括如下步驟:
[0019]步驟301,在計算機(jī)上電時,邏輯器件組合在內(nèi)部啟動具有預(yù)定時長的定時器;
[0020]步驟302,邏輯器件組合在確定自身保存的啟動模式為主模式時,控制0^啟動第一區(qū)塊中的主 13001:103(16:^ ;
[0021]步驟303,邏輯器件組合在確定自身保存的啟動模式為從模式時,控制0^啟動第二區(qū)塊中的備份13001:103(16:^ ;
[0022]步驟304,0?11在確定)3001:1021(16:^啟動成功時,通知邏輯器件組合;
[0023]步驟305,邏輯器件組合在收到0^的啟動成功通知時關(guān)閉所述定時器,在確定所述定時器超時且當(dāng)前啟動模式為主模式時,將所述啟動模式從主模式修改為從模式并將所述0^復(fù)位。
[0024]請同時參考圖3以及圖4,以下通過更為詳細(xì)的例子來對上述技術(shù)方案進(jìn)行說明。在一個例子中,在計算機(jī)上電時,邏輯器件組合(以為例)和0^都會復(fù)位開始工作。在一個例子中,⑶10內(nèi)部預(yù)設(shè)有第一寄存器,這個寄存器的數(shù)值可以用來表征啟動模式,當(dāng)然也可以用其他方式來表征啟動模式。在這個例子中,在上電時先設(shè)置第一寄存器數(shù)值,比如設(shè)置數(shù)值1來表征當(dāng)前啟動模式為主模式,也就是說初始啟動模式被設(shè)置為主模式。在主模式下,將允許0^從第一區(qū)塊的起始地址(地址0)讀取主130011021(161并運(yùn)行,比如圖2中的0?11-1這段存儲空間,即第一區(qū)塊的起始地址0。0?10此時對地址總線上的信號可以采用透傳的處理方式,也就是說這個時候?qū)τ?^對的訪問是透明的,可以理解為不存在。⑶口從地址0開始運(yùn)行主的代碼。
[0025]0?^運(yùn)行主13000021(161'可以完成操作系統(tǒng)啟動前的一些準(zhǔn)備工作,比如硬件初始化等,然后跳轉(zhuǎn)至主系統(tǒng)內(nèi)核進(jìn)行系統(tǒng)啟動。也就是跳轉(zhuǎn)到第三區(qū)塊的位置去啟動內(nèi)核。如果主系統(tǒng)啟動失敗了,130於10狀161'將會跳轉(zhuǎn)到第四區(qū)塊(如果有)的備用系統(tǒng)內(nèi)核進(jìn)行系統(tǒng)啟動。關(guān)于130於10狀161'如何啟動操作系統(tǒng)內(nèi)核,可以參考現(xiàn)有技術(shù)來實(shí)現(xiàn),此處不再--贅述。
[0026]當(dāng)啟動成功時,0?^將會通知啟動成功,在一個例子中,這種通知可以通過設(shè)置預(yù)設(shè)的第二寄存器內(nèi)的數(shù)值的方式來實(shí)現(xiàn),比如將第二寄存器的數(shù)值設(shè)置為1來向表征系統(tǒng)啟動成功。而在確定第二寄存器數(shù)值被設(shè)置為1時,相應(yīng)地關(guān)閉(也可以理解為刪除或去使能)所述預(yù)先啟動的定時器。
[0027]當(dāng)主)3001:1021(101'不可用(比如發(fā)生損壞)的時候,13001: 1(321(101'將無法成功啟動,此時第二寄存器的數(shù)值將維持在初始設(shè)定的數(shù)值0 (表征啟動失敗),定時器在預(yù)定時長到達(dá)的時候超時。該預(yù)定時長可以由開發(fā)人員根據(jù)系統(tǒng)啟動時間來設(shè)定,比如說設(shè)定為30秒。在定時器超時的時候,將確定無法通過主130011021(161'啟動,此時可以通過設(shè)置第一寄存器數(shù)值的方式將啟動模式從主模式修改為從模式,并將所述0^復(fù)位,比如通過圖1中的這樣的控制通道來復(fù)位⑶匕事實(shí)上,如果當(dāng)前啟動模式已經(jīng)是從模式,說明使用主13001:1021(16:^啟動失敗,使用備份1^001:1021(16:^啟動也失敗,說明兩個130於10狀161'都不可用,系統(tǒng)確實(shí)無法啟動,此時可以結(jié)束處理;當(dāng)然也可以提示用戶出錯。一般來說兩個1300丨10狀161'都不可用的情況非常少見,在定時器超時的時候檢查啟動模式主要是為了防止反復(fù)復(fù)位0^形成死循環(huán)。
[0028]0?^復(fù)位之后按照正常的方式重新訪問默認(rèn)起始地址(地址0)的數(shù)據(jù)。進(jìn)行啟動模式判斷可以確定此時內(nèi)部保存的啟動模式已經(jīng)從主模式變成了從模式,在從模式下將修改地址總線上的地址信號,使得0^的訪問起始地址變更到11處(也就是第二區(qū)塊的起始地址請參考圖1以及圖2,在主模式下,0?10將八0?八23地址線上的信號直接透傳給存儲器;而在從模式下,0?10將八0?八19這20根地址線的信號透傳給存儲器(八0?八19尋址空間長度為11),將八20這根地址線上的信號強(qiáng)制輸出成1,這樣0^訪問0?11-1的行狀!!的地址空間將被轉(zhuǎn)換為訪問11?21-1的地址空間,而11?
21-1的地址空間是保存?zhèn)浞莸牡诙^(qū)塊,此時啟動備份13001:1021(16:^的過程與啟動主13001:1021(16:^的過程是一致的,不再--贅述。
[0029]在上述例子中,⑶10控制⑶!)啟動主13001:1051(16:^還是備份)3001:1051(16:^主要是通過控制⑶!)訪問的起始地址來控制⑶!)運(yùn)行主13001:1051(16:^或備份)3001:1051(16:1%事實(shí)上在其他例子中,可以非常靈活地設(shè)定對訪問的起始地址的控制。比如說可以將主1300^108(161-存放在其他起始地址不是0的位置,只要改變地址總線上的地址信號使得0^能夠訪問到該起始地址即可,也可以將備份13001:1021(16:^放在其他位置,其實(shí)現(xiàn)原理是一致的。
[0030]從以上的描述中可以看出,本申請可以有效避免一個130於10狀161'不可用無法啟動系統(tǒng)的問題,在很大程度上規(guī)避了需要返廠維修的麻煩。在另一個例子中,本申請可以進(jìn)一步提升產(chǎn)品的可靠性。在系統(tǒng)啟動成功后,0^可以檢查當(dāng)前保存的啟動模式,若當(dāng)前啟動模式為主模式,則說明系統(tǒng)是通過主130於10狀161'啟動的,此時⑶口可以檢查第一區(qū)塊上的主13001:1021(16:^與第二區(qū)塊上備份1^001:1021(16:^是否一致,如果不一致則說明主13001:108(161-很可能已經(jīng)版本升級了,也就是說相對于備份1^001:1021(16:^來說版本更高,此時?:?11可以將主)3001:1021(16:^復(fù)制一份到第二區(qū)塊來更新備份13001: 。相反,若當(dāng)前啟動模式為從模式,則說明通過主13001:1021(16:^啟動失敗了,主1^001:1021(16:^很可能已經(jīng)不可用,此時⑶!)可以將備份13001:1021(161'復(fù)制一份到第一區(qū)塊來恢復(fù)主13001:1021(161',保持在下次啟動時依然有兩個13001:1021(161'可以使用,使得整個系統(tǒng)在這一塊仍然具有冗余性。
[0031]以上所述僅為本申請的較佳實(shí)施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種高可靠性的計算機(jī)啟動方法,其中該計算機(jī)包括處理器CPU、邏輯器件組合以及存儲器,其中所述邏輯器件組合位于處理器以及存儲器之間,并通過地址總線分別與處理器以及存儲器相連;所述存儲器設(shè)置有存儲主bootloader的第一區(qū)塊、存儲有備份bootloader的第二區(qū)塊以及存儲操作系統(tǒng)的區(qū)塊;該方法包括: 在計算機(jī)上電時,邏輯器件組合在內(nèi)部啟動具有預(yù)定時長的定時器; 邏輯器件組合在確定自身保存的啟動模式為主模式時,控制CPU啟動第一區(qū)塊中的主bootloader ; 邏輯器件組合在確定自身保存的啟動模式為從模式時,控制CPU啟動第二區(qū)塊中的備份 bootloader ; CPU在確定bootloader啟動成功時,通知邏輯器件組合啟動成功; 邏輯器件組合在收到CPU的啟動成功通知時關(guān)閉所述定時器,在確定所述定時器超時且當(dāng)前啟動模式為主模式時,將所述啟動模式從主模式修改為從模式并將所述CPU復(fù)位。
2.如權(quán)利要求1所述的方法,其特征在于:所述邏輯器件組合在計算機(jī)上電時將自身保存的啟動模式設(shè)置為主模式。
3.如權(quán)利要求1所述的方法,其特征在于:所述邏輯器件組合控制CPU運(yùn)行第二區(qū)塊中的備份bootloader的方式具體為:修改地址總線上的地址信號以將CPU訪問存儲器的起始地址變更為第二區(qū)塊的起始地址。
4.如權(quán)利要求1所述的方法,其特征在于:控制CPU啟動第一區(qū)塊中的主bootloader的過程為:將地址總線上的地址信號透傳至所述存儲器。
5.如權(quán)利要求1所述的方法,其特征在于:還包括: 邏輯器件組合在確定所述定時器超時且當(dāng)前啟動模式為從模式時,結(jié)束當(dāng)前流程。
6.如權(quán)利要求1所述的方法,其特征在于:還包括: CPU在確定bootloader啟動成功時,檢查邏輯器件組合保存的當(dāng)前啟動模式是主模式還是從模式,若當(dāng)前啟動模式為從模式,則使用備份bootloader更新第一區(qū)塊中的主bootloader,若當(dāng)前啟動模式為主模式,在主bootloader版本更高的情況下,使用主bootloader更新第二區(qū)塊中的備份bootloader。
7.如權(quán)利要求1所述的方法,其特征在于:所述保存操作系統(tǒng)的區(qū)塊包括存儲有主操作系統(tǒng)的第三區(qū)塊以及存儲有備份操作系統(tǒng)的第四區(qū)塊。
8.如權(quán)利要求1所述的方法,其特征在于:所述定時器的定時時長不超過I分鐘。
9.如權(quán)利要求1所述的方法,其特征在于:所述邏輯器件組合為CPLD。
10.如權(quán)利要求1所述的方法,其特征在于:所述CPU通過數(shù)據(jù)總線與所述存儲器相連。
【文檔編號】G06F11/14GK104461659SQ201410842380
【公開日】2015年3月25日 申請日期:2014年12月30日 優(yōu)先權(quán)日:2014年12月30日
【發(fā)明者】楊傳龍 申請人:浙江宇視科技有限公司