專利名稱::用于嵌入式系統(tǒng)的安全引導(dǎo)裝置及方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及嵌入式系統(tǒng),具體地說,本發(fā)明涉及一種用于嵌入式系統(tǒng)的安全引導(dǎo)方法。
背景技術(shù):
:隨著網(wǎng)絡(luò)通信技術(shù)、芯片技術(shù)和軟件技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)的應(yīng)用也越來越廣泛。數(shù)字電視因其廣泛的市場(chǎng)需求前景和巨大的商業(yè)價(jià)值,使得機(jī)頂盒成為嵌入式系統(tǒng)的一個(gè)廣泛應(yīng)用領(lǐng)域。目前,嵌入式操作系統(tǒng)主要有Vxworks,Li皿x,WinCE,0S20,Psos,u/C0S-I1,eC0S等。其中u/C0S-I1,eC0S,Li皿x,Vxworks應(yīng)用最為廣泛。u/C0S-I1操作系統(tǒng)為公開源碼的實(shí)時(shí)操作系統(tǒng),內(nèi)核針對(duì)實(shí)時(shí)系統(tǒng)的要求來設(shè)計(jì)實(shí)現(xiàn),相對(duì)較簡(jiǎn)單,同時(shí)u/COS-II具有代碼尺寸小,易于移植的特性。Li皿x操作系統(tǒng)同樣也是完全開放源碼的,提供標(biāo)準(zhǔn)的應(yīng)用程序接口(API),嵌入式Linux內(nèi)核是為特殊的硬件資源進(jìn)行裁減和修改后的Li皿x內(nèi)核,已越來越多地應(yīng)用于各種嵌入式系統(tǒng)中。Vxworks是一種嵌入式實(shí)時(shí)操作系統(tǒng),具有高性能的內(nèi)核、友好的用戶開發(fā)環(huán)境,具有很好的實(shí)時(shí)性,在軍方和通信業(yè)得到了廣泛的應(yīng)用。嵌入式計(jì)算機(jī)系統(tǒng)通過裝載模塊(Loader)來實(shí)現(xiàn)對(duì)系統(tǒng)的安全引導(dǎo)。目前的嵌入式系統(tǒng)中,Loader主要實(shí)現(xiàn)對(duì)CPU的初始化、串口初始化、內(nèi)存DDR-SDRAM(或DDR2等)及Flash等主要硬件的初始化和加載驅(qū)動(dòng)的功能。另外,某些嵌入式系統(tǒng)的Loader還具有在線升級(jí)功能,但現(xiàn)有的在線升級(jí)本質(zhì)上是被動(dòng)升級(jí)(主要是由于現(xiàn)有Loader功能簡(jiǎn)單,無法對(duì)碼流進(jìn)行實(shí)時(shí)分析和相應(yīng)處理)。當(dāng)需要從Loader升級(jí)上層應(yīng)用程序時(shí),采用讀取Flash中特定扇區(qū)(Sector)的頻點(diǎn)和調(diào)制方式等信息來鎖頻和下載(如機(jī)頂盒的DVB應(yīng)用或IPTV應(yīng)用),而上述升級(jí)相關(guān)信息是在前次關(guān)機(jī)前或重新啟動(dòng)前由上層應(yīng)用程序根據(jù)是否有新應(yīng)用程序版本需要升級(jí)而寫入的。因此,當(dāng)相關(guān)的上層應(yīng)用程序出現(xiàn)故障時(shí),可能就無法進(jìn)行在線升級(jí)或修復(fù)。另外,由于所述升級(jí)相關(guān)信息均放置在Flash的寫保護(hù)區(qū)之外(如圖1所示,該圖是現(xiàn)有技術(shù)中的機(jī)頂盒的Flash分區(qū)示意圖),所述升級(jí)相關(guān)信息容易受到非法破壞(如黑客攻擊),導(dǎo)致系統(tǒng)無法正常升級(jí)。另外,由于現(xiàn)有Loader的功能較為簡(jiǎn)單,在安全引導(dǎo)階段也無法實(shí)現(xiàn)其它一些較為復(fù)雜的功能。比如現(xiàn)有Loader無法對(duì)寫保護(hù)區(qū)內(nèi)外的Image數(shù)據(jù)逐級(jí)進(jìn)行完整性校驗(yàn);現(xiàn)有Loader不能支持圖形界面,因此開機(jī)畫面必須在Loader運(yùn)行完并啟動(dòng)操作系統(tǒng)后才能出現(xiàn),這就造成用戶等待時(shí)間過長(zhǎng),體驗(yàn)不佳的問題。
發(fā)明內(nèi)容本發(fā)明的目的是為在嵌入式系統(tǒng)提供一種在Loader中嵌入操作系統(tǒng)以執(zhí)行復(fù)雜功能的安全引導(dǎo)裝置;本發(fā)明還提供一種能夠?qū)崿F(xiàn)主動(dòng)在線升級(jí)的安全引導(dǎo)方法,所述引導(dǎo)裝置及方法還能夠進(jìn)行逐級(jí)校驗(yàn)和提供快速開機(jī)畫面。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供的用于嵌入式系統(tǒng)的安全引導(dǎo)裝置,包括安裝在存儲(chǔ)器寫保護(hù)區(qū)域內(nèi)的裝載模塊,其特征在于,所述裝載模塊包括第一引導(dǎo)程序模塊、裝載區(qū)操作系統(tǒng)和第二引導(dǎo)程序模塊;所述第一引導(dǎo)程序模塊用于開機(jī)后將系統(tǒng)硬件初始化,然后啟動(dòng)所述裝載區(qū)操作系統(tǒng);所述裝載區(qū)操作系統(tǒng)具有跳轉(zhuǎn)線程,所述跳轉(zhuǎn)線程用于在裝載區(qū)操作系統(tǒng)的其它線程執(zhí)行完后,將程序跳轉(zhuǎn)至第二引導(dǎo)程序模塊的起始地址;所述第二引導(dǎo)程序模塊用于將系統(tǒng)硬件重新初始化,然后啟動(dòng)主操作系統(tǒng)。上述技術(shù)方案中,所述裝載區(qū)操作系統(tǒng)還具有在線升級(jí)線程,所述在線升級(jí)線程用于搜索并下載新版本的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。上述技術(shù)方案中,所述裝載區(qū)操作系統(tǒng)還包括校驗(yàn)功能模塊,所述校驗(yàn)功能模塊用于判斷上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核是否遭到破壞,如判斷為是,則啟動(dòng)裝載區(qū)操作系統(tǒng)的在線升級(jí)線程重新下載所述上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。上述技術(shù)方案中,所述在線升級(jí)線程還用于在檢測(cè)到強(qiáng)制升級(jí)信號(hào)時(shí),根據(jù)所述強(qiáng)制升級(jí)信號(hào)下載并安裝目前最新版本的上層應(yīng)用程序和或主操作系統(tǒng)內(nèi)核。上述技術(shù)方案中,所述存儲(chǔ)器為flash存儲(chǔ)器,所述裝載區(qū)操作系統(tǒng)和使用ELF文件格式,經(jīng)無損壓縮后存儲(chǔ)在所述flash存儲(chǔ)器的寫保護(hù)區(qū)域內(nèi);所述第一引導(dǎo)程序模塊還用于解析ELF文件和解無損壓縮。上述技術(shù)方案中,所述第二引導(dǎo)程序模塊的鏈接地址與第一引導(dǎo)程序模塊不同,所述第二引導(dǎo)程序模塊的燒寫地址與第一引導(dǎo)程序模塊不同。所述第二引導(dǎo)程序模塊生成過程如下使用重定位技術(shù)修改第一引導(dǎo)程序的鏈接地址并對(duì)第一引導(dǎo)程序重新編譯,然后按照修改后的鏈接地址,將重新編譯后的引導(dǎo)程序模塊燒寫進(jìn)所述存儲(chǔ)器的寫保護(hù)區(qū)域內(nèi)。上述技術(shù)方案中,所述裝載區(qū)操作系統(tǒng)還具有開機(jī)畫面顯示線程,所述開機(jī)畫面顯示線程的優(yōu)先級(jí)高于所述跳轉(zhuǎn)線程的優(yōu)先級(jí)。上述技術(shù)方案中,所述裝載區(qū)操作系統(tǒng)為u/COS-II、eCOS、Psos或Vxworks操作系統(tǒng);所述主操作系統(tǒng)為L(zhǎng)i皿x、Vxworks,WinCE,0S20,Psos,u/C0S-11或eC0S操作系統(tǒng)。為實(shí)現(xiàn)另一發(fā)明目的,本發(fā)明提供的用于嵌入式系統(tǒng)的安全引導(dǎo)方法,包括如下步驟1)系統(tǒng)上電,啟動(dòng)第一引導(dǎo)程序模塊,將系統(tǒng)硬件初始化,然后啟動(dòng)所述裝載區(qū)操作系統(tǒng);2)裝載區(qū)操作系統(tǒng)執(zhí)行在線升級(jí)線程,所述在線升級(jí)線程用于搜索并下載新版本的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核;3)裝載區(qū)操作系統(tǒng)執(zhí)行跳轉(zhuǎn)線程,將指針指向第二引導(dǎo)程序模塊的起始地址;4)第二引導(dǎo)程序模塊重新將系統(tǒng)硬件初始化,然后啟動(dòng)主操作系統(tǒng)。上述技術(shù)方案中,所述步驟2)還包括校驗(yàn)主操作系統(tǒng)的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核是否遭到破壞,如遭到破壞,則啟動(dòng)在線升級(jí)線程重新下載所述上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。上述技術(shù)方案中,所述步驟2)還包括啟動(dòng)開機(jī)畫面顯示線程,為用戶提供開機(jī)畫面;所述校驗(yàn)線程利用數(shù)字簽名技術(shù)進(jìn)行校驗(yàn)。上述技術(shù)方案中,所述步驟1)還包括在系統(tǒng)硬件初始化后,對(duì)裝載區(qū)操作系統(tǒng)和第二引導(dǎo)程序模塊的數(shù)字簽名進(jìn)行校驗(yàn),如果校驗(yàn)正確,則啟動(dòng)所述裝載區(qū)操作系統(tǒng);如果校驗(yàn)錯(cuò)誤,則向用戶告警。上述技術(shù)方案中,所述步驟2)還包括檢測(cè)強(qiáng)制升級(jí)信號(hào),當(dāng)檢測(cè)到強(qiáng)制升級(jí)信號(hào)時(shí),根據(jù)所述強(qiáng)制升級(jí)信號(hào)下載并安裝目前最新版本的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。上述技術(shù)方案中,當(dāng)裝載區(qū)操作系統(tǒng)以ELF文件和無損壓縮的形式存儲(chǔ)時(shí),所述步驟1)還包括對(duì)所述裝載區(qū)操作系統(tǒng)進(jìn)行ELF文件解析和解無損壓縮。本發(fā)明的一些事實(shí)方案與現(xiàn)有技術(shù)相比,具有如下技術(shù)效果1)本發(fā)明在Loader中嵌入了一個(gè)專用于安全引導(dǎo)的操作系統(tǒng)(如u/COS-II),能夠通過運(yùn)行該專用操作系統(tǒng)的各種功能線程在安全引導(dǎo)階段實(shí)現(xiàn)多種復(fù)雜功能。2)本發(fā)明的一些實(shí)施例具有主動(dòng)在線升級(jí)上層應(yīng)用程序和主操作系統(tǒng)內(nèi)核的功能,即使Flash中上層應(yīng)用程序或主操作系統(tǒng)內(nèi)核被破壞,本發(fā)明仍然能夠自動(dòng)在線升級(jí)應(yīng)用程序和主操作系統(tǒng)內(nèi)核。3)本發(fā)明的一些實(shí)施例能夠?qū)lash各部分映像文件進(jìn)行逐級(jí)校驗(yàn),確保系統(tǒng)安全啟動(dòng)。對(duì)Flash上層應(yīng)用程序或主操作系統(tǒng)內(nèi)核的惡意破壞將導(dǎo)致系統(tǒng)告警和停止運(yùn)行,能夠防止黑客惡意替換上層應(yīng)用程序或主操作系統(tǒng)內(nèi)核。4)本發(fā)明的一些實(shí)施例采用無損壓縮和ELF格式文件,使得Loader中的操作系統(tǒng)編譯壓縮文件占用的Flash空間較小(約200KB左右)。5)本發(fā)明的一些實(shí)施例還可以實(shí)現(xiàn)上電后快速顯示出彩色開機(jī)畫面,比在Linux啟動(dòng)后出彩色開機(jī)畫面,具有更好的用戶體驗(yàn)。以下,結(jié)合附圖來詳細(xì)說明本發(fā)明的實(shí)施例,其中圖1為現(xiàn)有技術(shù)中的機(jī)頂盒的Flash分區(qū)示意圖;圖2為本發(fā)明一個(gè)實(shí)施例中的Flash分區(qū)示意圖;圖3為本發(fā)明一個(gè)實(shí)施例的多操作系統(tǒng)嵌入式平臺(tái)軟件啟動(dòng)流程圖。具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明做進(jìn)一步說明。安全引導(dǎo)是嵌入式系統(tǒng)啟動(dòng)操作系統(tǒng)前的一個(gè)必要步驟。弓I導(dǎo)裝置主要由裝載模塊(Loader)構(gòu)成?,F(xiàn)有技術(shù)中,由于Loader自身能力的限制,安全引導(dǎo)過程只能實(shí)現(xiàn)一些基本的功能。而本實(shí)施例主要構(gòu)思是在Loader中嵌入一個(gè)專用于安全引導(dǎo)的操作系統(tǒng),并依托該專用操作系統(tǒng)來實(shí)現(xiàn)一些復(fù)雜的功能,如實(shí)現(xiàn)主動(dòng)在線升級(jí)、實(shí)現(xiàn)開機(jī)畫面的快速顯示、對(duì)數(shù)據(jù)完整性進(jìn)行校檢等。如圖2所示,本實(shí)施例的Loader中嵌入了u/C0S_II操作系統(tǒng),稱為裝載區(qū)操作系統(tǒng)。對(duì)數(shù)據(jù)完整性進(jìn)行校檢通過數(shù)字簽名來實(shí)現(xiàn),圖2中數(shù)字簽名1用于對(duì)Loader整個(gè)Image(映像)文件進(jìn)行完整性校驗(yàn),數(shù)字簽名2用于對(duì)主操作系統(tǒng)(本實(shí)施例為L(zhǎng)inux)內(nèi)核和上層應(yīng)用程序進(jìn)行完整性校驗(yàn)。另一方面,本實(shí)施例設(shè)計(jì)了兩個(gè)引導(dǎo)程序(Boot程序)模塊,第一引導(dǎo)程序模塊用于實(shí)現(xiàn)對(duì)CPU和板級(jí)硬件的初始化,并在初始化后引導(dǎo)裝載區(qū)操作系統(tǒng)啟動(dòng),第二引導(dǎo)程序模塊主要用于引導(dǎo)主操作系統(tǒng)啟動(dòng)。同時(shí),本實(shí)施例在裝載區(qū)操作系統(tǒng)設(shè)計(jì)了一個(gè)跳轉(zhuǎn)線程,用于將指針指向第二引導(dǎo)程序模塊的起始地址。一般來說,跳轉(zhuǎn)線程的優(yōu)先級(jí)較低,這樣在裝載區(qū)操作系統(tǒng)運(yùn)行完其它功能線程后,進(jìn)入跳轉(zhuǎn)線程,通過所述跳轉(zhuǎn)線程自動(dòng)進(jìn)入第二引導(dǎo)程序,從而實(shí)現(xiàn)主操作系統(tǒng)的啟動(dòng)。本實(shí)施例中設(shè)置兩個(gè)引導(dǎo)程序模塊,由Loader中的裝載區(qū)操作系統(tǒng)先跳轉(zhuǎn)到第二個(gè)引導(dǎo)程序,再由第二個(gè)引導(dǎo)程序跳轉(zhuǎn)到主操作系統(tǒng),實(shí)現(xiàn)了系統(tǒng)軟件的分層架構(gòu),簡(jiǎn)化系統(tǒng)軟件的設(shè)計(jì),避免了直接從Loader中的裝載區(qū)操作系統(tǒng)跳轉(zhuǎn)到主操作系統(tǒng)的復(fù)雜操作。本實(shí)施例中,所述第二個(gè)引導(dǎo)程序可以在第一個(gè)引導(dǎo)程序的基礎(chǔ)上采用重定位技術(shù)獲得,這樣技術(shù)實(shí)現(xiàn)上較為方便。再者,本實(shí)施例還采用了ELF文件格式以及無損壓縮技術(shù),從而大幅壓縮了Loader所占的存儲(chǔ)空間,以嵌入u/COS-II操作系統(tǒng)為例,編譯的壓縮Image文件代碼尺寸可以縮小到200KB。如圖2所示,本實(shí)施例的Loader包括第一引導(dǎo)程序模塊、裝載區(qū)操作系統(tǒng)和第二引導(dǎo)程序模塊。由于整個(gè)Loader均存儲(chǔ)在Flash的寫保護(hù)區(qū)(WP)內(nèi),因此裝載區(qū)操作系統(tǒng)的所有線程都具有很強(qiáng)的安全性和穩(wěn)定性。以實(shí)現(xiàn)在線升級(jí)為例,本實(shí)施例只需啟動(dòng)裝載區(qū)操作系統(tǒng)并運(yùn)行在線升級(jí)線程即可。而對(duì)比圖1,現(xiàn)有技術(shù)的在線升級(jí)需要利用到存儲(chǔ)在Flash寫保護(hù)區(qū)(WP)外的升級(jí)相關(guān)信息,一旦這些升級(jí)相關(guān)信息遭到篡改,將無法實(shí)現(xiàn)在線升級(jí)功能。參考圖3,本實(shí)施例的嵌入式系統(tǒng)的安全引導(dǎo)流程如下步驟l)系統(tǒng)上電后,啟動(dòng)第一個(gè)Boot程序,對(duì)CPU、串口、內(nèi)存DDR(或DDR2)、Flash等進(jìn)行初始化,加載Flash驅(qū)動(dòng),配置DDR(或DDR2)的時(shí)序參數(shù)等,系統(tǒng)啟動(dòng)。步驟2)讀取Flash中數(shù)字簽名l,校驗(yàn)u/C0S_II的IMAGE(映像)文件與第二個(gè)Boot的數(shù)字簽名,如果正確,則執(zhí)行步驟3),否則系統(tǒng)進(jìn)行LED或串口告警指示。步驟3)對(duì)Flash分區(qū)中的u/C0S_II文件進(jìn)行解無損壓縮,再進(jìn)行ELF格式解析。執(zhí)行u/COS-II應(yīng)用程序的相關(guān)功能(如開機(jī)畫面顯示,判斷是否有新版本的升級(jí)下載流,判斷是否需要遙控器強(qiáng)制升級(jí)等,如需要升級(jí),新版本應(yīng)用程序升級(jí)后需相應(yīng)更改其數(shù)字簽名2),然后跳轉(zhuǎn)到第二個(gè)Boot程序的地址。步驟4)執(zhí)行第二個(gè)Boot程序,實(shí)現(xiàn)對(duì)Linux內(nèi)核和其應(yīng)用程序的簽名校驗(yàn),如果正確,則執(zhí)行步驟5),否則為上層應(yīng)用程序或主操作系統(tǒng)內(nèi)核被破壞,系統(tǒng)LED或串口告警指示,并進(jìn)入Loader在線升級(jí)程序模塊,應(yīng)用程序升級(jí)后由Loader相應(yīng)更改其數(shù)字簽名2,并寫入Flash中相應(yīng)地址。步驟5)對(duì)Flash分區(qū)中的Li皿x無損壓縮內(nèi)核文件進(jìn)行解無損壓縮,進(jìn)行ELF格式解析,啟動(dòng)帶根文件系統(tǒng)的RAMDISK自啟動(dòng)Linux內(nèi)核。RAMDISK顧名詞義,是在RAM中模擬一個(gè)硬盤分區(qū),功能猶如塊設(shè)備。步驟6)由帶根文件系統(tǒng)的RAMDISK的Linux內(nèi)核,啟動(dòng)上層應(yīng)用程序。本實(shí)施例的引導(dǎo)裝置通過以下步驟實(shí)現(xiàn)步驟1)編寫特定嵌入式硬件平臺(tái)Boot程序,實(shí)現(xiàn)對(duì)CPU的初始化,串口初始化、內(nèi)存DDR-SDRAM(或DDR2)及Flash等主要硬件的驅(qū)動(dòng)和初始化,進(jìn)行Flash分區(qū)等。本實(shí)施例的步驟1)為編寫特定嵌入式平臺(tái)的Boot程序,Boot程序一般由匯編和C混合編寫完成。實(shí)現(xiàn)對(duì)CPU的初始化,對(duì)串口芯片,加載Flash芯片的驅(qū)動(dòng),配置內(nèi)存芯片DDR-SDRAM(DDR2)的時(shí)序參數(shù),進(jìn)行Flash分區(qū)等。對(duì)內(nèi)存DDR(DDR2)的初始化關(guān)鍵在于設(shè)計(jì)內(nèi)存的時(shí)序與處理器的時(shí)序配合,對(duì)內(nèi)存時(shí)序影響大并且與寄存器配置有關(guān)的參數(shù)列表如下,計(jì)算這些參數(shù),采用匯編寫入相應(yīng)的配置寄存器。表1為內(nèi)存芯片的一些常用參數(shù)配置。表1<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table>Flash驅(qū)動(dòng)采用匯編程序完成,采用C編寫Flash分區(qū)程序。例如Flash的分區(qū)如下,采用以下數(shù)據(jù)結(jié)構(gòu)ypedefstructnewflash_part_t{intfp_size;char氺fp—n咖e;}newflash_part_t;typedefstructnewflash_probe_t{longflash_phys;/氺Flash白勺凈勿王里t也J:止氺/intflash_size;/*Flash總的存儲(chǔ)空間大小*/intflasn_flags;/*Flash的總線連接方式*/intflash—type;/*Flash的類型*/intflash_cmdset;/*Flash的命令設(shè)置*/intflash_nsectors;/氺扇區(qū)白勺數(shù)量氺/intflash—sectors[FLASH—MAXSECT0RS];/*以下為Flash的芯片數(shù)量*/intflash_nchips;/*〃flash_size〃僅僅是一個(gè)Flash芯片的存儲(chǔ)空間大小*//*以下用于Flash的分區(qū)數(shù)量*/intflash_nparts;/*如為0則表示Flash不進(jìn)行分區(qū)newflash_part_tflash_parts[FLASH_MAX_PARTITI0NS];int(氺flash_ioctl_hook)(cfe—devctx—t氺ctx,iocb—buffer—t氺buffer);/*flash引擎,用于不同廠家的Flash芯片*/int(氺flash_engine_hook)(flashinstr—t氺prog);}newflash_probe_t;fprobe.flash_叩arts=8;fprobe.flash__partsfp—size=0;fprobe.flash__partsfp—n膽6=〃ApplicationProgramfprobe.flash__parts[1]fp—size=128*1024;fprobe.flash__parts[1]fp—n膽6=〃FirstBoot〃;fprobe.flash__parts[2]fp—siz6=256*1024;fprobe.flash__parts[2]fp—n膽6=〃UcosII";fprobe.flash__parts[3]fp—siz6=128*1024;fprobe.flash__parts[3]fp—n膽6=〃SecondBoot〃;fprobe.flash__parts[4]fp—siz6=128*1024;fprobe.flash__parts[4]fp—n膽6="Baselnformation";fprobe.flash__parts[5]fp—siz6=128*1024;fprobe.flash__parts[5]fp—n膽6=〃NITand0thers〃;fprobe.flash__parts[6]fp—siz6=128*1024;fprobe.flash__parts[6]fp—n膽6=〃0therlnformation〃fprobe.flash__parts[7]fp—siz6=0x400000-896*1024;fprobe.flash__parts[7]fp—n膽6=〃Li皿xKernel〃;步驟2)編寫ELF文件解析格式程序。ELF全稱為(ExecutableandLinkingFormat),ELF的文件主要包含以下幾個(gè)部分21)ELF頭(ELFHeader),每一個(gè)ELF的開始部分為一個(gè)ELF頭,它是一個(gè)類型為Elf32—Ehdr類型的結(jié)構(gòu)體,保護(hù)有描述文件組織情況的信息。22)程序頭表(programheadertable):通知系統(tǒng)如何創(chuàng)建進(jìn)程Image。用于建立一個(gè)進(jìn)程Image的文件需要有一個(gè)程序頭表,重定位文件沒有。23)節(jié)(section):含有目標(biāo)文件的大部分信息,如指令、數(shù)據(jù)、符號(hào)表、重定位信息等。其中,較為重要的幾個(gè)節(jié)為(l).init初始化節(jié),它包含有進(jìn)程初始化時(shí)所執(zhí)行的代碼。當(dāng)程序開始運(yùn)行時(shí),系統(tǒng)在調(diào)用main之前執(zhí)行本節(jié)代碼。(2).shstrtab節(jié)名節(jié),含有節(jié)名,以字符串形式聯(lián)系存儲(chǔ)。(3).strtab字符串節(jié),含有字符串,通常是代表與符號(hào)表入口相關(guān)名字的串。(4).symtab符號(hào)表節(jié),含有一個(gè)符號(hào)表。(5).text正文節(jié),含有程序的可執(zhí)行指令。24)節(jié)頭表(sectionheadertable):含有文件中所包含節(jié)的入口信息。每個(gè)節(jié)在節(jié)頭表中有一個(gè)入口,每個(gè)入口給出了節(jié)名、節(jié)大小等信息。在連接過程中,所使用的文件需要有一個(gè)節(jié)頭表。步驟3)編寫解無損壓縮程序(特別以gzip為典型)和數(shù)字簽名校驗(yàn)程序。本實(shí)施例利用gzip無損解壓縮技術(shù),實(shí)現(xiàn)對(duì)u/COS-II與Linux的無損壓縮Image文件的無損解壓縮。有損壓縮主要應(yīng)用于圖像、語音信號(hào)等,具有很高的壓縮比,能夠大大減小數(shù)據(jù)的存儲(chǔ)空間,但信息受到了損失。而無損壓縮應(yīng)用于對(duì)宿主數(shù)據(jù)要求很高,信息量沒有任何損失。這里采用gzip無損解壓縮算法,Loader可以解gzip壓縮的文件。壓縮算法的重要三個(gè)輸入對(duì)象是輸入數(shù)據(jù)流、輸出數(shù)據(jù)流和一張用于編碼的字符串表。輸入數(shù)據(jù)流是指被壓縮數(shù)據(jù);輸出數(shù)據(jù)流是指壓縮后輸出的數(shù)據(jù)流;字符串表存儲(chǔ)的是數(shù)據(jù)的索引號(hào),相同塊的數(shù)據(jù)只輸出第一塊的索引號(hào),從而實(shí)現(xiàn)了數(shù)據(jù)的壓縮。解壓縮是其逆過程。本實(shí)施例對(duì)ELF的無損壓縮可執(zhí)行文件的主要步驟如下31)解無損壓縮gzip文件32)ELF格式文件解析33)讀入ELF可執(zhí)行文件的頭部信息以確定其文件格式及地址空間的大??;34)以段的形式劃分地址空間;35)將可執(zhí)行程序讀入地址空間中的各個(gè)段,建立虛實(shí)地址間的映射關(guān)系;36)將BBS段清零;37)創(chuàng)建堆棧段;38)建立程序參數(shù)、環(huán)境變量等程序運(yùn)行過程中所需的信息;39)啟動(dòng)運(yùn)行。步驟4)由步驟1)、步驟2)、步驟3)組合成Boot程序,實(shí)現(xiàn)對(duì)CPU和硬件的初始化,同時(shí)具有解無損壓縮和解析ELF格式文件的功能,燒寫入Flash相應(yīng)開始啟動(dòng)地址。本實(shí)施例主要實(shí)現(xiàn)在Loader中集成u/C0S_II操作系統(tǒng),u/C0S_II為公開源碼的實(shí)時(shí)系統(tǒng),內(nèi)核是針對(duì)實(shí)時(shí)系統(tǒng)的要求來實(shí)現(xiàn)的,相對(duì)比較簡(jiǎn)單,可滿足較高的實(shí)時(shí)性要求。內(nèi)核提供任務(wù)調(diào)度和管理、時(shí)鐘管理、任務(wù)間同步和通信、內(nèi)存管理和中斷服務(wù)等功能。支持多任務(wù),易于移植,適合于在Loader中完成在線系統(tǒng)升級(jí)等功能。步驟5)編寫基于u/COS-II操作系統(tǒng)的應(yīng)用程序,實(shí)現(xiàn)對(duì)嵌入式平臺(tái)硬件驅(qū)動(dòng)的支持,可實(shí)現(xiàn)系統(tǒng)在線升級(jí)等功能,執(zhí)行完相應(yīng)功能后,進(jìn)行強(qiáng)制地址跳轉(zhuǎn),跳轉(zhuǎn)到步驟6)中第二個(gè)Boot在Flash中的燒寫地址。生成ELF文件格式的無損壓縮IMAGE文件。最后將其燒寫入Flash的Boot程序下一個(gè)分區(qū)的起始地址?!矫?,本實(shí)施例需要編寫在線升級(jí)的相關(guān)程序。下面,以下嵌入式系統(tǒng)以DVB-C機(jī)頂盒為例說明本實(shí)施例中在線升級(jí)的主要步驟,本領(lǐng)域技術(shù)人員可以根據(jù)這些步驟來編寫在線升級(jí)的相關(guān)程序。51)DVB-C機(jī)頂盒采用電纜與前端設(shè)備進(jìn)行連接,采用QAM調(diào)制方式(如常采用QAM64方式)來傳輸數(shù)字信號(hào)。52)本實(shí)施例的Loader帶有操作系統(tǒng),支持各種硬件資源的驅(qū)動(dòng),支持前面板的驅(qū)動(dòng),因此Loader系統(tǒng)可接收遙控器信號(hào)。在系統(tǒng)啟動(dòng)時(shí)規(guī)定遙控器的某些按鍵組合(如按鍵為7658等)為強(qiáng)制升級(jí)信號(hào),當(dāng)Loader收到該信號(hào)后則進(jìn)入升級(jí)流程,采用該方法來實(shí)現(xiàn)強(qiáng)制升級(jí)。53)本實(shí)施例的Loader帶有操作系統(tǒng),對(duì)于DVB-C信號(hào),可按照一定的步驟主動(dòng)進(jìn)行一定頻點(diǎn)和調(diào)制信息的碼流搜索和鎖定、進(jìn)行節(jié)目映射表PMT、節(jié)目關(guān)聯(lián)表PAT、網(wǎng)絡(luò)信息表NIT等表的解析和處理,尋找特定PID的升級(jí)碼流;規(guī)定前端服務(wù)器和終端采用特定包標(biāo)識(shí)符PID的碼流進(jìn)行新版本的操作系統(tǒng)內(nèi)核與應(yīng)用程序Image的升級(jí),碼流的打包方式和相應(yīng)的解析方式由前端和終端系統(tǒng)設(shè)計(jì)時(shí)確定。54)啟動(dòng)Loader中的操作系統(tǒng)后,首先加載Tuner的驅(qū)動(dòng)程序,實(shí)現(xiàn)對(duì)一定頻點(diǎn)、符號(hào)率和調(diào)制方式的信號(hào)進(jìn)行鎖定,先根據(jù)Flash中特定存儲(chǔ)區(qū)域的頻率、調(diào)制信息來搜索碼流,看是否能正常鎖定;如果可以正常鎖定,則進(jìn)入步驟55);否則再按照運(yùn)營(yíng)商指定的幾個(gè)常用的下載升級(jí)碼流的頻率、調(diào)制信息來嘗試是否可重新嘗試鎖定碼流;如果可以正常鎖定,則進(jìn)入步驟55);否則搜索網(wǎng)絡(luò)信息表NIT,搜索相關(guān)頻率和調(diào)制信息的碼流,網(wǎng)絡(luò)信息表NIT提供關(guān)于多組傳輸流和傳輸網(wǎng)絡(luò)相關(guān)的信息,其中包含傳輸流描述符、通道頻率、衛(wèi)星發(fā)射器號(hào)碼、調(diào)制特性等信息。搜索NIT表看是否可正常鎖定;如果可以正常鎖定,則進(jìn)入步驟55);否則繼續(xù)搜索NIT表。55)升級(jí)程序線程解析PAT表,得到節(jié)目映射表(PMT),尋找對(duì)特定升級(jí)用的特定PID的下載流。PAT表用MPEG指定的PID(OO)標(biāo)明,通常用PID=0表示。它的主要作用是針對(duì)復(fù)用的每一路傳輸流,提供傳輸流中包含哪些節(jié)目、節(jié)目的編號(hào)以及對(duì)應(yīng)節(jié)目的節(jié)目映射表(PMT)的位置,即PMT的TS包的包標(biāo)識(shí)符(PID)的值,同時(shí)還提供網(wǎng)絡(luò)信息表(NIT)的位置,即NIT的TS包的包標(biāo)識(shí)符(PID)的值。56)尋找到下載流后,然后根據(jù)前端發(fā)送的相應(yīng)的打包方式來進(jìn)行相應(yīng)的解析,在內(nèi)存中開辟緩沖區(qū),將各個(gè)Section的數(shù)據(jù)收入緩沖區(qū),最后當(dāng)全部包收齊后,重新按序號(hào)進(jìn)行組合得到新的主操作系統(tǒng)內(nèi)核與應(yīng)用程序的整個(gè)Image。57)帶有操作系統(tǒng)的Loader,將內(nèi)存中收到的新版本的操作系統(tǒng)內(nèi)核與應(yīng)用程序的Image,燒寫到Flash中的相應(yīng)地址,同時(shí)修改相應(yīng)的數(shù)字簽名。58)最后帶操作系統(tǒng)的Loader在升級(jí)完成后,進(jìn)行軟復(fù)位,進(jìn)行系統(tǒng)重新啟動(dòng)。59)對(duì)于IPTV機(jī)頂盒,所需下載的升級(jí)碼流通過網(wǎng)口進(jìn)入系統(tǒng),而不是電纜的方式,與之相似,帶有Loader的操作系統(tǒng)同樣可以完成在線升級(jí)的功能。另一方面,本實(shí)施例需要實(shí)現(xiàn)對(duì)Loader中u/COS-II與第二個(gè)Boot程序的數(shù)字簽名,同時(shí)也要實(shí)現(xiàn)對(duì)Linux內(nèi)核和上層應(yīng)用程序的數(shù)字簽名。數(shù)字簽名主要的功能是保證信息傳輸?shù)耐暾浴l(fā)送者的身份認(rèn)證、防止交易中的抵賴發(fā)生。在Flash中采用數(shù)字簽名主要為了驗(yàn)證Flash中所存儲(chǔ)的Image的完整性?;诠€密碼體制和私鑰密碼體制都可以獲得數(shù)字簽名,目前主要是基于公鑰密碼體制的數(shù)字簽名。包括普通數(shù)字簽名和特殊數(shù)字簽名。普通數(shù)字簽名算法有RSA、ElGamal、Fiat-Shamir、Guillou-Quisquarter、Schnorr、Ong-Schnorr-Shamir數(shù)字簽名算法、Des/DSA,橢圓曲線數(shù)字簽名算法和有限自動(dòng)機(jī)數(shù)字簽名算法等。特殊數(shù)字簽名有盲簽名、代理簽名、群簽名、不可否認(rèn)簽名、公平盲簽名、門限簽名、具有消息恢復(fù)功能的簽名等,它與具體應(yīng)用環(huán)境密切相關(guān)。顯然,數(shù)字簽名的應(yīng)用涉及到法律問題,美國(guó)聯(lián)邦政府基于有限域上的離散對(duì)數(shù)問題制定了自己的數(shù)字簽名標(biāo)準(zhǔn)(DSS)。數(shù)字簽名的基本原理如下由發(fā)送者把要簽名的信息作Hash運(yùn)算,得到一段難以偽造的并且長(zhǎng)度固定的數(shù)據(jù)摘要。發(fā)送者用自己的私鑰把數(shù)據(jù)摘要加密成數(shù)字簽名。并將其與信息一并發(fā)送給接收者。接收者收到信息和數(shù)字簽名后,對(duì)信息作Hash運(yùn)算得到報(bào)文的數(shù)據(jù)摘要,再用公鑰把數(shù)字簽名解密為數(shù)據(jù)摘要。比較這兩份數(shù)據(jù)摘要,如果相同則簽名有效,否則簽名無效。這樣就確定了信息的真實(shí)性。本實(shí)施例中的Image文件,和相應(yīng)的數(shù)字簽名一塊存儲(chǔ)于Flash相應(yīng)分區(qū)中。本實(shí)施例的數(shù)字簽名算法可采用多種簽名算法,數(shù)字簽名算法程序應(yīng)放入Loader中。在步驟5)中,u/COS-II操作系統(tǒng)還提供快速開機(jī)畫面和強(qiáng)制地址跳轉(zhuǎn)功能。所述快速開機(jī)畫面和強(qiáng)制地址跳轉(zhuǎn)功能采用2個(gè)不同的線程來實(shí)現(xiàn),一個(gè)線程用于實(shí)現(xiàn)對(duì)圖形部分相應(yīng)寄存器的初始化,顯示彩色開機(jī)畫面,該線程具有較高的優(yōu)先級(jí);另一個(gè)線程用于完成地址跳轉(zhuǎn),具有較低的優(yōu)先級(jí)。當(dāng)彩色開機(jī)畫面顯示完成后,具有較低優(yōu)先級(jí)的跳轉(zhuǎn)線程獲得時(shí)間片進(jìn)行運(yùn)行,從而跳轉(zhuǎn)到第二個(gè)Boot寫入FLASH的起始地址。跳轉(zhuǎn)的實(shí)現(xiàn)方式如下,先進(jìn)行關(guān)中斷、然后將一個(gè)空函數(shù)的函數(shù)指針設(shè)置為需跳轉(zhuǎn)的目標(biāo)地址,執(zhí)行該函數(shù),即跳轉(zhuǎn)到第二個(gè)Boot寫入FLASH的起始地址,采用u/COS-II操作系統(tǒng),在此跳轉(zhuǎn)過程中開機(jī)畫面仍保持不變,一直保持到Li皿x應(yīng)用程序重新初始化芯片的圖形顯示部分寄存器。采用該技術(shù),可實(shí)現(xiàn)機(jī)頂盒快速開機(jī)畫面,一般在系統(tǒng)上電后4秒左右(與具體的嵌入式系統(tǒng)處理器的速度有關(guān))即可以顯示彩色開機(jī)畫面。以下為跳轉(zhuǎn)函數(shù)的一種簡(jiǎn)單實(shí)現(xiàn)方法,例如跳轉(zhuǎn)地址為voidSTBJump(void){/*函數(shù)聲明*/void(*RESETJ卿Ptr)(void);/*關(guān)中斷*/0S_ENTER_CRITICAL();/*這里設(shè)置空函數(shù)的指針為跳轉(zhuǎn)地址為0xbfC60000*/RESETJumpPtr=(void(*)(void))(0xbfc60000);/*進(jìn)行跳轉(zhuǎn)*/RESETJ卿Ptr();/*設(shè)置為U/C0S-II較低的優(yōu)先級(jí),優(yōu)先級(jí)低于圖形初始化和加載開機(jī)畫面的優(yōu)先級(jí)*/OSTaskDel(55);}步驟6)采用重定位技術(shù)(relocation),修改Boot程序的鏈接地址并重新編譯生成目標(biāo)文件。將利用重定位技術(shù)修改后的Boot程序鏈接地址做為為第二個(gè)Boot燒寫入Flash的Sector的起始地址。編譯器在編譯生成目標(biāo)文件時(shí),通常都使用從零開始的相對(duì)地址。然而,在鏈接過程中,鏈接器將從一個(gè)指定的地址開始,根據(jù)輸入的目標(biāo)文件的順序以段為單位將目標(biāo)文件一個(gè)接一個(gè)的拼裝起來。除了目標(biāo)文件的拼裝之外,在重定位的過程中還完成了兩個(gè)任務(wù)一是生成最終的符號(hào)表;二是對(duì)代碼段中的某些位置進(jìn)行修改,所有需要修改的位置都由編譯器生成的重定位表指出。以下以BroadcomBCM7309平臺(tái)為例進(jìn)行說明,第一個(gè)Boot程序燒寫入Flash的地址為0x9FC00000;第二個(gè)Boot程序燒寫入Flash的地址為0x9FC60000,需要相應(yīng)修改cfe_rom_reloc_cached.Ids文件如下OUTPUT—ARCH(mips)ENTRY(vec_reset)SECTIONS:0149]{:0150].=0x9FC60000;/*地址由0x9FC00000修改為0x9FC60000*/:0151].text::0152]AT(0xBFC60000):0153]{:0154]—ftext=.;:0155]*(.init):0156]印rol=.;:0157]*(.text):0158]P,IDE(—runtime—reloc—start=.);:0159]>K.rel.sdata):0160]PROVIDE(_runtime_:reloc_stop=.);:0161]*(.fini):0162]氺(.rodata):0163]—etext=.;:0164]}:0165].data0x80001000::0166]AT(((ADDR(text)|OxBOOOOOOO)+SIZEOF(text)+15)&:0167]OxFFFFFFFO):0168]{:0169]—gp=ALIGN(16)+0x8000;:0170]_fdata=.;:0171]*(.rdata):0172]*(.data):0173]CONSTRUCTORS:0174]*(.sdata):0175]}:0176].=ALIGN(16);:0177]—edata=.;:0178]—fbss=;.sbss:{*(.sbss)*(.scommon)}.bss:{*(.bss)*(COMMON)}.=ALIGN(16);<formula>formulaseeoriginaldocumentpage15</formula>步驟7)Flash中第一個(gè)Boot文件、u/C0S-I1IMAGE與第二個(gè)Boot均存儲(chǔ)在Flash的寫保護(hù)區(qū),在本實(shí)施例中,Loader包括第一個(gè)Boot文件、u/C0S-11IMAGE與第二個(gè)Boot文件。步驟8)按順序讀取Flash中從u/C0S-I1IMAGE文件的分區(qū)到第二個(gè)Boot文件末尾的所有數(shù)據(jù),生成數(shù)字簽名l,寫入第二個(gè)Boot的下一個(gè)分區(qū)中,數(shù)字簽名l所在Flash的Sector也應(yīng)為寫保護(hù)區(qū)。步驟9)生成帶有根文件系統(tǒng),支持RAMDISK的Li皿x內(nèi)核Image文件,該內(nèi)核應(yīng)為自啟動(dòng)的方式,格式為ELF格式,并進(jìn)行g(shù)zip無損壓縮。自啟動(dòng)和非自啟動(dòng)內(nèi)核的根文件系統(tǒng)不同。生成的Li皿x內(nèi)核與步驟10)中上層應(yīng)用程序的數(shù)字簽名2,寫入FLASH相應(yīng)地址,一般可連續(xù)燒寫,燒寫地址為數(shù)字簽名1的下一個(gè)Sector首地址。例如,Spansion的FlashS29GL128N,共具有128個(gè)Sector,每個(gè)Sector的尺寸大小為128K字節(jié)。步驟9)中,MTD存儲(chǔ)設(shè)備(這里為Flash)采用JFFS2文件格式,其功能就是在管理MTD設(shè)備上實(shí)現(xiàn)日志型文件系統(tǒng)。與其它的存儲(chǔ)設(shè)備設(shè)備存儲(chǔ)方案相比,JFFS2會(huì)直接在MTD設(shè)備上實(shí)現(xiàn)日志結(jié)構(gòu)的文件系統(tǒng)。JFFS2會(huì)在安裝的時(shí)候,掃描MTD設(shè)備的日志內(nèi)容,并在RAM中重新建立文件系統(tǒng)結(jié)構(gòu)本身。除了提供具有斷電可靠性的日志結(jié)構(gòu)文件系統(tǒng),JFFS2還會(huì)在它管理的MTD設(shè)備上實(shí)現(xiàn)"耗損平衡"和"數(shù)據(jù)壓縮"等特性。JFFS2的"耗損平衡"的功能,是由于Flash設(shè)備中每個(gè)塊的擦除操作有次數(shù)上的限制,通常為100000次,但不同的制造商之間可能會(huì)有差異。一旦塊的擦除次數(shù)達(dá)到這個(gè)上限,制造商就無法保證該塊的正常運(yùn)行。為避免過度使用某些塊讓設(shè)備的壽命因而縮短,JFFS2實(shí)現(xiàn)了一個(gè)算法,可確保Flash設(shè)備上所有區(qū)塊具有一致的使用率,因此可平衡每個(gè)區(qū)塊的損耗程度。同時(shí)JFFS2還具有將數(shù)據(jù)經(jīng)過壓縮節(jié)省空間的功能,并在使用數(shù)據(jù)前將之解壓縮到RAM中。由于JFFS2的這些優(yōu)越特性,已廣泛用于各種MTD設(shè)備的文件系統(tǒng)選項(xiàng)。Li皿x內(nèi)核在系統(tǒng)啟動(dòng)期間進(jìn)行的最后操作之一就是安裝根文件系統(tǒng)。根文件系統(tǒng)是所有Linux系統(tǒng)不可缺少的組件。本實(shí)施例步驟9)的細(xì)節(jié)步驟如下1)建立loop設(shè)備的臨時(shí)掛載點(diǎn)#mkdir/mnt/loop2)建立文件系統(tǒng)映象#ddif=/dev/zeroof=/tmp/loop_tmpbs=lkcount=153603)mke2fs_F_v_mO/tmp/loop_tmp此處-F選項(xiàng)將可迫使mkefs2在文件上運(yùn)行。否則mke2fs會(huì)抱怨/tmp/loop_tmp不是個(gè)塊設(shè)備(/tmp/lo0p_tmp文件映象需要是塊設(shè)備文件,前面的做法是用塊設(shè)備文件/dev/loop0與之相關(guān)聯(lián))。-v選項(xiàng)指出mke2fs應(yīng)該以verbose模式執(zhí)行,_m0指出不必在文件系統(tǒng)上為"超級(jí)用戶"保留任何區(qū)塊,因?yàn)樵谇度胧较到y(tǒng)中通常是單用戶系統(tǒng),為"超級(jí)用戶"保留區(qū)塊沒有意義。4)掛載映象文件#moimt_oloop/tmp/loop_tmp/mnt/loop掛載后,在/mnt/loop下就可以對(duì)文件系統(tǒng)的內(nèi)容進(jìn)行操作。5)cp操作,用cp-af命令將所需要文件拷貝到虛擬盤上6)卸載映象文件#umoimt/mnt/loop7)壓縮映象文件#gzip_v9/tmp/loop_tmp自啟動(dòng)的Linux內(nèi)核,其主要實(shí)現(xiàn)方法為,Linux內(nèi)核啟動(dòng)后運(yùn)行一個(gè)腳本文件,通過該腳本文件,進(jìn)行mountFlash的應(yīng)用程序的相應(yīng)分區(qū),加載板級(jí)驅(qū)動(dòng)程序,從而運(yùn)行系統(tǒng)的上層應(yīng)用程序。步驟10)開發(fā)上層基于Li皿x的應(yīng)用程序,分別燒寫入Flash的相應(yīng)地址。值得說明的是,本發(fā)明中,Loader中所嵌入的操作系統(tǒng),除了u/C0S_II操作系統(tǒng)外,還可以是eCOS、Psos、Vxworks操作系統(tǒng);上層主操作系統(tǒng)除Linux夕卜,還可以是Vxworks,WinCE,0S20,Psos,u/C0S_II,eC0S操作系統(tǒng)。無損壓縮方式除了gzip夕卜,還可以是tar的方式;數(shù)字簽名技術(shù)也可以被數(shù)字指紋、無損數(shù)字水印等方法來替代。最后所應(yīng)說明的是,以上僅用以說明本發(fā)明理論原理和技術(shù)方案而非限制。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。1權(quán)利要求一種用于嵌入式系統(tǒng)的安全引導(dǎo)裝置,包括安裝在存儲(chǔ)器寫保護(hù)區(qū)域內(nèi)的裝載模塊,其特征在于,所述裝載模塊包括第一引導(dǎo)程序模塊、裝載區(qū)操作系統(tǒng)和第二引導(dǎo)程序模塊;所述第一引導(dǎo)程序模塊用于開機(jī)后將系統(tǒng)硬件初始化,然后啟動(dòng)所述裝載區(qū)操作系統(tǒng);所述裝載區(qū)操作系統(tǒng)具有跳轉(zhuǎn)線程,所述跳轉(zhuǎn)線程用于在裝載區(qū)操作系統(tǒng)的其它線程執(zhí)行完后,將程序跳轉(zhuǎn)至第二引導(dǎo)程序模塊的起始地址;所述第二引導(dǎo)程序模塊用于將系統(tǒng)硬件重新初始化,然后啟動(dòng)主操作系統(tǒng)。2.根據(jù)權(quán)利要求1所述的安全引導(dǎo)裝置,其特征在于,所述裝載區(qū)操作系統(tǒng)還具有在線升級(jí)線程,所述在線升級(jí)線程用于搜索并下載新版本的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。3.根據(jù)權(quán)利要求1所述的安全引導(dǎo)裝置,其特征在于,所述裝載區(qū)操作系統(tǒng)還包括校驗(yàn)功能模塊,所述校驗(yàn)功能模塊用于判斷上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核是否遭到破壞,如判斷為是,則啟動(dòng)裝載區(qū)操作系統(tǒng)的在線升級(jí)線程重新下載所述上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。4.根據(jù)權(quán)利要求2所述的安全引導(dǎo)裝置,其特征在于,所述在線升級(jí)線程還用于在檢測(cè)到強(qiáng)制升級(jí)信號(hào)時(shí),根據(jù)所述強(qiáng)制升級(jí)信號(hào)下載并安裝目前最新版本的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。5.根據(jù)權(quán)利要求1所述的安全引導(dǎo)裝置,其特征在于,所述存儲(chǔ)器為flash存儲(chǔ)器,所述裝載區(qū)操作系統(tǒng)和使用ELF文件格式,經(jīng)無損壓縮后存儲(chǔ)在所述flash存儲(chǔ)器的寫保護(hù)區(qū)域內(nèi);所述第一引導(dǎo)程序模塊還用于解析ELF文件和解無損壓縮。6.根據(jù)權(quán)利要求1所述的安全引導(dǎo)裝置,其特征在于,所述裝載區(qū)操作系統(tǒng)還具有開機(jī)畫面顯示線程,所述開機(jī)畫面顯示線程的優(yōu)先級(jí)高于所述跳轉(zhuǎn)線程的優(yōu)先級(jí)。7.根據(jù)權(quán)利要求l所述的安全引導(dǎo)裝置,其特征在于,所述裝載區(qū)操作系統(tǒng)為u/C0S-II、eC0S、Psos或Vxworks操作系統(tǒng);所述主操作系統(tǒng)為L(zhǎng)i皿x、Vxworks,WinCE,0S20,Psos,u/C0S-I1或eC0S操作系統(tǒng)。8.—種利用權(quán)利要求1所述的安全引導(dǎo)裝置進(jìn)行安全引導(dǎo)的方法,包括如下步驟1)系統(tǒng)上電,啟動(dòng)第一引導(dǎo)程序模塊,將系統(tǒng)硬件初始化,然后啟動(dòng)所述裝載區(qū)操作系統(tǒng);2)裝載區(qū)操作系統(tǒng)執(zhí)行在線升級(jí)線程,所述在線升級(jí)線程用于搜索并下載新版本的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核;3)裝載區(qū)操作系統(tǒng)執(zhí)行跳轉(zhuǎn)線程,將指針指向第二引導(dǎo)程序模塊的起始地址;4)第二引導(dǎo)程序模塊重新將系統(tǒng)硬件初始化,然后啟動(dòng)主操作系統(tǒng)。9.根據(jù)權(quán)利要求8所述的安全引導(dǎo)方法,其特征在于,所述步驟2)還包括校驗(yàn)主操作系統(tǒng)的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核是否遭到破壞,如遭到破壞,則啟動(dòng)在線升級(jí)線程重新下載所述上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。10.根據(jù)權(quán)利要求8所述的安全引導(dǎo)方法,其特征在于,所述步驟2)還包括啟動(dòng)開機(jī)畫面顯示線程,為用戶提供開機(jī)畫面;所述校驗(yàn)線程利用數(shù)字簽名技術(shù)進(jìn)行校驗(yàn)。11.根據(jù)權(quán)利要求10所述的安全引導(dǎo)方法,其特征在于,所述步驟1)還包括在系統(tǒng)硬件初始化后,對(duì)裝載區(qū)操作系統(tǒng)和第二引導(dǎo)程序模塊的數(shù)字簽名進(jìn)行校驗(yàn),如果校驗(yàn)正確,則啟動(dòng)所述裝載區(qū)操作系統(tǒng);如果校驗(yàn)錯(cuò)誤,則向用戶告警。12.根據(jù)權(quán)利要求8所述的安全引導(dǎo)方法,其特征在于,所述步驟2)還包括檢測(cè)強(qiáng)制升級(jí)信號(hào),當(dāng)檢測(cè)到強(qiáng)制升級(jí)信號(hào)時(shí),根據(jù)所述強(qiáng)制升級(jí)信號(hào)下載并安裝目前最新版本的上層應(yīng)用程序和/或主操作系統(tǒng)內(nèi)核。13.根據(jù)權(quán)利要求8所述的安全引導(dǎo)方法,其特征在于,當(dāng)裝載區(qū)操作系統(tǒng)以ELF文件和無損壓縮的形式存儲(chǔ)時(shí),所述步驟1)還包括對(duì)所述裝載區(qū)操作系統(tǒng)進(jìn)行ELF文件解析和解無損壓縮。全文摘要本發(fā)明提供一種用于嵌入式系統(tǒng)的安全引導(dǎo)裝置,包括安裝在存儲(chǔ)器寫保護(hù)區(qū)域內(nèi)的裝載模塊,其特征在于,所述裝載模塊包括第一引導(dǎo)程序模塊、裝載區(qū)操作系統(tǒng)和第二引導(dǎo)程序模塊;所述第一引導(dǎo)程序模塊用于開機(jī)后將系統(tǒng)硬件初始化,然后啟動(dòng)所述裝載區(qū)操作系統(tǒng);所述裝載區(qū)操作系統(tǒng)具有跳轉(zhuǎn)線程,所述跳轉(zhuǎn)線程用于在裝載區(qū)操作系統(tǒng)的其它線程執(zhí)行完后,將程序跳轉(zhuǎn)至第二引導(dǎo)程序模塊的起始地址;所述第二引導(dǎo)程序模塊用于將系統(tǒng)硬件重新初始化,然后啟動(dòng)主操作系統(tǒng)。另外,本發(fā)明還提供了相應(yīng)的安全引導(dǎo)方法。本發(fā)明能夠在安全引導(dǎo)階段實(shí)現(xiàn)多種復(fù)雜功能,如主動(dòng)在線升級(jí)上層應(yīng)用程序和主操作系統(tǒng)內(nèi)核,快速顯示出彩色開機(jī)畫面,實(shí)現(xiàn)逐級(jí)校檢等。文檔編號(hào)G06F9/445GK101751273SQ20081023992公開日2010年6月23日申請(qǐng)日期2008年12月15日優(yōu)先權(quán)日2008年12月15日發(fā)明者潘梁,郭志川,韓銳,高超申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所;北京中科智網(wǎng)傳媒技術(shù)有限公司