两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

Boot文件加載方法及裝置的制作方法

文檔序號:6369798閱讀:174來源:國知局
專利名稱:Boot文件加載方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及 通信領(lǐng)域,具體而言,涉及ー種BOOT文件加載方法及裝置。
背景技術(shù)
在電信、通訊領(lǐng)域的嵌入式系統(tǒng)中,采用BOOT來引導(dǎo)中央處理器加載應(yīng)用程序版本的方法被廣泛地應(yīng)用。該方法雖然能方便地加載應(yīng)用程序,但是在BOOT被損壞或者燒錄錯(cuò)誤的情況下將不能加載應(yīng)用程序版本,由此導(dǎo)致系統(tǒng)無法啟動(dòng)和運(yùn)行。在相關(guān)技術(shù)中采用雙BOOT可以有效降低因BOOT損壞或者燒錄錯(cuò)誤導(dǎo)致加載應(yīng)用程序版本失敗的可能性,圖I是相關(guān)技術(shù)中采用外部設(shè)備來完成雙BOOT切換的示意圖,如圖I所示,要做到雙BOOT的有效配合和起到備份作用,需要借助外部設(shè)備可擦除可編輯邏輯器件(Erasable Programmable Logic Device,簡稱為EPLD)來完成,即在CPU與存儲芯片F(xiàn)LASH (閃存)間存在ー個(gè)EPLD。但是,采用EPLD負(fù)責(zé)切換雙BOOT存在以下缺點(diǎn)(I)增加ー個(gè)器件EPLD,增加成本;(2)增大印制電路板(Printed Circuit Board,簡稱為PCB)的面積;(3)啟動(dòng)過程過度依賴EPLD,要EPLD啟動(dòng)后才能引導(dǎo)BOOT。因此,在現(xiàn)有技術(shù)中使用的雙BOOT切換存在成本資源消耗過大,過份依賴外部設(shè)備的問題。

發(fā)明內(nèi)容
本發(fā)明提供了ー種BOOT文件加載方法及裝置,以至少解決現(xiàn)有技術(shù)中使用的雙BOOT切換存在成本資源消耗過大,過份依賴外部設(shè)備的問題。根據(jù)本發(fā)明的ー個(gè)方面,提供了ー種BOOT文件加載方法,包括Β00Τ文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū),其中,所述BOOT文件加載引導(dǎo)區(qū)以及所述至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上;所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載。優(yōu)選地,所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載之后,還包括在所述選擇的BOOT區(qū)中的BOOT文件不能成功加載的情況下,所述BOOT文件加載弓丨導(dǎo)區(qū)引導(dǎo)所述中央處理器加載所述至少兩個(gè)BOOT區(qū)中除所述選擇的BOOT區(qū)之外的其它BOOT區(qū)中的BOOT文件。優(yōu)選地,BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū)包括所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn);直到校驗(yàn)成功的情況下,確定當(dāng)前BOOT區(qū)為所述選擇的BOOT區(qū)。優(yōu)選地,所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn)包括獲取當(dāng)前BOOT區(qū)所存儲的加載文件的循環(huán)冗余校驗(yàn)碼CRC值;判斷獲取的所述CRC值與當(dāng)前BOOT區(qū)中BOOT文件對應(yīng)的文件CRC值是否一致;在判斷結(jié)果一致的情況下,確定對當(dāng)前BOOT區(qū)校驗(yàn)成功。優(yōu)選地,所述BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū)包括所述BOOT文件加載引導(dǎo)區(qū)對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的主BOOT區(qū)進(jìn)行校驗(yàn);在校驗(yàn)成功的情況下,確定所述主BOOT區(qū)為所述選擇的BOOT區(qū);在校驗(yàn)不成功的情況下,所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的備BOOT區(qū)進(jìn)行校驗(yàn);直到校驗(yàn)成功的情況下,確定當(dāng)前備BOOT區(qū)為所述選擇的BOOT區(qū)。根據(jù)本發(fā)明的另一方面,提供了ー種BOOT文件加載裝置,位于BOOT文件加載弓I導(dǎo)區(qū)中,包括選擇模塊,用于從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū),其中,所述BOOT文件加載引導(dǎo)區(qū)以及所述至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上;引導(dǎo)模塊,用于引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載。優(yōu)選地,所述引導(dǎo)模塊,在所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載之后,在所述選擇的BOOT區(qū)中的BOOT文件不能成功加載的情況下,還用于引導(dǎo)所述中央處理器加載所述至少兩個(gè)BOOT區(qū)中除所述選擇的BOOT區(qū)之外的其它BOOT區(qū)中的BOOT文件。 優(yōu)選地,所述選擇模塊包括校驗(yàn)?zāi)K,用于依次對所述至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn);確定模塊,用于直到校驗(yàn)成功的情況下,確定當(dāng)前BOOT區(qū)為所述選擇的BOOT區(qū)。優(yōu)選地,所述校驗(yàn)?zāi)K包括獲取模塊,用于獲取當(dāng)前BOOT區(qū)所存儲的加載文件的循環(huán)冗余校驗(yàn)碼CRC值;判斷模塊,用于判斷獲取的所述CRC值與當(dāng)前BOOT區(qū)中BOOT文件對應(yīng)的文件CRC值是否一致;第一確定模塊,用于在判斷結(jié)果一致的情況下,確定對當(dāng)前BOOT區(qū)校驗(yàn)成功。優(yōu)選地,所述選擇模塊包括第一校驗(yàn)?zāi)K,用于對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的主BOOT區(qū)進(jìn)行校驗(yàn);第二確定模塊,用于在校驗(yàn)成功的情況下,確定所述主BOOT區(qū)為所述選擇的BOOT區(qū);第二校驗(yàn)?zāi)K,用于在校驗(yàn)不成功的情況下,所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的備BOOT區(qū)進(jìn)行校驗(yàn);第三確定模塊,用于直到校驗(yàn)成功的情況下,確定當(dāng)前備BOOT區(qū)為所述選擇的BOOT區(qū)。通過本發(fā)明,采用BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū),其中,所述BOOT文件加載引導(dǎo)區(qū)以及所述至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上;所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載,解決了現(xiàn)有技術(shù)中使用的雙BOOT切換存在成本資源消耗過大,過份依賴外部設(shè)備的問題,進(jìn)而達(dá)到了實(shí)現(xiàn)可靠,方便且降低布局面積及成本的效果。


此處所說明的附圖用來提供對本發(fā)明的進(jìn)ー步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖I是相關(guān)技術(shù)中采用外部設(shè)備來完成雙BOOT切換的示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載方法的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置的結(jié)構(gòu)框圖;圖4是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置中的選擇模塊32的結(jié)構(gòu)框圖;圖5是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置中的選擇模塊32中的校驗(yàn)?zāi)K42的結(jié)構(gòu)框圖6是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置中的選擇模塊32的結(jié)構(gòu)框圖;圖7是根據(jù)本發(fā)明實(shí)施例的對單芯片上的存儲空間進(jìn)行劃分的示意圖;圖8是根據(jù)本發(fā)明實(shí)施例的在單芯片上實(shí)現(xiàn)兩級BOOT的上電流程圖;圖9是根據(jù)本發(fā)明實(shí)施例的在單芯片上實(shí)現(xiàn)雙BOOT切換的流程圖。
具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。在本實(shí)施例中提供了ー種BOOT文件加載方法,圖2是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載方法的流程圖,如圖2所示,該流程包括如下步驟、步驟S202,BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū),其中,BOOT文件加載引導(dǎo)區(qū)以及至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上;步驟S204,B00T文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載。通過上述步驟,對單芯片上的區(qū)域進(jìn)行了劃分,劃分為了引導(dǎo)中央處理器加載BOOT區(qū)的BOOT文件加載弓丨導(dǎo)區(qū)以及至少兩個(gè)Β00Τ,在實(shí)現(xiàn)加載時(shí),可以依據(jù)需要從至少兩個(gè)BOOT區(qū)中進(jìn)行選擇,并加載選擇的BOOT區(qū)中的BOOT文件,即在ー個(gè)芯片上就可以實(shí)現(xiàn)成功的加載,相對于現(xiàn)有技術(shù)中需要依據(jù)外界才能實(shí)現(xiàn)成功啟動(dòng),有效地避免了依據(jù)外界所帯來的器件成本以及電路布局的成本消耗,不僅實(shí)現(xiàn)可靠,方便,成本低廉,還有效地提高了加載效率,提高了實(shí)用性。為了確保加載的成功性,在BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載之后,還可以在選擇的BOOT區(qū)中的BOOT文件不能成功加載的情況下,BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器加載至少兩個(gè)BOOT區(qū)中除選擇的BOOT區(qū)之外的其它BOOT區(qū)中的BOOT文件,即在加載的過程中出現(xiàn)異常的情況下,選擇其它的BOOT區(qū)進(jìn)行加載。當(dāng)然選擇其它的BOOT區(qū)進(jìn)行加載時(shí)可以采用重復(fù)上述步驟的方式進(jìn)行。BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū)可以采用多種處理方式,當(dāng)然不管采用哪種處理方式,其主要目標(biāo)是為了選擇出一個(gè)能夠確定進(jìn)行成功加載BOOT區(qū),并引導(dǎo)中央處理器對將該BOOT區(qū)中的BOOT文件進(jìn)行加載,從而實(shí)現(xiàn)成功啟動(dòng)。在此以兩個(gè)較優(yōu)的實(shí)施方式為例進(jìn)行說明方式一 Β00Τ文件加載引導(dǎo)區(qū)依次對至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn);直到校驗(yàn)成功的情況下,確定當(dāng)前BOOT區(qū)為選擇的BOOT區(qū)。即從至少兩個(gè)BOOT區(qū)中選擇出能夠成功加載以實(shí)現(xiàn)成功記載的Β00Τ,采用該BOOT中的BOOT文件進(jìn)行加載。在實(shí)施時(shí),依據(jù)對至少兩個(gè)BOOT區(qū)中的BOOT區(qū)進(jìn)行校驗(yàn)時(shí),不管采用什么方式依次進(jìn)行校驗(yàn),只要是校驗(yàn)成功,就可以將該當(dāng)前BOOT區(qū)作為選擇的Β00Τ,采用該BOOT中的BOOT文件進(jìn)行加載,從另一方面來說,在真正加載之前就確定的加載的成功性,有效地提高了加載效率。BOOT文件加載引導(dǎo)區(qū)依次對至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn)時(shí),也可以依據(jù)BOOT區(qū)中的BOOT區(qū)文件的各項(xiàng)參數(shù)進(jìn)行校驗(yàn),例如,采用對BOOT區(qū)中的BOOT文件的循環(huán)冗余校驗(yàn)CRC來進(jìn)行相關(guān)的判斷,在實(shí)施時(shí)可以采用以下的處理方式先獲取當(dāng)前BOOT區(qū)所存儲的加載文件的循環(huán)冗余校驗(yàn)碼CRC值,即通過當(dāng)前BOOT區(qū)中實(shí)際所存在的BOOT文件計(jì)算這些文件的CRC值;判斷獲取的CRC值與當(dāng)前BOOT區(qū)中BOOT文件對應(yīng)的文件CRC值(即生成文件時(shí)文件所對應(yīng)的各項(xiàng)參數(shù)中的ー種參數(shù))是否一致;在判斷結(jié)果一致的情況下,即認(rèn)為當(dāng)前BOOT區(qū)中的BOOT文件并沒有經(jīng)過相應(yīng)的改寫或是刪除,確定可以使用該當(dāng)前的BOOT區(qū)中的BOOT文件來進(jìn)行加載,即對當(dāng)前BOOT區(qū)校驗(yàn)成功。在此處還提供了另ー種較優(yōu)的方式,例如,方式ニ Β00Τ文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū)包括在對BOOT進(jìn)行選擇之前,預(yù)先對至少兩個(gè)BOOT區(qū)中的ー個(gè)BOOT區(qū)設(shè)置為主BOOT區(qū),而其余的都為備BOO區(qū),在選擇時(shí)優(yōu)先選擇主BOOT區(qū),即優(yōu)先采用主BOOT區(qū)中的BOOT文件進(jìn)行加載。實(shí)施時(shí),可以采用以下處理方式Β00Τ文件加載引導(dǎo)區(qū)對至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的主BOOT區(qū)進(jìn)行校驗(yàn),需要說明的是,校驗(yàn)的過程可以采用上述的校驗(yàn)步驟進(jìn)行;在校驗(yàn)成功的情況下,確定主BOOT區(qū)為選擇的BOOT區(qū);在校驗(yàn)不成功的情況下,BOOT文件加載引導(dǎo)區(qū)依次對至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的備BOOT區(qū)進(jìn)行校驗(yàn);直到校驗(yàn)成功的情況下,確定當(dāng)前備BOOT區(qū)為選擇的BOOT區(qū)。在本實(shí)施例中還提供了ー種BOOT文件加載裝置,該裝置用于實(shí)現(xiàn)上述實(shí)施例及優(yōu)選實(shí)施方式,已經(jīng)進(jìn)行過說明的不再贅述。如以下所使用的,術(shù)語“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。圖3是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置的結(jié)構(gòu)框圖,如圖3所示,該裝置位于BOOT文件加載引導(dǎo)區(qū),包括選擇模塊32和引導(dǎo)模塊34,下面對該裝置進(jìn)行說明。選擇模塊32,用于從至少兩個(gè)BOOT區(qū)中選擇ー個(gè)BOOT區(qū),其中,BOOT文件加載弓I導(dǎo)區(qū)以及至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上;引導(dǎo)模塊34,連接至上述選擇模塊32,用于引導(dǎo)中央處理器對選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載。優(yōu)選地,該引導(dǎo)模塊34,在BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對選擇的BOOT 區(qū)中的BOOT文件進(jìn)行加載之后,在選擇的BOOT區(qū)中的BOOT文件不能成功加載的情況下,還用于引導(dǎo)中央處理器加載至少兩個(gè)BOOT區(qū)中除選擇的BOOT區(qū)之外的其它BOOT區(qū)中的BOOT文件。圖4是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置中的選擇模塊32的結(jié)構(gòu)框圖,如圖4所示,該選擇模塊32包括校驗(yàn)?zāi)K42和確定模塊44,下面對該選擇模塊32進(jìn)行說明。校驗(yàn)?zāi)K42,用于依次對至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn);確定模塊44,連接至上述校驗(yàn)?zāi)K42,用于直到校驗(yàn)成功的情況下,確定當(dāng)前BOOT區(qū)為選擇的BOOT區(qū)。圖5是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置中的選擇模塊32中的校驗(yàn)?zāi)K42的結(jié)構(gòu)框圖,如圖5所示,該校驗(yàn)?zāi)K42包括獲取模塊52、判斷模塊54和第一確定模塊56,下面對該校驗(yàn)?zāi)K42進(jìn)行說明。獲取模塊52,用于獲取當(dāng)前BOOT區(qū)所存儲的加載文件的循環(huán)冗余校驗(yàn)碼CRC值;判斷模塊54,連接至上述獲取模塊52,用于判斷獲取的CRC值與當(dāng)前BOOT區(qū)中BOOT文件對應(yīng)的文件CRC值是否一致;第一確定模塊56,連接至上述判斷模塊54,用于在判斷結(jié)果ー致的情況下,確定對當(dāng)前BOOT區(qū)校驗(yàn)成功。圖6是根據(jù)本發(fā)明實(shí)施例的BOOT文件加載裝置中的選擇模塊32的結(jié)構(gòu)框圖,如圖6所示,該選擇模塊32包括第一校驗(yàn)?zāi)K62、第二確定模塊64、第二校驗(yàn)?zāi)K66和第三確定模塊68,下面對該選擇模塊32進(jìn)行說明。
第一校驗(yàn)?zāi)K62,用于對至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的主BOOT區(qū)進(jìn)行校驗(yàn);第ニ確定模塊64,連接至上述第一校驗(yàn)?zāi)K62,用于在校驗(yàn)成功的情況下,確定主BOOT區(qū)為選擇的BOOT區(qū);第二校驗(yàn)?zāi)K66,連接至上述第二確定模塊64,用于在校驗(yàn)不成功的情況下,BOOT文件加載引導(dǎo)區(qū)依次對至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的備BOOT區(qū)進(jìn)行校驗(yàn);第三確定模塊68,連接至上述第二校驗(yàn)?zāi)K66,用于直到校驗(yàn)成功的情況下,確定當(dāng)前備BOOT區(qū)為所述選擇的BOOT區(qū)。
針對相關(guān)技術(shù)中嵌入式系統(tǒng)的可靠啟動(dòng)技術(shù)的上述問題,本發(fā)明實(shí)施例提供了一種簡單方便、實(shí)現(xiàn)可靠且成本低廉的雙BOOT切換方法,即ー種在單芯片上實(shí)現(xiàn)兩級BOOT啟動(dòng)的方法和裝置。在本實(shí)施例中在單芯片上實(shí)現(xiàn)兩級BOOT啟動(dòng)的裝置包括A、BOOT引導(dǎo)中央處理器加載應(yīng)用程序版本;B、BOOT有主備區(qū);C、應(yīng)用程序版本可在線更新、備份BOOT文件;D、在單ー芯片上將存儲空間劃分為至少3部分,分別用來存儲BASE BOOT、主/備BOOT ;E、BASEBOOT啟動(dòng)引導(dǎo)中央處理器進(jìn)入主或備BOOT區(qū)運(yùn)行;F、應(yīng)用程序版本在線更新BASEB00T文件。下面對在單片機(jī)上實(shí)現(xiàn)兩級BOOT啟動(dòng)的裝置中的模塊及其模塊的功能進(jìn)行說明將該單片機(jī)上的存儲空間劃分為3部分,BASE BOOT區(qū)(與上述BOOT文件加載引導(dǎo)區(qū)的功能相當(dāng))、主BOOT區(qū)和備BOOT區(qū)(與上述至少兩個(gè)BOOT區(qū)的功能相當(dāng));三個(gè)功能區(qū)有各自的版本文件,主備BOOT區(qū)版本文件可以是同一個(gè)也可以不同。上電后從0x0開始運(yùn)行進(jìn)入BASE BOOT,在BASE BOOT中對主BOOT和備BOOT進(jìn)行校驗(yàn),并且默認(rèn)是先從主BOOT啟動(dòng),如果校驗(yàn)主BOOT不通過,則引導(dǎo)中央處理器加載備Β00Τ,采用備BOOT區(qū)的版本文件運(yùn)行。在主BOOT通過校驗(yàn)并進(jìn)入主BOOT運(yùn)行正常后,主BOOT引導(dǎo)中央處理器加載應(yīng)用程序版本運(yùn)行。在應(yīng)用程序版本運(yùn)行中可以更新BASEB00T文件,也可以更新和備份BOOT文件。本發(fā)明實(shí)施例基于上述模塊提供了一種在單芯片上實(shí)現(xiàn)兩級BOOT的方法,該方法包括以下步驟SI,將單芯片上的存儲空間劃分為3部分,圖7是根據(jù)本發(fā)明實(shí)施例的對單芯片上的存儲空間進(jìn)行劃分的示意圖,如圖7所示,3部分分別為BASE BOOT區(qū)、主BOOT區(qū)、備BOOT 區(qū),;S2,單芯片上電自動(dòng)進(jìn)入BASE BOOT區(qū),采用BASE BOOT文件進(jìn)行運(yùn)行;S3,在BASE BOOT區(qū)中對主備BOOT文件進(jìn)行校驗(yàn);S4,默認(rèn)引導(dǎo)中央處理器加載主BOOT區(qū)文件,在主BOOT校驗(yàn)失敗時(shí)則引導(dǎo)中央處理器加載備BOOT ;S5,主BOOT或備BOOT引導(dǎo)中央處理器加載應(yīng)用程序運(yùn)行。采用本發(fā)明實(shí)施例的在單芯片上實(shí)現(xiàn)兩級BOOT的方法和裝置,與現(xiàn)有技術(shù)相比,取得了不需要外部設(shè)備(例如,EPLD)完成雙BOOT切換的進(jìn)步,節(jié)省了成本,提高了實(shí)用性。下面結(jié)合附圖對本發(fā)明實(shí)施例的在單芯片上實(shí)現(xiàn)兩級BOOT的方法進(jìn)行說明。圖8是根據(jù)本發(fā)明實(shí)施例的在單芯片上實(shí)現(xiàn)兩級BOOT的上電流程圖,如圖8所示,該方法包括如下步驟
步驟S802,上電后先進(jìn)入BASE BOOT區(qū);步驟S804,BASE BOOT引導(dǎo)中央處理器MCU加載可靠的BOOT ;步驟S806,可靠的BOOT引導(dǎo)中央處理器MCU加載可靠的應(yīng)用程度版本。圖9是根據(jù)本發(fā)明實(shí)施例的在單芯片 上實(shí)現(xiàn)雙BOOT切換的流程圖,如9所示,在進(jìn)行切換之前,需要對該單芯片的存儲空間進(jìn)行劃分將單芯片上的存儲空間劃分為三個(gè)部分BASE BOOT、主BOOT和備Β00Τ,根據(jù)BASEB00T、主/備Β00Τ,設(shè)定各個(gè)區(qū)域的起始地址,主備BOOT區(qū)的大小一祥。在單芯片上實(shí)現(xiàn)雙BOOT切換的流程包括如下步驟步驟S902,讀取寄存器,獲取上次BOOT運(yùn)行狀態(tài)標(biāo)志;步驟S904,判斷是否對進(jìn)行加載的BOOT進(jìn)行了設(shè)置,即,設(shè)置加載主BOOT還是加載備BOOT 了嗎?步驟S906,在對加載的BOOT進(jìn)行了設(shè)置的情況下,引導(dǎo)加載設(shè)定的BOOT區(qū)版本,進(jìn)入步驟S910 ;步驟S908,在對加載的BOOT沒有進(jìn)行設(shè)置的情況下,從0x0地址開始執(zhí)行,也就是BASEB00T區(qū),在BASEB00T中默認(rèn)是引導(dǎo)中央處理器加載主Β00Τ,即,采用默認(rèn)的主BOOT進(jìn)行加載,即,BASE BOOT引導(dǎo)加載主BOOT區(qū)版本,上電后,然后由主BOOT引導(dǎo)中央處理器加載應(yīng)用程序版本;步驟S910,BASE BOOT校驗(yàn)加載的BOOT文件;步驟S912,判斷校驗(yàn)的結(jié)果是否正常校驗(yàn)的內(nèi)容是判斷文件的循環(huán)冗余檢查(Cyclic Redundancy Check,簡稱為CRC)值與實(shí)際文件計(jì)算的CRC是否一致,不一致則認(rèn)為當(dāng)前BOOT區(qū)文件異常,在判斷校驗(yàn)的結(jié)果不正常的情況下,進(jìn)入步驟S914,否則進(jìn)入步驟 S924 ;步驟S914,切換引導(dǎo)加載另ー個(gè)BOOT區(qū);步驟S916,校驗(yàn)加載的另ー個(gè)BOOT區(qū)中的BOOT版本文件;步驟S918,判斷校驗(yàn)的結(jié)果是否正常,判斷的內(nèi)容與步驟S912相同,在此不同詳述;在判斷為是的情況下,進(jìn)入步驟S920,否則進(jìn)入步驟S922 ;步驟S920,判斷上次備BOOT區(qū)版本運(yùn)行是否存在異常?在判斷上次備BOOT存在異常的情況下,進(jìn)入步驟S922,否則進(jìn)入步驟S926 ;步驟S922,進(jìn)行告警提示;步驟S924,判斷上次BOOT區(qū)中的BOOT版本文件運(yùn)行是否存在異常,判斷的過程與上述步驟S920相似;在判斷存在異常的情況下,進(jìn)入步驟S914 ;否則進(jìn)入步驟S926 ;步驟S926,進(jìn)入BOOT區(qū),采用BOOT區(qū)中的BOOT文件進(jìn)行相應(yīng)的加載,完成啟動(dòng)過程。需要說明的是,上述BASE BOOT中加載主BOOT前對主BOOT文件進(jìn)行校驗(yàn),校驗(yàn)的內(nèi)容是判斷文件的循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check,簡稱為CRC)值與實(shí)際文件計(jì)算的CRC是否一致,不一致則認(rèn)為當(dāng)前主BOOT區(qū)文件異常,設(shè)置加載備BOOT ;重復(fù)上面的校驗(yàn)判斷過程,如果備BOOT也校驗(yàn)不一致則表明中央處理器不能加載到正常的Β00Τ,報(bào)警提示。另外,BOOT運(yùn)行中發(fā)生異常導(dǎo)致看門狗溢出會置一個(gè)標(biāo)志到某ー寄存器,復(fù)位后從0x0地址開始運(yùn)行,在BASE BOOT中判斷該寄存器的值,如果值為設(shè)定的異常值則需要做BOOT切換。若前次為主BOOT異常,引導(dǎo)中央處理器加載備BOOT ;若備BOOT異常,則引導(dǎo)中央處理器加載主BOOT。通過采用本發(fā)明的上述實(shí)施例及優(yōu)選實(shí)施方式,不僅不需要外部設(shè)備完成BOOT的切換,實(shí)現(xiàn)簡單、方便、可靠,還較大地節(jié)省了成本,提高了實(shí)用性等。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種BOOT文件加載方法,其特征在于,包括 BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇一個(gè)BOOT區(qū),其中,所述BOOT文件加載引導(dǎo)區(qū)以及所述至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上; 所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載。
2.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載之后,還包括 在所述選擇的BOOT區(qū)中的BOOT文件不能成功加載的情況下,所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)所述中央處理器加載所述至少兩個(gè)BOOT區(qū)中除所述選擇的BOOT區(qū)之外的其它BOOT區(qū)中的BOOT文件。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇一個(gè)BOOT區(qū)包括 所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn); 直到校驗(yàn)成功的情況下,確定當(dāng)前BOOT區(qū)為所述選擇的BOOT區(qū)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn)包括 獲取當(dāng)前BOOT區(qū)所存儲的加載文件的循環(huán)冗余校驗(yàn)碼CRC值; 判斷獲取的所述CRC值與當(dāng)前BOOT區(qū)中BOOT文件對應(yīng)的文件CRC值是否一致; 在判斷結(jié)果一致的情況下,確定對當(dāng)前BOOT區(qū)校驗(yàn)成功。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇一個(gè)BOOT區(qū)包括 所述BOOT文件加載引導(dǎo)區(qū)對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的主BOOT區(qū)進(jìn)行校驗(yàn); 在校驗(yàn)成功的情況下,確定所述主BOOT區(qū)為所述選擇的BOOT區(qū); 在校驗(yàn)不成功的情況下,所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的備BOOT區(qū)進(jìn)行校驗(yàn); 直到校驗(yàn)成功的情況下,確定當(dāng)前備BOOT區(qū)為所述選擇的BOOT區(qū)。
6.一種BOOT文件加載裝置,其特征在于,位于BOOT文件加載引導(dǎo)區(qū)中,包括 選擇模塊,用于從至少兩個(gè)BOOT區(qū)中選擇一個(gè)BOOT區(qū),其中,所述BOOT文件加載弓I導(dǎo)區(qū)以及所述至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上; 引導(dǎo)模塊,用于引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述引導(dǎo)模塊,在所述BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對所述選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載之后,在所述選擇的BOOT區(qū)中的BOOT文件不能成功加載的情況下,還用于引導(dǎo)所述中央處理器加載所述至少兩個(gè)BOOT區(qū)中除所述選擇的BOOT區(qū)之外的其它BOOT區(qū)中的BOOT文件。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述選擇模塊包括 校驗(yàn)?zāi)K,用于依次對所述至少兩個(gè)BOOT區(qū)中BOOT區(qū)進(jìn)行校驗(yàn); 確定模塊,用于直到校驗(yàn)成功的情況下,確定當(dāng)前BOOT區(qū)為所述選擇的BOOT區(qū)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述校驗(yàn)?zāi)K包括 獲取模塊,用于獲取當(dāng)前BOOT區(qū)所存儲的加載文件的循環(huán)冗余校驗(yàn)碼CRC值;判斷模塊,用于判斷獲取的所述CRC值與當(dāng)前BOOT區(qū)中BOOT文件對應(yīng)的文件CRC值是否一致; 第一確定模塊,用于在判斷結(jié)果一致的情況下,確定對當(dāng)前BOOT區(qū)校驗(yàn)成功。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述選擇模塊包括 第一校驗(yàn)?zāi)K,用于對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的主BOOT區(qū)進(jìn)行校驗(yàn);第二確定模塊,用于在校驗(yàn)成功的情況下,確定所述主BOOT區(qū)為所述選擇的BOOT區(qū);第二校驗(yàn)?zāi)K,用于在校驗(yàn)不成功的情況下,所述BOOT文件加載引導(dǎo)區(qū)依次對所述至少兩個(gè)BOOT區(qū)中預(yù)先設(shè)定的備BOOT區(qū)進(jìn)行校驗(yàn); 第三確定模塊,用于直到校驗(yàn)成功的情況下,確定當(dāng)前備BOOT區(qū)為所述選擇的BOOT區(qū)。
全文摘要
本發(fā)明提供了一種BOOT文件加載方法及裝置,該方法包括,BOOT文件加載引導(dǎo)區(qū)從至少兩個(gè)BOOT區(qū)中選擇一個(gè)BOOT區(qū),其中,BOOT文件加載引導(dǎo)區(qū)以及至少兩個(gè)BOOT區(qū)設(shè)置在單芯片上;BOOT文件加載引導(dǎo)區(qū)引導(dǎo)中央處理器對選擇的BOOT區(qū)中的BOOT文件進(jìn)行加載,通過本發(fā)明,解決了現(xiàn)有技術(shù)中使用的雙BOOT切換存在成本資源消耗過大,過份依賴外部設(shè)備的問題,進(jìn)而達(dá)到了實(shí)現(xiàn)可靠,方便且降低布局面積及成本的效果。
文檔編號G06F9/445GK102736933SQ20121015338
公開日2012年10月17日 申請日期2012年5月16日 優(yōu)先權(quán)日2012年5月16日
發(fā)明者卓深, 賴鵬程, 馬孟臣 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
江津市| 东台市| 房山区| 泰来县| 安塞县| 卫辉市| 会泽县| 徐州市| 会东县| 大同县| 东山县| 贵州省| 宝坻区| 康平县| 荆州市| 天柱县| 阜新| 湘潭市| 乐山市| 瑞丽市| 晋城| 抚顺市| 大石桥市| 樟树市| 宁津县| 科技| 巴彦淖尔市| 北辰区| 南华县| 广州市| 涟水县| 且末县| 怀集县| 德安县| 沈阳市| 德江县| 霸州市| 和硕县| 六安市| 柳林县| 永川市|