專利名稱:一種嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式操作系統(tǒng)的升級(jí)方法,尤其是一種嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,屬于計(jì)算機(jī)技術(shù)領(lǐng)域。
例如,以X86嵌入式系統(tǒng)實(shí)現(xiàn)PC家電化的應(yīng)用中,其實(shí)現(xiàn)的硬件平臺(tái)完全是普通PC的硬件,這樣面臨的一個(gè)問題是,PC硬件的更新非常頻繁,例如聲卡、顯卡。如果每更新一個(gè)硬件,嵌入式系統(tǒng)就重新生成一次,會(huì)浪費(fèi)大量的時(shí)間和成本,所以采用只更新驅(qū)動(dòng)的方式。
本發(fā)明的目的是這樣實(shí)現(xiàn)的一種嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,它至少包括如下步驟在嵌入式系統(tǒng)中保留一升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域,為在硬盤上開設(shè)的一區(qū)域;在該區(qū)域中設(shè)置升級(jí)標(biāo)識(shí);系統(tǒng)每次啟動(dòng)時(shí)自動(dòng)讀取升級(jí)標(biāo)識(shí);如標(biāo)識(shí)為升級(jí)系統(tǒng),在指定位置獲取升級(jí)內(nèi)容,自動(dòng)完成升級(jí)過程;如果標(biāo)識(shí)為不升級(jí),系統(tǒng)維持原狀態(tài)。
指定位置為將升級(jí)內(nèi)容集成在本機(jī)上一存儲(chǔ)區(qū)內(nèi)的位置或?yàn)榱硪粋€(gè)外掛的集成升級(jí)驅(qū)動(dòng)內(nèi)容的位置。
所述的設(shè)置升級(jí)標(biāo)識(shí)步驟還進(jìn)一步包括按照預(yù)定協(xié)議將升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域?qū)懭霐?shù)據(jù)后,進(jìn)行合法性校驗(yàn),并將校驗(yàn)碼存儲(chǔ);校驗(yàn)碼為合法的,則表示系統(tǒng)升級(jí)完成;校驗(yàn)碼為非法的,則表示系統(tǒng)升級(jí)沒有完成;系統(tǒng)每次啟動(dòng)時(shí)自動(dòng)檢測(cè)升級(jí)區(qū)域的校驗(yàn)碼。
另外,升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域記錄一個(gè)或一個(gè)以上需要更新的升級(jí)驅(qū)動(dòng)內(nèi)容類型。
所述的升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域還記錄本次升級(jí)寫入有效數(shù)據(jù)的扇區(qū)數(shù)量,用于升級(jí)程序正確讀取升級(jí)數(shù)據(jù)。
所述的向硬盤寫入升級(jí)信息步驟包括進(jìn)行CRC檢驗(yàn),并記錄其校驗(yàn)碼,對(duì)升級(jí)數(shù)據(jù)的正確性和完整性進(jìn)行確認(rèn)。
根據(jù)上述技術(shù)方案分析可知,本發(fā)明的方法主要是為那種需要經(jīng)常更新硬件的嵌入式系統(tǒng)設(shè)計(jì)的,在通常情況下,嵌入式系統(tǒng)都是針對(duì)一套固定硬件平臺(tái)的軟件系統(tǒng),一旦對(duì)硬件更新,只有重新建立新的系統(tǒng)軟件,對(duì)于用戶來說,系統(tǒng)是不可升級(jí)的。采用這種方案,可以利用特定工具對(duì)已有軟件系統(tǒng)進(jìn)行更新,以幾乎零成本實(shí)現(xiàn)了系統(tǒng)升級(jí),而且極大地延長了系統(tǒng)的生命周期。
圖1為本發(fā)明寫入部分的程序流程圖.
圖2為本發(fā)明自動(dòng)升級(jí)方法流程圖。
圖3為本發(fā)明隱藏分區(qū)的結(jié)構(gòu)示意圖。
圖4為本發(fā)明標(biāo)識(shí)區(qū)的具體結(jié)構(gòu)示意圖。
本發(fā)明為一種嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其中“半開放”的含義是指嵌入式操作系統(tǒng)以簡單協(xié)議來獲取信息,決定是否需要進(jìn)行軟件升級(jí)或更換硬件,也就是說,系統(tǒng)并不是完全封閉的,由此帶來的安全性問題可以采用一些有效的安全機(jī)制進(jìn)行彌補(bǔ)。這種開放實(shí)際上是一種內(nèi)部的開放?;緝?nèi)容為在嵌入式系統(tǒng)中保留了一小塊區(qū)域用于記錄升級(jí)信息。當(dāng)需要進(jìn)行軟件升級(jí)或者更換硬件時(shí),啟動(dòng)工具軟件,按預(yù)定協(xié)議向升級(jí)信息記錄區(qū)寫入必要數(shù)據(jù),這中間需要合法性校驗(yàn)。然后退出并進(jìn)入嵌入式系統(tǒng)。嵌入式系統(tǒng)每次檢測(cè)升級(jí)區(qū)域的校驗(yàn)碼,如果需要升級(jí),就由嵌入式系統(tǒng)自動(dòng)完成所有升級(jí)過程,這里采用的安全機(jī)制是,如果升級(jí)失敗了,將回到未升級(jí)前的狀態(tài)。
為單功能系統(tǒng)保留了一個(gè)“后門”,即系統(tǒng)每次啟動(dòng)時(shí)自動(dòng)到硬盤的指定位置讀取升級(jí)標(biāo)識(shí),這個(gè)過程并不會(huì)給系統(tǒng)帶來什么負(fù)擔(dān)。開啟后門的唯一鑰匙是我們另外開發(fā)的一個(gè)引導(dǎo)程序HPASetup.exe。在硬盤上開辟一隱藏分區(qū),HPASetup.exe可以打開隱藏分區(qū)。隱藏分區(qū)的結(jié)構(gòu)如圖3,其中的標(biāo)識(shí)區(qū)就是所設(shè)定的升級(jí)標(biāo)識(shí)。標(biāo)識(shí)區(qū)的具體結(jié)構(gòu)見圖4,其數(shù)據(jù)結(jié)構(gòu)是這樣的假設(shè)升級(jí)標(biāo)識(shí)區(qū)的LBA尋址方式地址為UDLBA,UDLBA根據(jù)不同的硬盤獲得的值不一樣。從UDLBA開始,第一個(gè)扇區(qū)記錄扇區(qū)的配置信息。該扇區(qū)前8個(gè)字節(jié)為該扇區(qū)的標(biāo)識(shí),第9個(gè)字節(jié)記錄需要更新的硬件驅(qū)動(dòng)的總個(gè)數(shù),如果是一個(gè)大于0的數(shù)N,表示需要更新N個(gè)硬件的驅(qū)動(dòng),例如0升級(jí)包、1顯卡、2聲卡、3鼠標(biāo)、4顯示器。如果是0,表示不進(jìn)行驅(qū)動(dòng)更新(通常情況下該值為0)。第10個(gè)字節(jié)記錄本次升級(jí)共向多少扇區(qū)寫入了有效數(shù)據(jù)。每次向硬盤寫入升級(jí)信息均需要進(jìn)行CRC校驗(yàn),扇區(qū)的最后8個(gè)字節(jié)用來記錄校驗(yàn)碼。該扇區(qū)的其他字節(jié)為保留區(qū)域。
升級(jí)標(biāo)識(shí)區(qū)就是嵌入式系統(tǒng)從外界獲取數(shù)據(jù)的媒介,它存在于隱藏分區(qū)中,不會(huì)被一般的系統(tǒng)和常用磁盤工具識(shí)別。一個(gè)實(shí)際更新驅(qū)動(dòng)的例子系統(tǒng)中原來顯卡的驅(qū)動(dòng)是針對(duì)Sis6323的,現(xiàn)在顯卡換成了TNT2 Model 64。
具體實(shí)施例一原來的系統(tǒng)中已經(jīng)集成了TNT2 Model 64的驅(qū)動(dòng)。用光盤啟動(dòng)PC,自動(dòng)進(jìn)入HPASetup.exe程序,進(jìn)入更換硬件菜單選項(xiàng),選擇更換顯卡驅(qū)動(dòng),選擇TNT2 Model 64,確定,重啟機(jī)器。HPASetup.exe將向從94000000開始的硬盤扇區(qū)寫入了如表1至表2的結(jié)構(gòu)表1
其中UDBLOCK扇區(qū)為第94000000(UDLBA)扇區(qū)。表2
其中從第1個(gè)字節(jié)開始的扇區(qū)為第94000001(UDLBA+1)扇區(qū)。
具體實(shí)施例二系統(tǒng)中并沒有集成過TNT2 Model 64的驅(qū)動(dòng),但是維護(hù)人員手上有新顯卡的rpm包。將rpm包放到光盤上,用光盤啟動(dòng)PC,自動(dòng)進(jìn)入HPASetup.exe程序,進(jìn)入升級(jí)包安裝選項(xiàng),輸入rpm包的絕對(duì)路徑,確定,退出HPASetup.exe并且重起計(jì)算機(jī)。HPASetup.exe將向從94000000開始的硬盤扇區(qū)寫入以下數(shù)據(jù),如表3表3
其中UDBLOCK扇區(qū)為第94000000(UDLBA)扇區(qū)。表4
其中從第1個(gè)字節(jié)開始的扇區(qū)為第94000001(UDLBA+1)扇區(qū)。
嵌入式系統(tǒng)完成的工作檢測(cè)第94000000扇區(qū)開始的第9個(gè)字節(jié),如果N=0,正常啟動(dòng);如果N>0,按照N的大小讀取第94000001扇區(qū)開始的區(qū)域,獲得rpm包的類型為顯卡,地址為/mnt/cdrom/tnt2m64.rpm,其他相關(guān)字節(jié)用于校驗(yàn)合法性。然后記錄開始升級(jí)標(biāo)記(在其他硬盤保留區(qū)域),運(yùn)行rpm包進(jìn)行升級(jí),如果成功完成,修改去掉升級(jí)標(biāo)記并把94000000開始的第9字節(jié)置0。
以上實(shí)施例僅用以說明本發(fā)明而非限制,盡管參照以上較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明進(jìn)行修改、變形或者等同替換,而不脫離本發(fā)明的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于它至少包括如下步驟在嵌入式系統(tǒng)中保留一升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域,在該區(qū)域中設(shè)置升級(jí)標(biāo)識(shí);系統(tǒng)每次啟動(dòng)時(shí)自動(dòng)讀取升級(jí)標(biāo)識(shí);如標(biāo)識(shí)為升級(jí)系統(tǒng),在指定位置獲取升級(jí)內(nèi)容,自動(dòng)完成升級(jí)過程;如果標(biāo)識(shí)為不升級(jí),系統(tǒng)維持原狀態(tài)。
2.根據(jù)權(quán)利要求1所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的指定位置為將升級(jí)內(nèi)容集成在本機(jī)上一存儲(chǔ)區(qū)內(nèi)的位置或?yàn)榱硪粋€(gè)外掛的集成升級(jí)驅(qū)動(dòng)內(nèi)容的位置。
3.根據(jù)權(quán)利要求1所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的存儲(chǔ)區(qū)域?yàn)樵谟脖P上開設(shè)的一區(qū)域。
4.根據(jù)權(quán)利要求3所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的區(qū)域?yàn)殡[藏分區(qū)。
5.根據(jù)權(quán)利要求1或2或3或4所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的設(shè)置升級(jí)標(biāo)識(shí)步驟還進(jìn)一步包括按照預(yù)定協(xié)議將升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域?qū)懭霐?shù)據(jù)后,進(jìn)行合法性校驗(yàn),并將校驗(yàn)碼存儲(chǔ);校驗(yàn)碼為合法的,則表示系統(tǒng)升級(jí)完成;校驗(yàn)碼為非法的,則表示系統(tǒng)升級(jí)沒有完成;系統(tǒng)每次啟動(dòng)時(shí)自動(dòng)檢測(cè)升級(jí)區(qū)域的校驗(yàn)碼。
6.根據(jù)權(quán)利要求1或2或3或4所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域記錄一個(gè)或一個(gè)以上需要更新的升級(jí)驅(qū)動(dòng)內(nèi)容類型。
7.根據(jù)權(quán)利要求1或2或3或4所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域還記錄本次升級(jí)寫入有效數(shù)據(jù)的扇區(qū)數(shù)量,用于升級(jí)程序正確讀取升級(jí)數(shù)據(jù)。
8.根據(jù)權(quán)利要求5或6或7所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的向硬盤寫入升級(jí)信息步驟包括進(jìn)行循環(huán)冗余校驗(yàn)(CRC),并記錄其校驗(yàn)碼,用于對(duì)升級(jí)數(shù)據(jù)的正確性和完整性進(jìn)行確認(rèn)。
9.根據(jù)權(quán)利要求8所述的嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,其特征在于所述的向硬盤寫入升級(jí)信息包括升級(jí)標(biāo)識(shí)或?qū)懮葏^(qū)數(shù)量或裝載升級(jí)內(nèi)容或記錄校驗(yàn)碼或其組合。
全文摘要
一種嵌入式操作系統(tǒng)半開放自動(dòng)升級(jí)的方法,它至少包括如下步驟在嵌入式系統(tǒng)中保留一升級(jí)標(biāo)識(shí)信息存儲(chǔ)區(qū)域,為在硬盤上開設(shè)的一區(qū)域;在該區(qū)域中設(shè)置升級(jí)標(biāo)識(shí);系統(tǒng)每次啟動(dòng)時(shí)自動(dòng)讀取升級(jí)標(biāo)識(shí);如標(biāo)識(shí)為升級(jí)系統(tǒng),在指定位置獲取升級(jí)內(nèi)容,自動(dòng)完成升級(jí)過程;如果標(biāo)識(shí)為不升級(jí),系統(tǒng)維持原狀態(tài)。升級(jí)內(nèi)容為設(shè)置在集成在本機(jī)上一存儲(chǔ)區(qū)內(nèi)的升級(jí)驅(qū)動(dòng)內(nèi)容或?yàn)榱硪粋€(gè)外掛的操作系統(tǒng)引導(dǎo)上的升級(jí)驅(qū)動(dòng)內(nèi)容。本發(fā)明基于一種半開放操作系統(tǒng)架構(gòu),升級(jí)程序能夠自動(dòng)運(yùn)行,完成新硬件驅(qū)動(dòng)的安裝或軟件的升級(jí)。采用本發(fā)明,可以利用特定工具對(duì)已有軟件系統(tǒng)進(jìn)行更新,以幾乎零成本實(shí)現(xiàn)了系統(tǒng)升級(jí),而且極大地延長了系統(tǒng)的生命周期。
文檔編號(hào)G06F9/445GK1466047SQ0212345
公開日2004年1月7日 申請(qǐng)日期2002年6月28日 優(yōu)先權(quán)日2002年6月28日
發(fā)明者趙明, 陳衛(wèi)華, 趙 明 申請(qǐng)人:聯(lián)想(北京)有限公司