專利名稱:交叉式固件升級(jí)方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)一種具有雙拷貝升級(jí)的穩(wěn)定性及單拷貝僅占用較小儲(chǔ)存空間優(yōu)點(diǎn)的固件升級(jí)方法。
(2)背景技術(shù)對(duì)于一個(gè)出廠后仍有可能需要進(jìn)行作軟件更新的間接地址或指令地址(IA)或嵌入式系統(tǒng)產(chǎn)品種類而言,更新過(guò)程中有許多種原因可能會(huì)造成更新過(guò)程的不正常結(jié)束,包括切斷電源、網(wǎng)絡(luò)連線中斷(或無(wú)法連線)、伺服器停止運(yùn)作(或地址設(shè)定不正確)…,這些不正常結(jié)束的情況可能導(dǎo)致產(chǎn)品必須送廠重新燒錄軟件,造成使用者的不方便。為解決前述問(wèn)題,目前已有所謂的可信賴固件升級(jí)方法(Reliable Firmware Upgrade Algorithm),而最常見(jiàn)的是雙拷貝固件升級(jí)方法(Two Copy Firmware Upgrade Algorithm),但這樣的作法必須占用兩倍的軟件程序儲(chǔ)存空間而形成浪費(fèi),其具體問(wèn)題謹(jǐn)詳述如后現(xiàn)在常用的軟件存放方主要有兩種,一是完全不作保護(hù)的單拷貝(one copy)方式,二是具有軟件更新保護(hù)功能的雙拷貝(two copy)方式首先,單拷貝固件升級(jí)方法(One Copy Firmware Upgrade Algorithm)是原始的軟件更新方式,在空間上只保存一份軟件程序,但是完全不考慮軟件更新時(shí)可能發(fā)生的錯(cuò)誤,故只有單一拷貝的軟件程序在更新失敗時(shí)即必須送廠修復(fù),無(wú)法單靠產(chǎn)品本身修復(fù)內(nèi)部軟件的錯(cuò)誤。
雙拷貝固件升級(jí)方法(Two Copy Firmware Upgrade Algorithm)是安全性相對(duì)較高的軟件更新方式(如美國(guó)發(fā)明專利第5878256、6357021號(hào)),主要是在產(chǎn)品內(nèi)部保存兩份軟件程序的拷貝,當(dāng)軟件更新時(shí)會(huì)升級(jí)其中一份,若更新過(guò)程失敗,還能夠利用另一個(gè)拷貝開機(jī),并重新下載新版本軟件。前述方法有多種變形,包括兩份拷貝可以是不同的版本、每次升級(jí)都只更新同一個(gè)位置的拷貝,另一份拷貝則永遠(yuǎn)不更新(如美國(guó)發(fā)明專利第6009500、6253281、6357021、6536038號(hào)等)。前述方式的優(yōu)點(diǎn)在于可保障軟件的可靠性,缺點(diǎn)是兩份軟件程序拷貝造成儲(chǔ)存空間的浪費(fèi),在程序未壓縮的情況下需要極大的儲(chǔ)存空間,而軟件程序固然可以通過(guò)壓縮而減少占用儲(chǔ)存空間,但一旦使用程序壓縮,則將會(huì)影響到開機(jī)速度。
由上述可知,既有固件升級(jí)方法不論是單拷貝或雙拷貝方式都分別存在其缺點(diǎn)前者可靠性低,發(fā)生錯(cuò)誤時(shí)即必須送廠重新燒錄軟件,造成使用不便;后者相對(duì)可靠性高,但須占用大量?jī)?chǔ)存空間;故既有升級(jí)技術(shù)因前述因素而陷入兩難。
然而,當(dāng)省視前述問(wèn)題的根源時(shí),會(huì)發(fā)現(xiàn)所謂可信賴固件升級(jí)方法的問(wèn)題本質(zhì),即是思考如何在升級(jí)的任何階段被中斷都有回復(fù)狀的能力;其反映出之所以必須存放兩份拷貝的目的,即是為了維持重新開機(jī)及重新啟動(dòng)軟件更新流程的能力,換言之,其意味著整份程序碼中需要保護(hù)的只有開機(jī)及下載協(xié)定的部分,因此只需要將此部分獨(dú)立出來(lái)作特殊處理,便可同時(shí)兼顧穩(wěn)定性、可靠性,并解決儲(chǔ)存空間浪費(fèi)的問(wèn)題。
(3)發(fā)明內(nèi)容因此,本發(fā)明主要目的是在節(jié)省空間與提升穩(wěn)定性的考慮下,提供一個(gè)具有雙拷貝升級(jí)的穩(wěn)定性及單拷貝較小儲(chǔ)存空間優(yōu)點(diǎn)的固件升級(jí)方法。
為達(dá)到前述目的采取的主要技術(shù)手段是先定義一軟件由一啟動(dòng)裝載器、一啟動(dòng)數(shù)據(jù)及一應(yīng)用數(shù)據(jù)組成,其中啟動(dòng)數(shù)據(jù)僅包含重新開機(jī)及啟動(dòng)軟件更新流程的啟動(dòng)碼與相關(guān)協(xié)定,且程序碼占用空間小于應(yīng)用數(shù)據(jù);前述軟件進(jìn)行升級(jí)時(shí),是先清空應(yīng)用數(shù)據(jù)以空出一第一儲(chǔ)存空間,又下載一新版啟動(dòng)數(shù)據(jù)存放于第一儲(chǔ)存空間,隨后移除舊版的啟動(dòng)數(shù)據(jù)并空出一第二儲(chǔ)存空間,最后下載新版應(yīng)用數(shù)據(jù)存放在第二儲(chǔ)存空間,以完成更新升級(jí);而該軟件啟動(dòng)時(shí),則由啟動(dòng)裝載器判斷并選擇執(zhí)行啟動(dòng)數(shù)據(jù),隨后由啟動(dòng)數(shù)據(jù)載入應(yīng)用數(shù)據(jù)并執(zhí)行;在前述的升級(jí)方法中,因是交替的下載/清除新舊版的啟動(dòng)數(shù)據(jù)與應(yīng)用數(shù)據(jù),當(dāng)更新過(guò)程中的任何時(shí)間出現(xiàn)中斷時(shí),仍都有一份完整的啟動(dòng)數(shù)據(jù)可供開機(jī)與啟動(dòng)更新流程功能之用,有效確保了更新過(guò)程的穩(wěn)定度與可靠性;另外,前述方法亦同時(shí)配合儲(chǔ)存空間的交換,故只需使用單拷貝的儲(chǔ)存空間;由上述可知,本發(fā)明不僅確保了軟件升級(jí)時(shí)的可信賴度,更排除了雙拷貝更新方法造成儲(chǔ)存空間浪費(fèi)的問(wèn)題。
(4)
圖1是本發(fā)明的軟件組成示意圖。
圖2A~E是本發(fā)明更新軟件時(shí)的一儲(chǔ)存空間交換狀況示意圖。
圖3A~E是本發(fā)明更新軟件時(shí)又一儲(chǔ)存空間交換狀況示意圖。
圖4是本發(fā)明的軟件啟動(dòng)流程圖。
圖5是本發(fā)明的軟件升級(jí)流程圖。
(5)具體實(shí)施方式
首先如圖1所示,本發(fā)明是先一定義軟件由下列的三個(gè)部份組成其分別為一啟動(dòng)裝載器(boot loader)10、一啟動(dòng)數(shù)據(jù)(boot image)20及一應(yīng)用數(shù)據(jù)(application image)30;其中該啟動(dòng)裝載器10是一個(gè)啟動(dòng)時(shí)執(zhí)行的程序,具有簡(jiǎn)單的判斷機(jī)制,藉以選擇特定地址上的啟動(dòng)數(shù)據(jù)20復(fù)制至存儲(chǔ)器(RAM)中并予執(zhí)行,而啟動(dòng)裝載器10在出廠后即永遠(yuǎn)不被更新;該啟動(dòng)數(shù)據(jù)20是包含有啟動(dòng)碼(boot code)及微控制碼(Micro-Controller Code);其中,該微控制碼可以是完整的硬件驅(qū)動(dòng)程序及硬件支援應(yīng)用程序接口(API),或只是包含開機(jī)及網(wǎng)絡(luò)相關(guān)必須的硬件支援、網(wǎng)絡(luò)基本協(xié)定(TCP/IP、DHCP等)以及下載協(xié)定(FTP、TFTP等)。該啟動(dòng)數(shù)據(jù)20并負(fù)責(zé)對(duì)硬件進(jìn)行初始化后,將應(yīng)用數(shù)據(jù)30從特定地址復(fù)制到存儲(chǔ)器中繼續(xù)執(zhí)行;該應(yīng)用數(shù)據(jù)30包含剩余的微控制碼(Micro-Controller Code)、完整的網(wǎng)絡(luò)功能協(xié)定、狀態(tài)機(jī)(state machine)等。
根據(jù)軟件分割的作法區(qū)分,該啟動(dòng)數(shù)據(jù)20與應(yīng)用數(shù)據(jù)30的分割可以利用下列兩種方式
第一種方式是讓啟動(dòng)數(shù)據(jù)20與應(yīng)用數(shù)據(jù)30二者分別有一份實(shí)時(shí)操作系統(tǒng)(RTOS),在此狀況下,表示啟動(dòng)數(shù)據(jù)20與應(yīng)用數(shù)據(jù)30各自為完整可執(zhí)行的數(shù)據(jù)(image),該啟動(dòng)數(shù)據(jù)20在本身執(zhí)行完成后,將應(yīng)用數(shù)據(jù)30載入到存儲(chǔ)器中以取代啟動(dòng)數(shù)據(jù)20繼續(xù)執(zhí)行。
本發(fā)明采用的第二種方式則只保留一份RTOS在啟動(dòng)數(shù)據(jù)20中;亦即將具有重新開機(jī)及啟動(dòng)軟件更新流程功能的部份規(guī)劃到啟動(dòng)數(shù)據(jù)20,其余部份規(guī)劃到應(yīng)用數(shù)據(jù)30;由于啟動(dòng)數(shù)據(jù)20只具備基本的開機(jī)與啟動(dòng)更新流程功能、基本網(wǎng)絡(luò)協(xié)定,而不含狀態(tài)機(jī)與大部份的協(xié)定層(protocol stack),故其程序碼所儲(chǔ)存的空間將小于應(yīng)用數(shù)據(jù)30,藉此可利用更新過(guò)程中通過(guò)清除應(yīng)用數(shù)據(jù)30所釋放出來(lái)的儲(chǔ)存空間,存放由伺服器下載的數(shù)據(jù)(image)。
又請(qǐng)參閱圖2所示,是本發(fā)明更新軟件時(shí)的儲(chǔ)存空間交換示意圖,首先如圖2A所示,是儲(chǔ)存空間的原始狀態(tài),其中啟動(dòng)裝載器10的區(qū)塊位置永遠(yuǎn)不變,啟動(dòng)數(shù)據(jù)20與應(yīng)用數(shù)據(jù)30的區(qū)塊起始點(diǎn)分別為b1、a1。在進(jìn)行軟件更新時(shí),是先將應(yīng)用數(shù)據(jù)30清空,以空出一第一儲(chǔ)存空間31(如圖2B所示),接著下載新版的啟動(dòng)數(shù)據(jù)20’,并存放在清空應(yīng)用數(shù)據(jù)30后所釋放出來(lái)的第一儲(chǔ)存空間31中(區(qū)塊起始點(diǎn)更新為b2)(如圖2C所示),再將舊版的啟動(dòng)數(shù)據(jù)20移除以空出儲(chǔ)存空間,加上儲(chǔ)存新版啟動(dòng)數(shù)據(jù)20’后所剩下的儲(chǔ)存空間構(gòu)成一第二儲(chǔ)存空間21(如圖2D所示),接著下載新版的應(yīng)用數(shù)據(jù)30’,并將下載的新版應(yīng)用數(shù)據(jù)30’存放前述的第二儲(chǔ)存空間21內(nèi)(區(qū)塊起始點(diǎn)更新為a2)(如圖2E所示);因此,當(dāng)軟件下載結(jié)束,啟動(dòng)數(shù)據(jù)20和應(yīng)用數(shù)據(jù)30的起始點(diǎn)將移位到新的位置b2,a2,而下次開機(jī)時(shí)啟動(dòng)裝載器10即從新的位置復(fù)制啟動(dòng)數(shù)據(jù)20到存儲(chǔ)器。
而前述軟件如再經(jīng)過(guò)另一次更新后,該啟動(dòng)數(shù)據(jù)20和應(yīng)用數(shù)據(jù)30將會(huì)回到原始的位置b1,a1(如圖3A~E所示)。
由上述說(shuō)明可以明顯看出本發(fā)明的兩項(xiàng)特點(diǎn)1.只使用單拷貝的儲(chǔ)存空間由前述可以明顯看出,本發(fā)明在更新軟件的過(guò)程中,是交叉的使用一既有容量的儲(chǔ)存空間,換言之,只使用單拷貝的儲(chǔ)存空間,即可穩(wěn)定的完成軟件更新。
2.具有雙拷貝軟件升級(jí)方法的穩(wěn)定度與可靠性其最重要的突破在于允許出現(xiàn)在更新過(guò)程中任何階段的錯(cuò)誤,主要原因是不論更新過(guò)程在那一個(gè)階段中斷失敗,軟件中均仍保留了一個(gè)完整的啟動(dòng)數(shù)據(jù),可供作為重新開機(jī)及啟動(dòng)軟件更新流程用,故即使軟件更新失敗,亦可在重新開機(jī)后重新執(zhí)行軟件更新。
本發(fā)明啟動(dòng)軟件的詳細(xì)流程是如圖4所示,啟動(dòng)時(shí),該啟動(dòng)裝載器10程序?qū)⑾缺粓?zhí)行,并選擇由那一個(gè)區(qū)塊將啟動(dòng)碼(boot code)復(fù)制到存儲(chǔ)器,其選擇方式是檢查存放的系統(tǒng)變數(shù)BootVar(該變數(shù)可儲(chǔ)存在NVRAM或Flash中),主要作用在記錄開機(jī)時(shí)應(yīng)啟動(dòng)那一個(gè)啟動(dòng)數(shù)據(jù)20區(qū)塊,當(dāng)其值為1代表第一個(gè)區(qū)塊b1,其值為2代表第二區(qū)塊b2,若為其他數(shù)值則仍使用第一個(gè)區(qū)塊b1;在決定啟動(dòng)數(shù)據(jù)20的起始位置后,啟動(dòng)裝載器10會(huì)判斷啟動(dòng)數(shù)據(jù)20的總值檢查(check sum)是否正確(301),如不正確,啟動(dòng)裝載器10將檢查另一個(gè)啟動(dòng)數(shù)據(jù)20是否存在(303)(如果更新曾失敗,且發(fā)生在下載新版啟動(dòng)數(shù)據(jù)之后,則軟件中即可能存在二份啟動(dòng)數(shù)據(jù)),如果存在,則判斷其總值檢查(check sum)是否正確(303),如正確時(shí),啟動(dòng)裝載器10將改成執(zhí)行第二份啟動(dòng)數(shù)據(jù)20,并將系統(tǒng)變數(shù)(BootVar)設(shè)定為由該份啟動(dòng)數(shù)據(jù)20開機(jī)(304);當(dāng)啟動(dòng)碼執(zhí)行完畢后,將根據(jù)系統(tǒng)變數(shù)(BootVar)決定應(yīng)用數(shù)據(jù)30所在的區(qū)塊(305)并判斷其總值檢查(check sum)(306);若該應(yīng)用數(shù)據(jù)30區(qū)域不存在或總值檢查不正確,該啟動(dòng)碼則將執(zhí)行軟件更新程序(307),重新下載一份啟動(dòng)數(shù)據(jù)20與應(yīng)用數(shù)據(jù)30。
反之,若該應(yīng)用數(shù)據(jù)30區(qū)塊存在且通過(guò)總值檢查(check sum),則啟動(dòng)碼會(huì)將應(yīng)用數(shù)據(jù)30復(fù)制到存儲(chǔ)器中并予以執(zhí)行(308)。
如果前述的第二份啟動(dòng)數(shù)據(jù)20不存在,即表示啟動(dòng)數(shù)據(jù)20不是在更新過(guò)程中損壞,因而無(wú)法自動(dòng)復(fù)原,故此時(shí)可另以硬件(例如指示燈)顯示錯(cuò)誤信息(309),以通知使用者將產(chǎn)品送廠修復(fù)。
至于本發(fā)明更新軟件時(shí)的詳細(xì)流程是如圖5所示;造成軟件更新的原因包括當(dāng)應(yīng)用數(shù)據(jù)30不存在或不完整時(shí),及版本過(guò)舊時(shí)(由使用者或伺服器端促使執(zhí)行下載新版本軟件的動(dòng)作)皆會(huì)啟動(dòng)軟件更新的流程。
當(dāng)軟件進(jìn)行更新時(shí),首先會(huì)檢查系統(tǒng)變數(shù)(BootVar)(400),若為1是表示需釋放的應(yīng)用數(shù)據(jù)30儲(chǔ)存空間起始點(diǎn)在a1位置(401),若為2是表示需釋放的應(yīng)用數(shù)據(jù)30儲(chǔ)存空間起始點(diǎn)在a2位置(402),接著程序會(huì)清除快閃存儲(chǔ)器(Flash)中屬于應(yīng)用數(shù)據(jù)30部份的區(qū)塊(block),隨后將下載新版本的啟動(dòng)數(shù)據(jù)20存放在釋放出來(lái)的儲(chǔ)存空間(404,404),亦即系統(tǒng)變數(shù)為1,即存放在b2的位置,若系統(tǒng)變數(shù)為2則存放在b1的位置;經(jīng)下載完畢后,程序會(huì)判斷啟動(dòng)數(shù)據(jù)20的總值檢查(checksum)(405,406),若通過(guò)檢查,即將系統(tǒng)變數(shù)(BootVar)設(shè)在新版的啟動(dòng)數(shù)據(jù)20位置,并將原本的啟動(dòng)數(shù)據(jù)20移除,若未能通過(guò)檢查,則須重新下載啟動(dòng)數(shù)據(jù)20;接著從伺服器下載新版的應(yīng)用數(shù)據(jù)30,并儲(chǔ)存在剩下的空間(407,408),且進(jìn)行總值檢查(checksum)(409,410),若未能通過(guò)檢查則重新下載應(yīng)用數(shù)據(jù)30(407,408),若通過(guò)檢查則表示軟件更新完成,即改變系統(tǒng)變數(shù)(411,412),并重新開機(jī)(413)以啟動(dòng)新版本的軟件。
由上述可知,本發(fā)明主要作用在于軟件更新過(guò)程的任何階段皆至少有一份啟動(dòng)數(shù)據(jù)是完整且可被執(zhí)行的,所以,在軟件更新過(guò)程的任何時(shí)候如發(fā)生中斷更新的情形,例如拔掉電源或網(wǎng)絡(luò)線等,皆可利用該啟動(dòng)數(shù)據(jù)開機(jī)并重新下載軟件。且前述方法只約使用了單一拷貝的儲(chǔ)存空間,同時(shí)解決了雙拷貝固件升級(jí)方法浪費(fèi)大量?jī)?chǔ)存空間的缺點(diǎn),故本發(fā)明兼具雙拷貝/單拷貝固件升級(jí)方法的優(yōu)點(diǎn),并同時(shí)克服二者的缺陷。
權(quán)利要求
1.一種交叉式固件升級(jí)方法,是先定義一軟件是由一啟動(dòng)裝載器、一啟動(dòng)數(shù)據(jù)及一應(yīng)用數(shù)據(jù)組成,其中該啟動(dòng)數(shù)據(jù)僅包含重新開機(jī)及啟動(dòng)軟件更新流程的啟動(dòng)碼與相關(guān)協(xié)定,且其程序碼占用空間小于應(yīng)用數(shù)據(jù);前述軟件進(jìn)行升級(jí)時(shí),是先清空該應(yīng)用數(shù)據(jù)以空出一第一儲(chǔ)存空間,又下載一新版啟動(dòng)數(shù)據(jù)存放于該第一儲(chǔ)存空間,隨后移除舊版的該啟動(dòng)數(shù)據(jù)以空出一第二儲(chǔ)存空間,最后下載新版應(yīng)用數(shù)據(jù)存放在該第二儲(chǔ)存空間,以完成更新升級(jí)。
2.如權(quán)利要求1所述的交叉式固件升級(jí)方法,其特征在于,該啟動(dòng)裝載器是啟動(dòng)時(shí)執(zhí)行的程序,具簡(jiǎn)單的判斷機(jī)制,以選擇特定地址上的啟動(dòng)數(shù)據(jù)復(fù)制至存儲(chǔ)器中并予執(zhí)行。
3.如權(quán)利要求1或2所述的交叉式固件升級(jí)方法,其特征在于,該啟動(dòng)裝載器的內(nèi)容永不更新。
4.如權(quán)利要求1所述的交叉式固件升級(jí)方法,其特征在于,該啟動(dòng)數(shù)據(jù)包含有一啟動(dòng)碼及一微控制碼,并負(fù)責(zé)對(duì)硬件進(jìn)行初始化之后,將應(yīng)用數(shù)據(jù)從特定地址復(fù)制到存儲(chǔ)器中繼續(xù)執(zhí)行。
5.如權(quán)利要求4所述的交叉式固件升級(jí)方法,其特征在于,該微控制碼只包含開機(jī)及網(wǎng)路相關(guān)必需的硬件支援、網(wǎng)絡(luò)基本協(xié)定TCP/IP、DHCP等以及下載協(xié)定FTP、TFTP等。
6.如權(quán)利要求5所述的交叉式固件升級(jí)方法,其特征在于,該應(yīng)用數(shù)據(jù)包括除啟動(dòng)數(shù)據(jù)中以外的微控制碼、完整的網(wǎng)絡(luò)功能協(xié)定、狀態(tài)機(jī)等。
7.一種軟件數(shù)據(jù)結(jié)構(gòu),是由一啟動(dòng)裝載器、一啟動(dòng)數(shù)據(jù)及一應(yīng)用數(shù)據(jù)組成,其中該啟動(dòng)數(shù)據(jù)僅包含重新開機(jī)及啟動(dòng)軟件更新流程的啟動(dòng)碼與相關(guān)協(xié)定,且其程序碼占用空間小于該應(yīng)用數(shù)據(jù)。
8.如權(quán)利要求7所述的軟件數(shù)據(jù)結(jié)構(gòu),其特征在于,該啟動(dòng)裝載器是啟動(dòng)時(shí)執(zhí)行的程序,具有簡(jiǎn)單的判斷機(jī)制,以選擇特定地址上的啟動(dòng)數(shù)據(jù)復(fù)制至存儲(chǔ)器中并予執(zhí)行。
9.如權(quán)利要求8或9所述的軟件數(shù)據(jù)結(jié)構(gòu),其特征在于,該啟動(dòng)裝載器的內(nèi)容永不更新。
10.如權(quán)利要求9所述的軟件數(shù)據(jù)結(jié)構(gòu),其特征在于,該啟動(dòng)數(shù)據(jù)包含有一啟動(dòng)碼及一微控制碼,并負(fù)責(zé)對(duì)硬件進(jìn)行初始化之后,將該應(yīng)用數(shù)據(jù)從特定地址復(fù)制到存儲(chǔ)器中繼續(xù)執(zhí)行。
11.如權(quán)利要求10所述的軟件數(shù)據(jù)結(jié)構(gòu),其特征在于,該微控制碼只包含開機(jī)及網(wǎng)絡(luò)相關(guān)必需的硬件支援、網(wǎng)絡(luò)基本協(xié)定TCP/IP、DHCP等以及下載協(xié)定FTP、TFTP等。
12.如權(quán)利要求11所述的軟件數(shù)據(jù)結(jié)構(gòu),其特征在于,該應(yīng)用數(shù)據(jù)包括除啟動(dòng)數(shù)據(jù)中以外的微控制碼、完整的網(wǎng)絡(luò)功能協(xié)定、狀態(tài)機(jī)等。
13.一種儲(chǔ)存媒體,具有如權(quán)利要求1所述的交叉式固件升級(jí)方法,該方法是先定義一軟件是由一啟動(dòng)裝載器、一啟動(dòng)數(shù)據(jù)及一應(yīng)用數(shù)據(jù)組成,其中該啟動(dòng)數(shù)據(jù)僅包含重新開機(jī)及該啟動(dòng)軟件更新流程的啟動(dòng)碼與相關(guān)協(xié)定,且其程序碼占用空間小于應(yīng)用數(shù)據(jù);所述軟件進(jìn)行升級(jí)時(shí),是先清空應(yīng)用數(shù)據(jù)以空出一第一儲(chǔ)存空間,又下載一新版啟動(dòng)數(shù)據(jù)存放于該第一儲(chǔ)存空間,隨后移除舊版的啟動(dòng)數(shù)據(jù)以空出一第二儲(chǔ)存空間,最后下載新版應(yīng)用數(shù)據(jù)存放在該第二儲(chǔ)存空間,以完成更新升級(jí)。
14.如權(quán)利要求13所述的儲(chǔ)存媒體,其特征在于,該啟動(dòng)裝載器是啟動(dòng)時(shí)執(zhí)行的程序,具有簡(jiǎn)單的判斷機(jī)制,以選擇特定地址上的啟動(dòng)數(shù)據(jù)復(fù)制至存儲(chǔ)器中并予執(zhí)行。
15.如權(quán)利要求13或14所述的儲(chǔ)存媒體,其特征在于,該啟動(dòng)裝載器的內(nèi)容永不更新。
16.如權(quán)利要求13所述的儲(chǔ)存媒體,其特征在于,該啟動(dòng)數(shù)據(jù)包含有一啟動(dòng)碼及一微控制碼,并負(fù)責(zé)對(duì)硬件進(jìn)行初始化之后,將應(yīng)用數(shù)據(jù)從特定地址復(fù)制到存儲(chǔ)器中繼續(xù)執(zhí)行。
17.如權(quán)利要求16所述的儲(chǔ)存媒體,其特征在于,該微控制碼只包含開機(jī)及網(wǎng)絡(luò)相關(guān)必需的硬件支援、網(wǎng)絡(luò)基本協(xié)定TCP/IP、DHCP等以及下載協(xié)定FTP、TFTP等。
18.如權(quán)利要求17所述的儲(chǔ)存媒體,其特征在于,該應(yīng)用數(shù)據(jù)包括除啟動(dòng)數(shù)據(jù)中以外的微控制碼、完整的網(wǎng)絡(luò)功能協(xié)定、狀態(tài)機(jī)等。
全文摘要
本發(fā)明是關(guān)于一種交叉式固件升級(jí)方法,是先定義一軟件由一啟動(dòng)裝載器、一啟動(dòng)數(shù)據(jù)及一應(yīng)用數(shù)據(jù)組成,其中啟動(dòng)數(shù)據(jù)是包含重新開機(jī)及啟動(dòng)軟件更新流程的啟動(dòng)碼與相關(guān)協(xié)定,并令其程序碼占用空間小于應(yīng)用數(shù)據(jù);當(dāng)軟件啟動(dòng)時(shí),由啟動(dòng)裝載器判斷并選擇執(zhí)行啟動(dòng)數(shù)據(jù),隨后由啟動(dòng)數(shù)據(jù)載入應(yīng)用數(shù)據(jù)并執(zhí)行;俟進(jìn)行升級(jí)時(shí),是先清空應(yīng)用數(shù)據(jù)以空出一第一儲(chǔ)存空間,又下載一新版啟動(dòng)數(shù)據(jù)存放于第一儲(chǔ)存空間,隨后移除舊版的啟動(dòng)數(shù)據(jù)并空出一第二儲(chǔ)存空間,最后下載新版應(yīng)用數(shù)據(jù)存放在第二儲(chǔ)存空間,以完成更新升級(jí);利用前述交叉交換儲(chǔ)存空間的軟件更新技術(shù),可兼顧更新過(guò)程的穩(wěn)定性及儲(chǔ)存空間的減少。
文檔編號(hào)G06F9/445GK1567199SQ0314945
公開日2005年1月19日 申請(qǐng)日期2003年6月16日 優(yōu)先權(quán)日2003年6月16日
發(fā)明者林書毅, 李元兵, 李光耀 申請(qǐng)人:緯創(chuàng)資通股份有限公司