亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種防止cpu自鎖的安全啟動(dòng)方法

文檔序號(hào):6365730閱讀:414來源:國(guó)知局
專利名稱:一種防止cpu自鎖的安全啟動(dòng)方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種防止CPU自鎖的安全啟動(dòng)方法。
背景技術(shù)
根據(jù)IEEE (電氣和電子工程師協(xié)會(huì))的定義,嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”(devices used to control, monitor, or assist theoperation of equipment, machinery or plants)。嵌入式系統(tǒng)實(shí)際上是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。目前國(guó)內(nèi)一個(gè)普遍被認(rèn)同的定義是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。 嵌入式系統(tǒng)中的軟件通常被固化,而被稱為固件(Firmware)。固件擔(dān)任著一個(gè)系統(tǒng)最基礎(chǔ)最底層工作的軟件。而在硬件設(shè)備中,固件就是硬件設(shè)備的靈魂,因?yàn)橐恍┯布O(shè)備除了固件以外沒有其它軟件組成,因此固件也就決定著硬件設(shè)備的功能及性能。早期的固件指的是寫入EROM或EPROM中的程序,對(duì)終端用戶是不可見的,終端用戶無法或者很難改變固件,當(dāng)然,一般情況下也沒有必要對(duì)固件進(jìn)行操作。不過隨著集成電路技術(shù)的發(fā)展,升級(jí)固件也變得越來越簡(jiǎn)單,越來越?jīng)]有危險(xiǎn),固件程序與我們通常所說的程序的區(qū)別已經(jīng)越來越小。基于以上描述,會(huì)有這樣的啟動(dòng)方式,在嵌入式開發(fā)過程中,嵌入式系統(tǒng)的啟動(dòng)大致分為兩個(gè)階段先是引導(dǎo)程序的加載,然后才是固件程序啟動(dòng)。一般,為了提高固件升級(jí)安全可靠,固件被封成兩個(gè)部分被分開存放,其中,用于控制器啟動(dòng)的固件,即引導(dǎo)程序固化存儲(chǔ)在芯片ROM中,用戶不可見,一般不做修改;另一部分固件程序則存儲(chǔ)在比較廉價(jià)的外部擴(kuò)展存儲(chǔ)系統(tǒng)中,比如閃存存儲(chǔ)器(NAND Flash)。上面提到的啟動(dòng)方式普遍應(yīng)用在嵌入式系統(tǒng)的出廠生產(chǎn)中,以及在線升級(jí)當(dāng)中。雖然固件升級(jí)(又叫固件刷新,刷寫,重寫,燒錄或者刷機(jī))的風(fēng)險(xiǎn)越來越小,但仍然有一定的風(fēng)險(xiǎn)型。例如,如果對(duì)嵌入式系統(tǒng)固件版本下載錯(cuò)誤或者固件本身讀取過程中出錯(cuò),都可能將導(dǎo)致嵌入式系統(tǒng)無法啟動(dòng)甚至無法重新進(jìn)行下載固件而導(dǎo)致報(bào)廢的情況發(fā)生。因此,固件的正確性與否或者待加載的固件損壞與否是固件在線升級(jí)或者出廠生產(chǎn)中需要保證的重要條件之一。顯見的是,除非專業(yè)人員,固件的正確性識(shí)別將是非常困難的,固件是否損壞更無法判斷。同時(shí),這種升級(jí)通常只保留一份固件,若升級(jí)失敗,只能將Flash返廠修復(fù)。

發(fā)明內(nèi)容
因此,本發(fā)明的目的在于通過對(duì)固件的正確性識(shí)別和損壞與否的判斷,有效地防止CPU自鎖的安全啟動(dòng)方法。為了實(shí)現(xiàn)上述目的,所采用的技術(shù)方案為
一種防止CPU自鎖的安全啟動(dòng)方法,在嵌入式系統(tǒng)中,存在片上系統(tǒng)和作為該片上系統(tǒng)的外部存儲(chǔ)擴(kuò)展的閃存,其中片上系統(tǒng)含有CPU模塊及集成在片上的功能模塊,在所述閃存中開辟一存儲(chǔ)空間,存放多份固件鏡像;
系統(tǒng)初始化,在所述存儲(chǔ)空間查找一份固件加載到片上系統(tǒng),若查到,則判斷所查到固件的正確性和完整性,并在同時(shí)滿足正確性條件和完整性條件時(shí),運(yùn)行該固件;反之,則在所述存儲(chǔ)空間查找下一份固件;
若在所述存儲(chǔ)空間查找不到固件或者查找不到正確且完整的固件,轉(zhuǎn)入固件加載失敗流程。 依據(jù)上述防止CPU自鎖的安全啟動(dòng)方法,通過線性驗(yàn)證固件的完整性與正確性,在滿足這些條件后再加載該固件,從而避開了固件與嵌入式系統(tǒng)硬件平臺(tái)不對(duì)應(yīng)或者固件本身損壞時(shí)可能造成的C PU死鎖。同時(shí)在閃存開辟的存儲(chǔ)空間中存放多份固件鏡像,可以保持固件的使用壽命,當(dāng)一份固件不能滿足加載條件時(shí),可以查找下一份固件鏡像,系統(tǒng)啟動(dòng)失敗的概率被降低。由于固件不需要頻繁更新,也就是相應(yīng)的存儲(chǔ)空間不會(huì)頻繁的擦寫,該存儲(chǔ)空間的使用壽命通常要高于閃存的其他區(qū)域。當(dāng)所有固件都不能被加載時(shí),因其本身沒有進(jìn)入加載程序,使得系統(tǒng)能夠正常退出,還可以通過對(duì)閃存上的固件進(jìn)行更新,也避免了固件下載錯(cuò)誤或者失敗可能導(dǎo)致啟動(dòng)自鎖。上述防止CPU自鎖的安全啟動(dòng)方法,固件含有固件信息描述頭和固件程序,其中固件信息描述頭含有描述頭標(biāo)志、對(duì)應(yīng)固件支持的功能模塊識(shí)別碼,從而判斷所查到固件正確性與否的步驟為
檢查讀取的數(shù)據(jù)中含有描述頭標(biāo)志,則說明此數(shù)據(jù)為固件描述頭,否則掃描下一個(gè)閃存單元;
讀取該固件支持的功能模塊識(shí)別碼,并與片上系統(tǒng)中的功能模塊識(shí)別碼做一致性比較,若一致,則表示當(dāng)前固件是正確的固件,否則查找下一份固件或在所述存儲(chǔ)空間被遍歷的條件下等待固件更新。上述防止CPU自鎖的安全啟動(dòng)方法,完整性驗(yàn)證包括對(duì)固件描述頭的完整性驗(yàn)證和對(duì)固件程序完整性的驗(yàn)證,且完整性驗(yàn)證是在相應(yīng)對(duì)象的正確性驗(yàn)證之后進(jìn)行。上述防止CPU自鎖的安全啟動(dòng)方法,所述完整性驗(yàn)證采用C R C校驗(yàn)進(jìn)行驗(yàn)證。上述防止CPU自鎖的安全啟動(dòng)方法,所述存儲(chǔ)空間以塊為單位存放固件,并在一個(gè)塊中先存放固件信息描述頭,然后是固件程序,進(jìn)而依序生成預(yù)定個(gè)數(shù)個(gè)備份。上述防止CPU自鎖的安全啟動(dòng)方法,用于系統(tǒng)初始化的引導(dǎo)程序存放在片上的R
OM中,片上R A M用于加載查找到的固件。上述防止CPU自鎖的安全啟動(dòng)方法,所述固件加載失敗流程為啟動(dòng)結(jié)束,然后進(jìn)入等待固件更新步驟。


圖I為依據(jù)本發(fā)明的防止CPU自鎖的安全啟動(dòng)方法流程圖(結(jié)合硬件結(jié)構(gòu)和固件結(jié)構(gòu))。
具體實(shí)施方式
參照說明書附圖1,為了更清楚地表達(dá),圖I所示的流程圖被嵌入式系統(tǒng)的硬件結(jié)構(gòu)和固件結(jié)構(gòu)所描述,并使用虛線箭頭引入固件信息描述頭中存放的參量作為判斷依據(jù)。界定一個(gè)方法,當(dāng)下載的固件和嵌入式系統(tǒng)硬件平臺(tái)不對(duì)應(yīng)時(shí),仍能重新下載新的固件而不會(huì)導(dǎo)致相應(yīng)的硬件設(shè)備報(bào)廢的情況;當(dāng)由于存儲(chǔ)設(shè)備(NAND Flash,與非閃存,閃爍存儲(chǔ)器的一種)部分損壞而導(dǎo)致所存放的固件損壞時(shí),仍能重新進(jìn)行在線更新。從而,能夠有效地防止CPU運(yùn)行不對(duì)應(yīng)固件或者已損壞的固件導(dǎo)致系統(tǒng)啟動(dòng)時(shí)自鎖的情況發(fā)生。因此,能夠?qū)碳M(jìn)行安全有效地加載來完成啟動(dòng)過程,保證嵌入式系統(tǒng)的正常運(yùn)行。依據(jù)前述的內(nèi)容可知,參見說明書附圖I,上述界定的方法所應(yīng)用的硬件架構(gòu)是典型的嵌入式系統(tǒng)結(jié)構(gòu),一個(gè)片上系統(tǒng)(S ο C,System on Chip)芯片,載有A R M(Advanced RISC Machines)核,通過片上總線或者相應(yīng)通信接口連接有功能模塊,以實(shí)現(xiàn)嵌入式系統(tǒng)(專用芯片)的專有功能,并連接有R O M (Read-Only Memory,只讀存儲(chǔ)器)、RA M (Random Access Memory,隨機(jī)存儲(chǔ)器)和N A N D (與非,即與非閃存)控制器,用于連 接外部存儲(chǔ)器,以擴(kuò)展內(nèi)部存儲(chǔ)器。圖中連接的是與非閃存(NAND flash),且圖中在與非閃存中開辟了一個(gè)存儲(chǔ)空間(塊O到塊M),用于存放嵌入式系統(tǒng)的的固件。而ROM存放引導(dǎo)代碼,或者說引導(dǎo)程序,用于嵌入式系統(tǒng)的初始化,并加載固件。圖I中,在與非閃存開辟的存儲(chǔ)空間存放有多份固件鏡像,所占用空間也不會(huì)太大,由于與非閃存有一定的使用壽命,主要是可擦寫次數(shù)有限制,在當(dāng)前與非閃存存儲(chǔ)容量比較大的條件下,多份固件鏡像所消耗的資源非常有限,但卻能夠大大提高系統(tǒng)運(yùn)行的安全性。整體上,可以顯著提干固件存放的壽命。圖中固件架構(gòu),多份固件并沒有連續(xù)存放,這樣能夠相對(duì)的提高系統(tǒng)啟動(dòng)的成功率。圖I中帶有剖面線的塊表示存放有固件的塊。圖中上面表示的固件結(jié)構(gòu),首先是固件信息描述頭,然后是跟隨其后的固件程序,被連續(xù)存放。為了滿足安全啟動(dòng)的需要,固件信息描述頭提供驗(yàn)證固件正確性與完整性的信息。固件是針對(duì)專用的嵌入式系統(tǒng)編譯生成對(duì)應(yīng)的,當(dāng)然,嵌入式系統(tǒng)是專用芯片,固件識(shí)別通常與功能模塊生產(chǎn)廠商緊密關(guān)聯(lián)。我們知道,SoC是將微處理器、模擬IP核、數(shù)字IP核和存儲(chǔ)器(或片外存儲(chǔ)器接口)集成到單一芯片上形成的系統(tǒng),也叫系統(tǒng)級(jí)芯片,是一個(gè)專用目標(biāo)集成電路。SoC的典型結(jié)構(gòu)通常由至少一個(gè)作為主控制器或者主邏輯運(yùn)算單元的高性能CPU/DSP和若干通過片內(nèi)總線連接的功能IP組成,其中CPU/DSP被稱為主設(shè)備或者主器件,功能IP被稱為從設(shè)備或者從器件。其中的IP,即Intellectual Property,知識(shí)產(chǎn)權(quán)模塊,也就是前面所說的功能模塊,為直接集成的某些生產(chǎn)廠商提供的模塊,減少重復(fù)研發(fā)投資,可以大大降低SoC的研發(fā)周期和成本。那么固件就是針對(duì)特定的硬件平臺(tái)編譯生成具有特定功能的代碼,也具有專用性,同時(shí)也具有可識(shí)別性。那么進(jìn)一步的要求是,確保硬件平臺(tái)內(nèi)部具有標(biāo)識(shí)意義的芯片ID,并保持固件支持的芯片ID和實(shí)際的硬件芯片ID相一致。這樣,就能確保固件和硬件平臺(tái)是--對(duì)應(yīng)的。對(duì)固件做CRC校驗(yàn),并把校驗(yàn)結(jié)果保存,與固件信息描述頭中存放的校驗(yàn)值進(jìn)行比較就可以判斷相應(yīng)的完整性。
固件由固件信息描述頭和固件程序兩部分組成。其中固件信息描述頭中主要應(yīng)該由固件開始標(biāo)志str、描述頭本身的CRC校驗(yàn)值、固件支持的硬件芯片ID、固件本身的CRC校驗(yàn)值組成,并且還可以存放其他的一些配置信息,以進(jìn)行所需要的配置。固件則是為支持該硬件平臺(tái)特定功能的代碼組成,為已知結(jié)構(gòu),在此不再贅述。在嵌入式系統(tǒng)生產(chǎn)或者升級(jí)時(shí),通過匹配的協(xié)議,上位機(jī)把固件信息描述頭和固 件程序作為一個(gè)整體下載至閃存好塊中,并做多份備份。當(dāng)系統(tǒng)啟動(dòng)時(shí),先使用ROM中的啟動(dòng)程序,即引導(dǎo)程序完成系統(tǒng)的初級(jí)初始化,因固件是底層程序,整個(gè)初始化,或者說啟動(dòng)需要固件的加載,因此,更準(zhǔn)確的表述為這里引導(dǎo)程序用于初始的初始化。然后加載存儲(chǔ)在閃存中的一份固件到RAM,并依次檢測(cè)該固件是不是帶有預(yù)定的開始標(biāo)志、固件描述頭中CRC校驗(yàn)值和對(duì)固件描述頭新做的CRC校驗(yàn)得出的校驗(yàn)值是否一致、固件支持的硬件平臺(tái)和本硬件平臺(tái)是否一致以及固件描述頭中包含的固件本身CRC校驗(yàn)和對(duì)固件新做的CRC校驗(yàn)得出的CRC校驗(yàn)值是否一致四大步驟。若全部滿足,則經(jīng)過上述檢查后,固件啟動(dòng)完成。如果某一步驟不滿足要求,都會(huì)導(dǎo)致啟動(dòng)程序重新查找下一份備份固件。當(dāng)查找不到合適固件時(shí),該嵌入式系統(tǒng)會(huì)進(jìn)入啟動(dòng)失敗的后續(xù)處理程序,如等待連接重新下載固件的狀態(tài)。其中,判斷查找結(jié)束的條件之一為查找的存儲(chǔ)空間是否超出了預(yù)定的存儲(chǔ)空間范圍,如把多份固件存儲(chǔ)在Flash塊號(hào)0-100當(dāng)中;當(dāng)超出這個(gè)范圍后就意味著沒有找到固件。一個(gè)較佳實(shí)施方式表示在說明書附圖I中,并作說明如下
當(dāng)系統(tǒng)上電啟動(dòng)時(shí),首先ROM中弓丨導(dǎo)啟動(dòng)程序完成系統(tǒng)初始化,接著從Flash加載一份固件到RAM過程中,并做如下處理
(I)檢查讀取的數(shù)據(jù)是否包含固件信息描述頭標(biāo)志sir。如果包含說明此數(shù)據(jù)塊載有描述頭數(shù)據(jù),然后繼續(xù)下面步驟(2),否則重新掃描預(yù)定的存儲(chǔ)空間中的下一個(gè)flash塊。這里需要注意,如果相關(guān)的固件被認(rèn)定為不完整,可以標(biāo)記該固件失效,下次再加載固件時(shí),不再對(duì)該該固件進(jìn)行調(diào)用,以節(jié)省資源。(2)檢查固件信息描述頭是否完整,通過對(duì)固件描述信息頭做CRC校驗(yàn)得和信息頭中存放的CRC校驗(yàn)67做比較。如果一致,說明固件信息描述頭有效,然后繼續(xù)步驟(3),否則重新掃描下一個(gè)flash塊。(3)檢查固件版本支持的硬件平臺(tái)和當(dāng)前使用的硬件平臺(tái)是否一致,通過對(duì)固件描述信息頭中包含的支持的芯片7 和當(dāng)前硬件平臺(tái)中的芯片做比較。如果一致,說明本固件版本支持當(dāng)前硬件平臺(tái),然后繼續(xù)步驟(4),否則重新掃描下一個(gè)flash塊。(4)檢查固件程序是否完整正確,通過對(duì)固件程序做CRC校驗(yàn)得D2和信息頭中包含的CRC校驗(yàn)C2做比較。如果一致,說明固件程序有效,并繼續(xù)后續(xù)啟動(dòng)操作,否則重新掃描下 Iv flash塊。(5)在完成(1),(2),(3),(4)步驟后,準(zhǔn)確的說是滿足所需要的固件正確性和完整性后,引導(dǎo)程序把控制權(quán)交付給相關(guān)固件,開始跳轉(zhuǎn)至固件執(zhí)行,完成了整個(gè)安全的啟動(dòng)過程。如果對(duì)整個(gè)存儲(chǔ)空間的查找超過了規(guī)定的固件存儲(chǔ)Flash塊范圍后,仍沒找到合適的固件時(shí),則進(jìn)入固件加載失敗處理流程,等待固件更新。依據(jù)上述方法,有益效果能夠更清楚地為本領(lǐng)域的技術(shù)人員所理解,當(dāng)嵌入式系統(tǒng)生產(chǎn)或者以后在線升級(jí)時(shí),如果下載的固件版本有誤,由于不會(huì)把錯(cuò)誤的固件進(jìn)行刷機(jī),不會(huì)導(dǎo)致系統(tǒng)死鎖,從而可以重新下載新的固件,這樣就不會(huì)導(dǎo)致嵌入式系統(tǒng)報(bào)廢的情況發(fā)生。
在下載固件時(shí),會(huì)對(duì)固件進(jìn)行多次備份存儲(chǔ),顯著提高加載固件成功的概率;而且,當(dāng)嵌入式系統(tǒng)啟動(dòng)中發(fā)生固件損壞的情況時(shí),對(duì)該系統(tǒng)仍可進(jìn)行新的升級(jí),或者說提高了升級(jí)的成功的概率。從而,可以有效地防止CPU加載固件導(dǎo)致自鎖的情況發(fā)生。而傳統(tǒng)的方法,在嵌入式系統(tǒng)生產(chǎn)或者以后在線升級(jí)時(shí),如果下載的固件版本有誤或者啟動(dòng)時(shí)讀取固件出錯(cuò),有可能導(dǎo)致系統(tǒng)運(yùn)行報(bào)廢,而且不能重新被更新固件,而導(dǎo)致CPU的自鎖。
權(quán)利要求
1.一種防止CPU自鎖的安全啟動(dòng)方法,在嵌入式系統(tǒng)中,存在片上系統(tǒng)和作為該片上系統(tǒng)的外部存儲(chǔ)擴(kuò)展的閃存,其中片上系統(tǒng)含有CPU模塊及集成在片上的功能模塊,其特征在于,在所述閃存中開辟一存儲(chǔ)空間,存放多份固件鏡像;系統(tǒng)初始化,在所述存儲(chǔ)空間查找一份固件加載到片上系統(tǒng),若查到,則判斷所查到固件的正確性和完整性,并在同時(shí)滿足正確性條件和完整性條件時(shí),運(yùn)行該固件;反之,則在所述存儲(chǔ)空間查找下一份固件;若在所述存儲(chǔ)空間查找不到固件或者查找不到正確且完整的固件,轉(zhuǎn)入固件加載失敗流程。
2.根據(jù)權(quán)利要求I所述的防止CPU自鎖的安全啟動(dòng)方法,其特征在于,固件含有固件信息描述頭和固件程序,其中固件信息描述頭含有描述頭標(biāo)志、對(duì)應(yīng)固件支持的功能模塊識(shí)別碼,從而判斷所查到固件正確性與否的步驟為檢查讀取的數(shù)據(jù)中含有描述頭標(biāo)志,則說明此數(shù)據(jù)為固件描述頭,否則掃描下一個(gè)閃存單元;讀取該固件支持的功能模塊識(shí)別碼,并與片上系統(tǒng)中的功能模塊識(shí)別碼做一致性比較,若一致,則表示當(dāng)前固件是正確的固件,否則查找下一份固件或在所述存儲(chǔ)空間被遍歷的條件下等待固件更新。
3.根據(jù)權(quán)利要求2所述的防止CPU自鎖的安全啟動(dòng)方法,其特征在于,完整性驗(yàn)證包括對(duì)固件描述頭的完整性驗(yàn)證和對(duì)固件程序完整性的驗(yàn)證,且完整性驗(yàn)證是在相應(yīng)對(duì)象的正確性驗(yàn)證之后進(jìn)行。
4.根據(jù)權(quán)利要求3所述的防止CPU自鎖的安全啟動(dòng)方法,其特征在于,所述完整性驗(yàn)證采用C R C校驗(yàn)進(jìn)行驗(yàn)證。
5.根據(jù)權(quán)利要求I所述的防止CPU自鎖的安全啟動(dòng)方法,其特征在于,所述存儲(chǔ)空間以塊為單位存放固件,并在一個(gè)塊中先存放固件信息描述頭,然后是固件程序,進(jìn)而依序生成預(yù)定個(gè)數(shù)個(gè)備份。
6.根據(jù)權(quán)利要求I所述的防止CPU自鎖的安全啟動(dòng)方法,其特征在于,用于系統(tǒng)初始化的引導(dǎo)程序存放在片上的R O M中,片上R A M用于加載查找到的固件。
7.根據(jù)權(quán)利要求I所述的防止CPU自鎖的安全啟動(dòng)方法,其特征在于,所述固件加載失敗流程為啟動(dòng)結(jié)束,然后進(jìn)入等待固件更新步驟。
全文摘要
本發(fā)明公開了一種防止CPU自鎖的安全啟動(dòng)方法,在嵌入式系統(tǒng)中,在所述閃存中開辟一存儲(chǔ)空間,存放多份固件鏡像;系統(tǒng)初始化,在所述存儲(chǔ)空間查找一份固件加載到片上系統(tǒng),若查到,則判斷所查到固件的正確性和完整性,并在同時(shí)滿足正確性條件和完整性條件時(shí),運(yùn)行該固件;反之,則在所述存儲(chǔ)空間查找下一份固件;若在所述存儲(chǔ)空間查找不到固件或者查找不到正確且完整的固件,轉(zhuǎn)入固件加載失敗流程。依據(jù)本發(fā)明的防止CPU自鎖的安全啟動(dòng)方法通過對(duì)固件的正確性識(shí)別和損壞與否的判斷,有效地防止CPU自鎖。
文檔編號(hào)G06F11/10GK102622249SQ201210054189
公開日2012年8月1日 申請(qǐng)日期2012年3月5日 優(yōu)先權(quán)日2012年3月5日
發(fā)明者盧方勇, 張洪柳, 李峰, 趙陽 申請(qǐng)人:山東華芯半導(dǎo)體有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1