專利名稱:能夠空中下載的移動(dòng)終端的程序升級(jí)系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及系統(tǒng)升級(jí)方法,更具體地,涉及使用空中下載(Over-The-Air, OTA)編程機(jī)制來(lái)更新移動(dòng)終端的程序的裝置和方法。
背景技術(shù):
電子設(shè)備(諸如移動(dòng)電話機(jī)和個(gè)人數(shù)字助理(PDA))包含由電子設(shè)備的制 造商、電信運(yùn)營(yíng)商或第三方提供的固件和應(yīng)用軟件。這樣的固件和應(yīng)用軟件 可能包含軟件缺陷且經(jīng)常需要升級(jí)。為了修復(fù)和升級(jí)這些固件和應(yīng)用軟件, 用戶訪問(wèn)由制造商或運(yùn)營(yíng)商運(yùn)行的消費(fèi)者維護(hù)中心。對(duì)于能夠OTA的設(shè)備 來(lái)說(shuō),此固件或軟件升級(jí)可以通過(guò)OTA機(jī)制來(lái)執(zhí)行,在該OTA機(jī)制中,固 件或軟件升級(jí)被無(wú)線分發(fā)到設(shè)備。
發(fā)明內(nèi)容
技術(shù)問(wèn)題
為了使用OTA,電子設(shè)備并入用于下載升級(jí)包的下載模塊和用于利用所 下載的升級(jí)包執(zhí)行目標(biāo)固件或軟件的升級(jí)的升級(jí)處理模塊。但是,大多數(shù)能 夠OTA的傳統(tǒng)設(shè)備在OTA操作穩(wěn)定性方面受限。
技術(shù)方案
做出本發(fā)明以致力于解決上述問(wèn)題,并且本發(fā)明提供一種能夠OTA的 設(shè)備的程序升級(jí)裝置和方法,其通過(guò)合并程序的參考版本和空中接收到的升 級(jí)包來(lái)更新程序。
本發(fā)明提供一種能夠OTA的便攜設(shè)備的程序升級(jí)裝置和方法,其以如 下次序來(lái)更新便攜設(shè)備的固件將空中接收到的升級(jí)包存儲(chǔ)在第 一存儲(chǔ)器 內(nèi),通過(guò)將該升級(jí)包與該程序的參考版本組合來(lái)升級(jí)程序,以及將升級(jí)后的 程序加載到第二存儲(chǔ)器中以操作該便攜設(shè)備。
通過(guò)下面結(jié)合附圖的詳細(xì)描述,本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)
將變得更加明顯,其中
圖1是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)系統(tǒng)的圖2是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)系統(tǒng)的升級(jí)包處理
器的配置的框圖3是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)系統(tǒng)的升級(jí)
包處理器的配置的框圖4到9是示出在圖2和3的升級(jí)包處理器中產(chǎn)生升級(jí)包的過(guò)程的圖; 圖IO是示出由圖2的升級(jí)包處理器產(chǎn)生的升級(jí)包的數(shù)據(jù)格式的圖; 圖11是示出由圖3的升級(jí)包處理器產(chǎn)生的升級(jí)包的數(shù)據(jù)格式的圖; 圖12是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)系統(tǒng)的接收設(shè)備的
配置的框圖13是示出圖12的接收設(shè)備的第一存儲(chǔ)器的配置的框圖; 圖14是示出圖13的第一存儲(chǔ)器的第二存儲(chǔ)區(qū)域的結(jié)構(gòu)的圖; 圖15是示出存儲(chǔ)在圖14的第二存儲(chǔ)區(qū)域中的每個(gè)升級(jí)包的歷史數(shù)據(jù)的 數(shù)據(jù)^^式的圖16是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)系統(tǒng)的升級(jí)操作的
框圖17是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)系統(tǒng)的升級(jí) 操作的框圖18和19是示出4艮據(jù)本發(fā)明的另 一個(gè)示范性實(shí)施例的程序升級(jí)系統(tǒng)的 升級(jí)操作的框圖20是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)系統(tǒng)的接收設(shè)備的 升級(jí)操作的框圖21是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)方法的流程圖22是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)系統(tǒng)的接收設(shè)備的 程序升級(jí)方法的流程圖23是示出圖22的程序升級(jí)方法的升級(jí)包安裝進(jìn)程的流程圖24是圖22的程序升級(jí)方法的版本升級(jí)進(jìn)程;
圖25到31是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)方法的
8流程圖;以及
圖32是示出才艮據(jù)本發(fā)明的示范性實(shí)施例的移動(dòng)終端的配置的框圖。
具體實(shí)施例方式
根據(jù)本發(fā)明的 一方面,通過(guò)一種利用程序工作的移動(dòng)終端的程序升級(jí)裝 置來(lái)實(shí)現(xiàn)上述和其它目的。該程序升級(jí)裝置包括第一存儲(chǔ)器,用于存儲(chǔ)程 序的參考版本和至少一個(gè)升級(jí)包;第二存儲(chǔ)器,用于加載程序的升級(jí)版本; 通信單元,用于使得移動(dòng)終端能夠與外部系統(tǒng)通信;以及控制單元,用于響 應(yīng)于來(lái)自外部系統(tǒng)的升級(jí)通知消息來(lái)控制通信單元下載升級(jí)包,將升級(jí)包安 裝在第一存儲(chǔ)器內(nèi),響應(yīng)于安裝命令通過(guò)合并該升級(jí)包和參考版本來(lái)產(chǎn)生程 序的升級(jí)版本,以及利用程序的升級(jí)后的版本操作該移動(dòng)終端。根據(jù)本發(fā)明 的另一方面,通過(guò)一種利用程序工作的移動(dòng)終端的程序升級(jí)方法來(lái)實(shí)現(xiàn)上述 和其它目的。該程序升級(jí)方法包括>^人外部系統(tǒng)下載程序的升級(jí)版本;將升 級(jí)包安裝在第一存儲(chǔ)器內(nèi);響應(yīng)于升級(jí)請(qǐng)求加載該參考版本和升級(jí)包;通過(guò) 合并該參考版本和升級(jí)包來(lái)產(chǎn)生升級(jí)版本;將升級(jí)版本加載到第二存儲(chǔ)器 中;以及利用升級(jí)版本操作該移動(dòng)終端。
根據(jù)本發(fā)明的另一方面,通過(guò)一種利用程序工作的移動(dòng)終端的程序升級(jí) 裝置來(lái)實(shí)現(xiàn)上述和其它目的。該程序升級(jí)裝置包括第一存儲(chǔ)器,具有用于 存儲(chǔ)程序的參考版本的第一區(qū)域和用于存儲(chǔ)至少一個(gè)升級(jí)包的至少一個(gè)第 二區(qū)域;第二存儲(chǔ)器,用于存儲(chǔ)程序的升級(jí)后的版本;下載器,用于從外部 系統(tǒng)下載升級(jí)包;安裝器,用于將由下載器下載的升級(jí)包安裝在第一存儲(chǔ)器 的第二區(qū)域內(nèi);以及翻譯器,用于從第一存儲(chǔ)器加載升級(jí)包和參考版本,通
過(guò)合并升級(jí)包和參考版本來(lái)產(chǎn)生升級(jí)后的版本,以及將升級(jí)后的版本存儲(chǔ)在 第二存儲(chǔ)器中。
下面將參考附圖詳細(xì)描述本發(fā)明的示范性實(shí)施例。附圖中,相同的參考 數(shù)字始終用于指代相同的或相似的部件??梢月匀ズ喜⒂诖说腲^知的功能和 結(jié)構(gòu)的詳細(xì)描述,以避免混淆本發(fā)明的主題。
在下述實(shí)施例中,升級(jí)是使用用于改正缺陷和提高可用性或性能的升級(jí) 包來(lái)修改系統(tǒng)的固件或軟件的源代碼的過(guò)程。升級(jí)包是根據(jù)目標(biāo)程序的舊版 本和新版本之間的差別生成的數(shù)據(jù)集合,以便將升級(jí)包與舊版本合并,從而 將程序升級(jí)為新版本。升級(jí)包包括升級(jí)數(shù)據(jù)和/或安裝數(shù)據(jù)。安裝數(shù)據(jù)包括歷史數(shù)據(jù)和映射數(shù)據(jù)。升級(jí)數(shù)據(jù)是在升級(jí)過(guò)程中替換舊版本的特定數(shù)據(jù)的數(shù) 據(jù)。安裝數(shù)據(jù)是用于將程序的舊版本升級(jí)為新版本的一組信息。安裝數(shù)據(jù)包 括用于通知升級(jí)包與要被升級(jí)的舊版本之間的關(guān)系的歷史數(shù)據(jù)和用于將代 表新版本的塊映射到舊版本的映射數(shù)據(jù)。映射數(shù)據(jù)由宏塊地址和為處理該宏 塊要執(zhí)行的命令組成。該命令包括用于"復(fù)制"的C、用于"移動(dòng)"的S和
用于"修改,,的M,以及宏塊地址可以由程序的參考版本的塊索引來(lái)表示。
接收設(shè)備由該第一版本的軟件在制造階段安裝,并且在發(fā)生升級(jí)事件時(shí)可以 下載并存儲(chǔ)至少一個(gè)升級(jí)包。
第一存儲(chǔ)器是用于存儲(chǔ)程序的第一和第二版本的升級(jí)包的存儲(chǔ)器。第二 存儲(chǔ)器是用于加載通過(guò)將第一版本和由第二版本表示的升級(jí)包合并而升級(jí) 的程序的存儲(chǔ)器。第一和第二存儲(chǔ)器優(yōu)選地被實(shí)現(xiàn)為在單個(gè)存儲(chǔ)器單元中的 第 一和第二存儲(chǔ)器區(qū)域,并且也可以被實(shí)現(xiàn)為物理上分開的兩個(gè)存儲(chǔ)器模 塊。在以下實(shí)施例中,第一和第二存儲(chǔ)器是作為單獨(dú)的存儲(chǔ)器模塊被描述的。 第一存儲(chǔ)器是作為非易失性存儲(chǔ)器的快閃存儲(chǔ)器,第二存儲(chǔ)器是作為易失性
存儲(chǔ)器的同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)。第一存儲(chǔ)器存儲(chǔ)程序的第一版 本和作為程序的第二版本的至少一個(gè)升級(jí)包。該升級(jí)包包括用于識(shí)別程序的
版本的歷史數(shù)據(jù)(包括映射數(shù)據(jù))和升級(jí)數(shù)據(jù)。如果由系統(tǒng)初始化或用戶命令 使得發(fā)生升級(jí)事件,則系統(tǒng)加載通過(guò)將第一版本和升級(jí)包合并而升級(jí)的程序 的第二版本到第二存儲(chǔ)器中,以使得系統(tǒng)利用該程序的第二版本來(lái)工作。升
級(jí)包包括安裝數(shù)據(jù)和升級(jí)數(shù)據(jù)。安裝數(shù)據(jù)可以包括歷史數(shù)據(jù)和/或映射數(shù)據(jù)。 程序的第 一版本可以是程序的初始版本,程序的第二版本包括基于程序的第 一和第二版本之間的差別生成的升級(jí)數(shù)據(jù)以及用于安裝升級(jí)數(shù)據(jù)的安裝數(shù) 據(jù)。加載到第二存儲(chǔ)器中的程序可以是通過(guò)將程序的第 一版本和程序的第二 版本的升級(jí)包組合而創(chuàng)建的程序。
該程序升級(jí)系統(tǒng)優(yōu)選地被分為用于產(chǎn)生并發(fā)送升級(jí)包的發(fā)送系統(tǒng)和用 于接收該升級(jí)包并且利用該升級(jí)包升級(jí)目標(biāo)程序的至少一個(gè)接收設(shè)備。在以 下實(shí)施例中,接收設(shè)備由移動(dòng)終端代表。移動(dòng)終端是諸如移動(dòng)電話機(jī)、數(shù)字 照相機(jī)、膝上型計(jì)算機(jī)和便攜多媒體播放器(PMP)之類的具有多媒體功能的 設(shè)備。
參照?qǐng)D1,程序升級(jí)系統(tǒng)包括升級(jí)包處理器10、升級(jí)包服務(wù)器20、通知 服務(wù)器25和接收設(shè)備30。如果引入程序的新版本(第二版本),則升級(jí)包處理器10由程序的舊版本 (第一版本)和新版本(第二版本)這兩個(gè)版本生成升級(jí)包,然后將該升級(jí)包發(fā)
送到升級(jí)包服務(wù)器20。這里,升級(jí)包處理器IO通過(guò)利用無(wú)線通信標(biāo)準(zhǔn)或有 線通信標(biāo)準(zhǔn)建立的無(wú)線信道來(lái)與升級(jí)包服務(wù)器20進(jìn)行通信,無(wú)線通信標(biāo)準(zhǔn) 例如碼分多址(CDMA)、通用移動(dòng)電信系統(tǒng)(UMTS)、無(wú)線寬帶(WiBro)、無(wú) 線保真度(Wi-Fi)、全球協(xié)同微波接入(WiMAX)、藍(lán)牙紫蜂(Zigbee),有線通 信標(biāo)準(zhǔn)例如通用串行總線(USB)和通用異步收發(fā)機(jī)(UART)。如果從升級(jí)包處 理器10接收到升級(jí)包,則升級(jí)包服務(wù)器20向通知服務(wù)器25通知升級(jí)包的 發(fā)布。通知服務(wù)器25將通知消息廣播到多個(gè)接收設(shè)備30,以使得接收設(shè)備 30下載升級(jí)包。此外,升級(jí)包服務(wù)器20和接收設(shè)備30通過(guò)利用諸如CDMA、 UMTS、 WiBro、 Wi-Fi、 WiMAX、藍(lán)牙和紫蜂之類的無(wú)線通信標(biāo)準(zhǔn)或者諸 如USB和UART之類的有線通信標(biāo)準(zhǔn)建立的無(wú)線信道彼此進(jìn)行通信。
如果成功下載升級(jí)包,則接收設(shè)備30將第二版本的升級(jí)包存儲(chǔ)在存儲(chǔ) 器單元內(nèi)。接收設(shè)備30包括第一和第二存儲(chǔ)器。第一和第二存儲(chǔ)器優(yōu)選地 被實(shí)施為單個(gè)模塊或兩個(gè)分開的模塊。第一存儲(chǔ)器存儲(chǔ)從升級(jí)包服務(wù)器20 下載的用于將程序升級(jí)為相應(yīng)的版本的升級(jí)包,第二存儲(chǔ)器存儲(chǔ)通過(guò)使用升 級(jí)包升級(jí)程序的第一版本而生成的第二版本。接收設(shè)備30將從升級(jí)包服務(wù) 器20下載的升級(jí)包存儲(chǔ)在第一存儲(chǔ)器內(nèi)作為程序的第二版本。如果請(qǐng)求升 級(jí),則接收設(shè)備30通過(guò)將第一版本和升級(jí)包合并來(lái)生成第二版本,并且將 第二版本加載到第二存儲(chǔ)器內(nèi)用于利用第二版本進(jìn)行工作。
下面將描述升級(jí)包處理器10的操作。在以下描述中,升級(jí)包處理器IO 壓縮程序的第一版本和第二版本,通過(guò)比較分析生成升級(jí)數(shù)據(jù)和映射數(shù)據(jù), 并且通過(guò)將升級(jí)凄t據(jù)和包括映射數(shù)據(jù)的安裝數(shù)據(jù)打包來(lái)生成升級(jí)包。例如在 圖3中,升級(jí)包處理器IO壓縮程序的第一和第二版本,通過(guò)比較分析生成 升級(jí)數(shù)據(jù)和不具有任何映射數(shù)據(jù)的安裝數(shù)據(jù),并且通過(guò)將升級(jí)數(shù)據(jù)和安裝數(shù) 據(jù)打包來(lái)生成升級(jí)包。
參照?qǐng)D2到11,第一版本生成器50生成程序的第一版本,第二版本生 成器55生成程序的第二版本。第一版本是安裝在接收設(shè)備30中的初始版本 或者以后指定的參考版本。第一版本安裝在接收設(shè)備的第一存儲(chǔ)器中。第二 版本是第一版本的升級(jí)版本并且可以從升級(jí)包服務(wù)器20中下載到。第一壓 縮器160分開第一和第二版本的數(shù)據(jù),并以宏塊為單位壓縮分開的數(shù)據(jù)。通過(guò)將數(shù)據(jù)壓縮到宏塊中,可以以塊為單位比較第一和第二版本。比較器110 比較第一和第二版本的塊,并且確定每一對(duì)的兩個(gè)塊是否彼此相同。如果這 兩個(gè)塊彼此不相同,則比較器110在第一版本的搜索范圍內(nèi)搜索與第二版本
的相應(yīng)塊相同的塊。接著,比較器110向安裝數(shù)據(jù)生成器180發(fā)送關(guān)于比較 結(jié)果的信息和第一版本的相應(yīng)塊的塊索引。
也就是說(shuō),比較器110比較第二版本的塊與第一版本的塊,并且如果這 兩個(gè)塊彼此相同,則將比較結(jié)果與塊索引一起發(fā)送到安裝數(shù)據(jù)生成器180。 另一方面,如果這兩個(gè)塊彼此不相同,則比較器IIO在第一版本的搜索范圍 內(nèi)搜索與第二版本的當(dāng)前塊相同的塊。如果在搜索范圍內(nèi)搜索到相同的塊, 則比較器110將比較結(jié)果和與第一版本的相等塊一起發(fā)送到安裝數(shù)據(jù)生成器 180。也就是說(shuō),比較器110將當(dāng)前塊與搜索范圍內(nèi)的遞減或遞增方向上的 塊進(jìn)行比較。如果在搜索范圍內(nèi)沒(méi)有搜索到相同的塊,則比較器110將搜索 結(jié)果與第二版本的塊索引一起發(fā)送到安裝數(shù)據(jù)生成器180。
安裝數(shù)據(jù)生成器180優(yōu)選地具有歷史數(shù)據(jù)生成器120和映射數(shù)據(jù)生成器 150,如圖2所示,或者可以僅具有歷史數(shù)據(jù)生成器120,如圖3所示。歷史 數(shù)據(jù)生成器120具有第二版本的版本號(hào)。也就是說(shuō),如果第二版本的版本號(hào) 是5,則這意味著第一版本被升級(jí)到版本號(hào)為5的第二版本。映射數(shù)據(jù)生成 器150分析比較器110的輸出,并且生成由指令和塊索引組成的映射數(shù)據(jù)。
參照?qǐng)D4到8,升級(jí)包包括圖2的升級(jí)包處理器中的升級(jí)數(shù)據(jù)、歷史數(shù) 據(jù)和映射數(shù)據(jù),或者由圖3的升級(jí)包處理器中的升級(jí)數(shù)據(jù)和歷史數(shù)據(jù)組成。 當(dāng)使用程序的第 一版本產(chǎn)生第二版本時(shí),可以在程序的第 一版本中提高間隙 區(qū)域,以便減少升級(jí)過(guò)程中的移動(dòng)操作的數(shù)量。
下面將參照?qǐng)D4到8描述用于生成包含映射數(shù)據(jù)的升級(jí)包的操作。首先, 升級(jí)包處理器10以宏塊為單位(MB)比較程序的第一版本(V1)和第二版本 (V2),確定塊的屬性(復(fù)制為C,修改為M,移動(dòng)為S),根據(jù)塊的屬性生成 升級(jí)包。在升級(jí)包具有映射數(shù)據(jù)的情況下,生成的映射數(shù)據(jù)具有命令串格式, 其由復(fù)制C、修改M(以插入或替換相同尺寸)和移動(dòng)S組成,具有下列格式 [start block No, number of block] [flag] [distance] [difference]
其中Cmd表示C、 M或S命令,"start block No"表示由命令影響的起 始?jí)K的塊索引,"number of block"表示由命令影響的塊的數(shù)量。"flag"具有 值0、 l或2。當(dāng)Cmd為"C"(僅僅復(fù)制)或S(僅僅移動(dòng))時(shí)flag值被設(shè)置為0,當(dāng)塊可以由具有Cmd M的V獲得時(shí)flag值被設(shè)置為1,當(dāng)塊不能從V1 獲得但是在具有Cmd M的△包中時(shí)flag值被設(shè)置為2。 "distance"表示指示 V2的塊在VI中的位置的塊索引。"difference"表示VI和V2的塊之間的差。
在此實(shí)施例中,如果VI和V2的塊彼此不同,則生成修改的塊。如果 才企測(cè)到修改的塊,則升級(jí)包處理器10在VI的搜索范圍內(nèi)搜索V2的修改的 塊。在圖4到6的示例中,在遞減和遞增兩個(gè)方向上搜索到15個(gè)^"改塊。 如果在搜索范圍內(nèi)找到相同的塊,則升級(jí)包處理器IO生成具有塊索引的升 級(jí)包而不是生成更新數(shù)據(jù)。
圖4示出了當(dāng)在VI的搜索范圍內(nèi)搜索到V2的修改塊時(shí)如何生成映射 數(shù)據(jù)。參照?qǐng)D4,升級(jí)包處理器10以宏塊為單位比較V1和V2。如果在V1 的搜索范圍內(nèi)搜索到V2的修改塊,則升級(jí)包處理器10生成包括與V2的修 改塊相同的VI的塊的索引的映射數(shù)據(jù),而不是生成具有修改塊本身的升級(jí) 數(shù)據(jù)。
也就是說(shuō),升級(jí)包處理器10在VI的搜索范圍內(nèi)搜索到與V2的修改塊 相同的塊,并且在映射數(shù)據(jù)中包含搜索到的塊的索引。
表1
C:0,15,F:0, null, null
M:16'4 F:l, (16-12), (17-13), (18-8), (19-9), O,O,O,O S:20,5 F:O, (20-4), 0
或者
C:0,15,F:0,null、nu11
M:16,4, F:l, (16-12),(17-13),(18-8), (19-9), 0,0,0,0 S:20,5,F:0, (20-16), 0
在表1中,映射數(shù)據(jù)指示V2的第0到第15塊與VI的那些相同,V2 的第16到第19塊與VI的第12、 13、 8和9塊相同,V2的第20到24塊與 VI的第16到20塊相同。也就是說(shuō),當(dāng)在VI的搜索范圍內(nèi)找到V2的修改 塊,則升級(jí)包處理器IO生成映射數(shù)據(jù),以將V2的修改塊映射到在VI的搜索范圍內(nèi)找到的塊。在這種情況下,生成的升級(jí)包具有歷史數(shù)據(jù)和表l所示 的映射數(shù)據(jù)。
圖5示出了當(dāng)沒(méi)有搜索到V2的修改塊但是在VI的搜索范圍內(nèi)存在相 似的塊時(shí)如何生成映射數(shù)據(jù)。如圖5所示,V2的第16到19塊被修改,VI 的原來(lái)的第16到19塊被右移變?yōu)閂2的第20到24塊。在表1中,"S:20,5 F:O, (20-4), 0"指示在從第20塊的4個(gè)塊之前(20-4=16),包括第20塊的V2 的5個(gè)塊(第20到24塊)與第 一版本的5個(gè)塊(第16到20塊)相同。"S:20,5 F:O, (20-4), 0"指示V2的第20塊與VI的第16塊相等,V2的第20到24塊與 VI的第16到20塊相同。以"S:20,5 F:O, (20-4), 0"的形式指示移位后的塊。
參照?qǐng)D5,升級(jí)包處理器IO識(shí)別出V2的第16塊與VI的搜索范圍內(nèi)的 第12塊相同,但是與V2的第17塊相同的塊在搜索范圍內(nèi)并不存在,與V2 的第18塊相同的塊不存在,但是V2的第19塊與搜索范圍內(nèi)的第6塊相同。 在這種情況下,升級(jí)包處理器100確定第16和17塊是否與作為修改塊的 VI的第12和13塊相似,以及第18和19塊是否與作為修改塊的第6和7 塊相似。因而,升級(jí)包處理器IO使用如圖3B中所示的VI和V2、利用表2 所示的映射lt據(jù)來(lái)生成升級(jí)包。
表2
C:0,15,F:0, null, null
M:16,4 F:l, (16-12), (17-13), (18-6), (19-7), 0, code (B,K),code (B,C), 0 S:20,5F:0, (20-4), 0
在表2中,映射數(shù)據(jù)指示V2的第0到15塊與VI的那些相同,V2的 第20到24塊與VI的第16到20塊相同。此外,映射數(shù)據(jù)指示V2的第16 和19塊與第12和17塊相等,V2的第17塊由與Vl的第13塊的差來(lái)熵編 碼(code(B, K)), V2的第18塊由與VI的第8塊的差來(lái)熵編碼(code(B, K))。 在如圖5所示的在VI的搜索范圍內(nèi)未找到與V2的修改塊相同的塊的情況 下,升級(jí)包處理器10通過(guò)將V2的修改塊映射到VI的相應(yīng)塊并且基于VI 和V2的塊的差執(zhí)行熵編碼,來(lái)生成映射數(shù)據(jù)。
圖6示出了當(dāng)在V1的搜索范圍內(nèi)未搜索到V2的修改塊時(shí)如何生成映 射數(shù)據(jù)。
14升級(jí)包處理器10以塊為單元比較VI和V2,檢查V2的塊的屬性(C、 M或S),并基于塊的屬性生成升級(jí)數(shù)據(jù)。修改塊的數(shù)據(jù)被打包到升級(jí)包中作 為升級(jí)數(shù)據(jù)。如上所述,升級(jí)包處理器IO檢查與V2的修改塊相同的塊是否 存在于VI的搜索范圍之內(nèi)。如果未找到相同的塊,則升級(jí)包處理器10利用 V1和V2的塊的差執(zhí)行熵編碼,以生成升級(jí)數(shù)據(jù)。
在圖6中,具有數(shù)據(jù)Z、 W、 P和X的第16到19塊被插入到V2中。 升級(jí)包處理器10在VI的搜索范圍內(nèi)搜索與新插入的V2的塊相同的塊。由 于在VI的搜索范圍內(nèi)沒(méi)有與插入的V2的塊相同的塊,所以升級(jí)包處理器 10將屬性M指定給插入的塊,并且將該塊設(shè)置為升級(jí)數(shù)據(jù)。
如圖6所示,在VI的搜索范圍內(nèi)不存在與V2的第16到19塊相同的 塊。在這種情況下,升級(jí)包處理器10通過(guò)對(duì)數(shù)據(jù)Z、 W、 P和X進(jìn)行熵編 碼來(lái)生成如表3所示的映射數(shù)據(jù)。
表3
C:0,15,F(xiàn):0, null, null
M:16,4F:2, null, null S:20,5,F(xiàn):0, (20-4), 0
在表3中,映射數(shù)據(jù)指示V2的第0到15塊與VI的那些相同,V2的 第20到24塊與VI的第16到20塊相同,V2的第16到19塊被熵編碼為Z、 W、 P和X。當(dāng)如圖3C所示在搜索范圍內(nèi)未找到修改塊時(shí),升級(jí)包處理器 10將塊的flag設(shè)置為2(F = 2),并生成單獨(dú)的升級(jí)數(shù)據(jù)。在這種情況下,升 級(jí)包包括歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)。
在圖3C的情況下,升級(jí)包處理器10也可以生成沒(méi)有附加升級(jí)數(shù)據(jù)的升 級(jí)包。表4示出了當(dāng)升級(jí)包中排除升級(jí)數(shù)據(jù)時(shí)的映射數(shù)據(jù)。
表4
C:0,15,F:0,null,nu11 M:16,4F:2,nu11, Z,W,P,X S:20,5,F:0, (20-4), 0
在VI的搜索范圍內(nèi)未找到修改塊的情況下(參見(jiàn)圖6),升級(jí)包處理器通
15過(guò)對(duì)修改塊的數(shù)據(jù)進(jìn)行熵編碼來(lái)生成映射數(shù)據(jù)。如果以表4的形式生成映射 數(shù)據(jù),則升級(jí)包處理器10不生成附加升級(jí)數(shù)據(jù),而是生成具有歷史數(shù)據(jù)和 映射數(shù)據(jù)的升級(jí)包。
圖8示出了特別是當(dāng)在V2中去掉V1的塊時(shí)的升級(jí)包生成技術(shù)的示例。
參照?qǐng)D7,如果與V1相比,在V2中增加新數(shù)據(jù)或者去掉一些數(shù)據(jù),則 升級(jí)包處理器10移動(dòng)在增加的或去掉的塊之后的塊。如果塊被左移,則升 級(jí)包處理器IO在VI的搜索范圍內(nèi)搜索與每個(gè)修改塊相同的塊。如果找到了 相同的塊,則升級(jí)包處理器IO將VI的塊索引映射到V2的修改塊。相反, 如果未找到相同的宏塊,則升級(jí)包處理器10對(duì)V2的修改的塊數(shù)據(jù)進(jìn)行熵編 碼以生成升級(jí)數(shù)據(jù)。
當(dāng)將V1更新為V2時(shí),可以執(zhí)行多個(gè)移動(dòng)操作。Vl可以被編程為具有 為移位操作預(yù)留的間隙區(qū)域??梢钥紤]V2的升級(jí)數(shù)據(jù)來(lái)配置間隙區(qū)域。優(yōu) 選地,可以使用間隙區(qū)域在不影響下一組分的情況下執(zhí)行移位操作,如圖7 所示。在圖7的示例中,通過(guò)去掉V1的第6到10塊,將第3、第4、第8、 第9、第13和第17到19塊增加到V2,以及替換第15塊來(lái)編程V2。在這 種情況下,刪除了 5個(gè)塊并且增加了 8個(gè)塊,以使得移動(dòng)了最后3個(gè)塊。由 于最后3個(gè)塊被移動(dòng)到間隙區(qū)域,所以V2的下一組分可以與VI的相應(yīng)組 分比較,而不影響移動(dòng)操作。
參照?qǐng)D8,能夠固件空中下載(FOTA)的二進(jìn)制數(shù)據(jù)具有間隙區(qū)域,以使 得組分之間彼此保護(hù)。程序具有圖8的結(jié)構(gòu)。也就是說(shuō),VI具有多個(gè)組分(在 圖8中,為5個(gè)組分),每個(gè)組分具有間隙區(qū)域。當(dāng)V2被引入作為VI的具 有附加數(shù)據(jù)塊的升級(jí)后的程序時(shí),升級(jí)包處理器IO利用間隙區(qū)域執(zhí)行移動(dòng) 操作。也就是說(shuō),升級(jí)包處理器10以組分為單位執(zhí)行升級(jí)處理,以使得能 夠?qū)γ總€(gè)組分生成升級(jí)包。
如上所述,升級(jí)包被生成為具有歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)。在這 種情況下,映射數(shù)據(jù)包括具有塊索引的塊的屬性(復(fù)制、修改和移動(dòng)),并且 升級(jí)數(shù)據(jù)表示修改塊。此外,升級(jí)包被生成為具有映射數(shù)據(jù)和歷史數(shù)據(jù)而沒(méi) 有升級(jí)數(shù)據(jù)。在這種情況下,映射數(shù)據(jù)除了包括塊的屬性和它們的索引外, 還可以包括關(guān)于修改塊的信息。
在按照上述方式生成了映射數(shù)據(jù)后,包生成器130(圖2)通過(guò)分析由第一
16處理器160輸出的第二版本的塊數(shù)據(jù)與由映射數(shù)據(jù)生成器150輸出的映射數(shù) 據(jù)來(lái)生成升級(jí)包。此時(shí),包生成器130基于由映射數(shù)據(jù)生成器輸出的映射數(shù) 據(jù)來(lái)確定是否生成升級(jí)數(shù)據(jù)。也就是說(shuō),當(dāng)映射數(shù)據(jù)包含C和S命令串時(shí), 包生成器130不生成升級(jí)數(shù)據(jù)。此外,在映射數(shù)據(jù)包含M命令串且映射數(shù) 據(jù)包括相應(yīng)塊的數(shù)據(jù)或第一版本的塊的索引的情況下,包生成器不生成升級(jí) 數(shù)據(jù)。相反,如果映射數(shù)據(jù)具有包括修改塊的索引的M命令串或熵編碼的 數(shù)據(jù),則包生成器130將第二版本的塊設(shè)置為升級(jí)數(shù)據(jù)。也就是說(shuō),包生成 器130不生成命令C和S之后的塊,而生成列在M命令串中的塊,其中M 命令串的flag被設(shè)置為F=2。
在由第二壓縮器140壓縮之后,升級(jí)包被發(fā)送到升級(jí)包服務(wù)器20。當(dāng)在 第一壓縮器160中壓縮第一和第二版本時(shí),第一解壓縮器165對(duì)第一和第二 版本進(jìn)行解壓縮,用于校驗(yàn)第一和第二版本的壓縮。如果在校驗(yàn)過(guò)程中檢測(cè) 到錯(cuò)誤,則可以重新壓縮第一和第二版本。當(dāng)壓縮升級(jí)包時(shí),第二解壓縮器 145對(duì)壓縮后的升級(jí)包進(jìn)行解壓縮以校驗(yàn)正常壓縮。
可以省略第一壓縮器160。在這種情況下,第一和第二程序生成器50 和55以塊為單位將第一和第二版本的數(shù)據(jù)輸入到比較器110中,以使得比 較器IIO以塊為單位比較第一和第二版本。當(dāng)在壓縮狀態(tài)中處理第一和第二 版本的數(shù)據(jù)時(shí),可以省略第二壓縮器140以減小處理延時(shí)。在此實(shí)施例中, 使用了第一和第二壓縮器160和140 二者。
此外,升級(jí)包處理器10可以被配置為生成不具有映射數(shù)據(jù)的升級(jí)包, 而在接收設(shè)備中生成映射數(shù)據(jù)。此外,包生成器130可以在與第一版本的塊 相關(guān)的命令之后,與命令和塊索引一起生成升級(jí)數(shù)據(jù)。因而,可以在安裝數(shù) 據(jù)生成器180中省略映射凝:據(jù)生成器150。
參照?qǐng)D3,與圖2不同,安裝數(shù)據(jù)生成器180被實(shí)施為不具有映射數(shù)據(jù) 生成器150。在這種情況下,包生成器130生成包括映射到第二版本的相應(yīng) 塊索引的第一版本的塊索引以及關(guān)于塊數(shù)據(jù)的信息的升級(jí)數(shù)據(jù)。
圖9示出了僅利用歷史數(shù)據(jù)和升級(jí)數(shù)據(jù)生成升級(jí)包的示例。在這種情況 下,升級(jí)包生成器不具有映射數(shù)據(jù)生成器,并且包生成如圖9所示的升級(jí)數(shù) 據(jù)。升級(jí)凄t據(jù)優(yōu)選地由V2的塊的索引和關(guān)于該塊的信息組成。
參照?qǐng)D9,通過(guò)在VI的第5和第6塊之間增加新的第6和第7塊,在 VI的第14和第15塊之間增加新的第13到17塊,并且去掉VI的第9到第12塊,來(lái)對(duì)V2進(jìn)行編程。在這種情況下,升級(jí)包處理器IO將塊索引和關(guān)
于塊數(shù)據(jù)的信息合并到升級(jí)包中。升級(jí)數(shù)據(jù)具有與映射數(shù)據(jù)相似的結(jié)構(gòu)。也
就是說(shuō),升級(jí)數(shù)據(jù)包括命令串,該命令串以C(復(fù)制)、M(以相同尺寸修改、 插入或替換)和S(移動(dòng))之一開始,并且其結(jié)構(gòu)如下格式。
復(fù)制命令串格式 [start block No] [number of block] 修改命令串格式 [start block No] [number of block] [data] 移動(dòng)命令串格式 [start block No] [number of block] [previous version position]
復(fù)制命令串包括起始?jí)K索引和要被復(fù)制的塊數(shù);修改命令串包括起始?jí)K 索引和塊的級(jí)聯(lián)信息;移動(dòng)命令串包括起始?jí)K索引和VI的相應(yīng)塊索引。 在圖9提供的示例中,用于指示要被復(fù)制到V2的塊的升級(jí)信息可以用
"C:0,6"來(lái)表達(dá);用于指示要被修改的塊的升級(jí)信息可以用"M:6,2,X,Y" 和"M;13,5,A,B,C,D,E,,來(lái)表達(dá);用于指示要被移動(dòng)的塊的升級(jí)信息可以用
"S:8,3,6, S:ll,2,13"和"S:18,7,15"來(lái)表達(dá)。當(dāng)升級(jí)包被生成為如圖,所示 時(shí),接收設(shè)備接收升級(jí)包,從VI復(fù)制V2的第0到第5塊,在第6和第7 塊添加X(jué)和Y,將VI的第6到第8塊移動(dòng)到V2的第8到第10塊,丟棄 VI的第9到第12塊,將VI的第13和14塊移動(dòng)到V2的第11和12塊, 將A、 B、 C、 D和E添加到V2的第13到17塊,將VI的第15到21塊移 動(dòng)到V2的第18到24塊。由升級(jí)包處理器10生成的升級(jí)包(德耳塔包)的升 級(jí)數(shù)據(jù)可以被表達(dá)為表5所示。
表5
C:0,6
M:6,2,X,Y
S:8,3,6
S:11,2,13
M:13,5,A,B,C,D,ES:18,7,15
升級(jí)包處理器10通過(guò)將升級(jí)數(shù)據(jù)和歷史升級(jí)合并來(lái)生成升級(jí)包,并且 將升級(jí)包發(fā)送到升級(jí)包服務(wù)器20。此時(shí),由升級(jí)包處理器IO生成的升級(jí)包 在被發(fā)送到升級(jí)包服務(wù)器20之前被壓縮。通過(guò)使用不具有映射數(shù)據(jù)的升級(jí) 數(shù)據(jù)來(lái)生成升級(jí)包,可以提高升級(jí)包生成速度??梢栽诓挥脡嚎s處理的情況 下生成升級(jí)包。
如上所述,升級(jí)包處理器10將第二版本的數(shù)據(jù)與第一版本的相應(yīng)數(shù)據(jù) 進(jìn)行比較,并根據(jù)比較結(jié)果生成具有或不具有安裝數(shù)據(jù)的升級(jí)包。如果第二 版本被編程使得從第一版本中去掉一些數(shù)據(jù)塊或者將一些數(shù)據(jù)塊增加到第 一版本中,則移動(dòng)原始數(shù)據(jù)塊。當(dāng)去掉一些塊時(shí),被去掉的塊之后的塊被左 移。相反,如果增加一些塊,則占用新增加的塊的位置的塊被右移。當(dāng)?shù)诙?版本包括修改塊時(shí),升級(jí)包處理器10在第一版本的搜索范圍內(nèi)搜索與修改 塊相同的塊,并且才艮據(jù)搜索結(jié)果,將V1中的搜索到的塊的塊索引匹配到V2 中的修改的塊的塊索引,或者基于一些塊序列的相似性執(zhí)行熵編碼。由修改 的塊替換的VI的塊在V2中被右移修改的塊數(shù)。升級(jí)包處理器IO基于比較 結(jié)果生成具有被設(shè)置為C(復(fù)制)、M(修改)和S(移動(dòng))的命令的映射數(shù)據(jù),并 且生成由映射數(shù)據(jù)、歷史數(shù)據(jù)和升級(jí)數(shù)據(jù)組成的升級(jí)包。映射數(shù)據(jù)可以被合 并到升級(jí)數(shù)據(jù)中。升級(jí)包通過(guò)有線或無(wú)線通信信道被發(fā)送到升級(jí)包服務(wù)器 20。圖IO是示出由圖2的升級(jí)包處理器生成的升級(jí)包的數(shù)據(jù)格式的圖,圖 11是示出由圖3的升級(jí)包處理器生成的升級(jí)包的數(shù)據(jù)格式的圖。
升級(jí)包處理器IO通過(guò)無(wú)線或有線信道發(fā)送升級(jí)包到升級(jí)包服務(wù)器20。 如果從升級(jí)包處理器10接收到升級(jí)包,則升級(jí)包服務(wù)器20向接收設(shè)備30 通知新的升級(jí)包的發(fā)布,以便接收設(shè)備30可以從升級(jí)包服務(wù)器20下載升級(jí) 包。為了通知升級(jí)包的發(fā)布,可以單獨(dú)提供通知服務(wù)器25。
如果從升級(jí)包服務(wù)器20接收到升級(jí)通知消息,則接收設(shè)備30通過(guò)響應(yīng) 升級(jí)通知消息來(lái)觸發(fā)升級(jí)包的下載。圖12是示出才艮據(jù)本發(fā)明的示范性實(shí)施 例的程序升級(jí)系統(tǒng)的接收設(shè)備的配置的框圖。
參照?qǐng)D12,接收設(shè)備30包括下載器220、安裝器230、翻譯器240、第 一存儲(chǔ)器250和第二存儲(chǔ)器260。下載器220下載從升級(jí)包服務(wù)器20下載的 升級(jí)包,并將升級(jí)包臨時(shí)存儲(chǔ)在存儲(chǔ)器內(nèi)。該存儲(chǔ)器優(yōu)選地為易失性存儲(chǔ)器,作為存儲(chǔ)被安裝之前的升級(jí)包的第二存儲(chǔ)器。安裝器230提取安裝數(shù)據(jù)和升
級(jí)數(shù)據(jù),并且將所提取的安裝數(shù)據(jù)和升級(jí)數(shù)據(jù)存儲(chǔ)到第一存儲(chǔ)器250中。安裝數(shù)據(jù)優(yōu)選地由歷史數(shù)據(jù)和映射數(shù)據(jù)組成。但是,安裝數(shù)據(jù)可以僅包括歷史數(shù)據(jù)。當(dāng)安裝數(shù)據(jù)不具有任何映射數(shù)據(jù)時(shí),塊映射信息可以包含在升級(jí)凄t據(jù)中。如果接收到缺少映射數(shù)據(jù)的安裝數(shù)據(jù),則安裝器230對(duì)第一版本和升級(jí)數(shù)據(jù)執(zhí)行比較分析,并且根據(jù)分析結(jié)果生成映射數(shù)據(jù)或者不生成。當(dāng)安裝器230不產(chǎn)生映射數(shù)據(jù)時(shí),翻譯器240使用包含在升級(jí)數(shù)據(jù)中的映射信息來(lái)合并升級(jí)包和程序的第一版本。安裝器230將歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)存儲(chǔ)在為升級(jí)包準(zhǔn)備的第一存儲(chǔ)器250的區(qū)域內(nèi)。第一存儲(chǔ)器250存儲(chǔ)程序的第一版本和至少一個(gè)升級(jí)包,用于將第一版本更新為程序的第二版本。能夠被存儲(chǔ)在第一存儲(chǔ)器250中的升級(jí)包數(shù)N優(yōu)選地的預(yù)先設(shè)定的。在此實(shí)施例中,N^皮i殳置為6。
如果下載了程序的新版本的升級(jí)包,則接收設(shè)備30輸出警報(bào)用于通知用戶程序升級(jí)已準(zhǔn)備好了。此時(shí),翻譯器240讀出程序的第一版本的數(shù)據(jù)以及第二版本的升級(jí)包,并且合并第一版本的數(shù)據(jù)和升級(jí)包以便生成第二版本。程序的第二版本被加載到第二存儲(chǔ)器260上。此時(shí),翻譯器240分析升級(jí)包的安裝數(shù)據(jù),以檢查版本號(hào)和要被升級(jí)的目標(biāo)版本。另外,翻譯器240分析映射數(shù)據(jù),并且參考該映射數(shù)據(jù)利用相應(yīng)的升級(jí)數(shù)據(jù)來(lái)升級(jí)目標(biāo)版本(在此實(shí)施例中為第一版本)的塊的數(shù)據(jù)。當(dāng)安裝數(shù)據(jù)不具有任何映射數(shù)據(jù)時(shí),翻譯器240分析歷史數(shù)據(jù),并且基于歷史數(shù)據(jù)的分析結(jié)果來(lái)確定要被升級(jí)的程序的目標(biāo)版本??梢酝ㄟ^(guò)合并升級(jí)包的升級(jí)數(shù)據(jù)和第一版本來(lái)生成第二版本。當(dāng)?shù)谝话姹颈簧?jí)為第二版本時(shí),翻譯器240將第二版本的數(shù)據(jù)加載到第二存儲(chǔ)器260上。在完成了升級(jí)過(guò)程以后,接收設(shè)備30利用加載到第二存儲(chǔ)器260上的程序的第二版本工作。
如上所述,第一存儲(chǔ)器250存儲(chǔ)程序的第一版本以及用于將第一版本更新為第二版本的至少一個(gè)升級(jí)包。該升級(jí)包包括安裝數(shù)據(jù)(歷史和映射數(shù)據(jù))和升級(jí)數(shù)據(jù)。安裝數(shù)據(jù)可以僅由歷史數(shù)據(jù)構(gòu)成。此外,升級(jí)包可以僅由安裝數(shù)據(jù)構(gòu)成。安裝數(shù)據(jù)由包含歷史數(shù)據(jù)的映射信息的映射數(shù)據(jù)和升級(jí)包的升級(jí)數(shù)據(jù)構(gòu)成。映射數(shù)據(jù)利用三種類型的命令(即復(fù)制、修改和移動(dòng))來(lái)提供兩個(gè)版本之間的關(guān)系。映射數(shù)據(jù)用于快速尋址計(jì)算,以將第一版本的數(shù)據(jù)更新為第二版本的數(shù)據(jù)。參照存儲(chǔ)在第一存儲(chǔ)器250中的第一版本的數(shù)據(jù)并使用映射數(shù)據(jù),可以快速生成程序的第二版本并且將其加載到第二存儲(chǔ)器260上。在升級(jí)包處理器10中可以利用或不利用映射ft據(jù)來(lái)生成升級(jí)包的安裝
數(shù)據(jù)。因而,從升級(jí)包服務(wù)器20下載的升級(jí)包可以包括或可以不包括映射數(shù)據(jù)。當(dāng)升級(jí)包缺少映射數(shù)據(jù)時(shí),安裝器230可以通過(guò)比較存儲(chǔ)在第一存儲(chǔ)器250中的第一版本的數(shù)據(jù)和升級(jí)包以及分析比較結(jié)果來(lái)生成映射數(shù)據(jù),以將包括在升級(jí)包中的升級(jí)數(shù)據(jù)映射到第 一版本的數(shù)據(jù)。升級(jí)數(shù)據(jù)可以被構(gòu)造為如圖9所示。由安裝器230生成映射數(shù)據(jù)的原因是增加翻譯器240的第二版本生成速度。當(dāng)升級(jí)數(shù)據(jù)包含用于將升級(jí)數(shù)據(jù)映射到第一版本的數(shù)據(jù)的映射信息時(shí),升級(jí)數(shù)據(jù)可以被直接替換或者參照后來(lái)生成的映射數(shù)據(jù)。
盡管優(yōu)選地利用最新的升級(jí)包來(lái)升級(jí)第 一版本,但是可以利用程序的另一版本的升級(jí)包來(lái)升級(jí)第一版本。這是可能的,因?yàn)榻邮赵O(shè)備30允許存儲(chǔ)六個(gè)升級(jí)包。因而,如果利用一個(gè)升級(jí)包的第二版本生成失敗了,則可以嘗試使用存儲(chǔ)在第一存儲(chǔ)器250中的另 一個(gè)升級(jí)包來(lái)生成第二版本。
第一存儲(chǔ)器250可以被實(shí)現(xiàn)為具有幾個(gè)存儲(chǔ)區(qū)域用于分別存儲(chǔ)升級(jí)包(在此實(shí)施例中,可以存儲(chǔ)六個(gè)升級(jí)包)。因而,即使從升級(jí)包服務(wù)器20下載了新的升級(jí)包,也可以不刪除先前下載的升級(jí)包。升級(jí)記錄纟皮存儲(chǔ)作為升級(jí)歷史,以維護(hù)程序的第一版本的數(shù)據(jù)。由于關(guān)于第一和第二版本的信息利用升級(jí)歷史來(lái)維護(hù),所以升級(jí)的執(zhí)行具有高的容錯(cuò)率。例如,當(dāng)最后一個(gè)升級(jí)包不工作時(shí),可以由用戶選擇使用另一個(gè)升級(jí)包。即4吏在所有升級(jí)包都不工作的最壞情況下,也可以恢復(fù)程序的原始版本。
圖13是示出圖12的接收設(shè)備的第一存儲(chǔ)器的配置的框圖。參照?qǐng)D13,第 一存儲(chǔ)器包括第 一存儲(chǔ)區(qū)域310、第二存儲(chǔ)區(qū)域320和第三存儲(chǔ)區(qū)域330。
第 一存儲(chǔ)區(qū)域310以原始數(shù)據(jù)或壓縮數(shù)據(jù)的形式存儲(chǔ)程序的第 一版本。第二存儲(chǔ)區(qū)域320存儲(chǔ)用于生成程序的新版本的至少一個(gè)升級(jí)包。每個(gè)升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù)。升級(jí)數(shù)據(jù)優(yōu)選地包括用于更新舊版本的數(shù)據(jù)且具有塊索引的命令,或者要被增加到新版本的數(shù)據(jù)。因而,第二存儲(chǔ)區(qū)域320的尺寸根據(jù)存儲(chǔ)在其中的升級(jí)包的數(shù)量來(lái)確定。第三存儲(chǔ)區(qū)域330是具有文件系統(tǒng)的用于存儲(chǔ)用戶數(shù)據(jù)的用戶空間。
圖13是示出圖12的第一存儲(chǔ)器250的第二存儲(chǔ)區(qū)域的結(jié)構(gòu)的圖,圖15是示出存儲(chǔ)在圖13的第二存儲(chǔ)區(qū)域中的每個(gè)升級(jí)包的歷史數(shù)據(jù)的數(shù)據(jù)格式的圖。
21參照?qǐng)D13,第二存儲(chǔ)區(qū)域320具有預(yù)定數(shù)量的存儲(chǔ)區(qū)域,用于存儲(chǔ)升級(jí)包(在此實(shí)施例中為6個(gè)升級(jí)包)。每個(gè)存儲(chǔ)區(qū)域被構(gòu)造為存儲(chǔ)構(gòu)成升級(jí)包的歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)。通常,升級(jí)包包括安裝數(shù)據(jù)和升級(jí)數(shù)據(jù),安裝數(shù)據(jù)包括歷史數(shù)據(jù)或歷史數(shù)據(jù)和映射數(shù)據(jù)。第二存儲(chǔ)區(qū)域320優(yōu)選地被配置為單獨(dú)存儲(chǔ)歷史數(shù)據(jù)和映射數(shù)據(jù)。歷史數(shù)據(jù)被存儲(chǔ)用于保持與存儲(chǔ)在第一存儲(chǔ)區(qū)域310中的第一版本的鏈接。第一版本的映射數(shù)據(jù)和升級(jí)數(shù)據(jù)可以不被存儲(chǔ)或作為空數(shù)據(jù)而存在。圖14提供了由歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)組成的升級(jí)包的示例。當(dāng)升級(jí)包處理器10生成具有歷史數(shù)據(jù)和映射數(shù)據(jù)的升級(jí)包時(shí),第二存儲(chǔ)區(qū)域320優(yōu)選地被構(gòu)造為具有用于存儲(chǔ)相應(yīng)版本的歷史數(shù)據(jù)和映射數(shù)據(jù)的存儲(chǔ)區(qū)域。
參照?qǐng)D15,歷史數(shù)據(jù)包括版本字段、尺寸字段、組合標(biāo)記字段和失敗標(biāo)記字段。這里,版本字段包含升級(jí)包的版本號(hào)(圖14中的#2至#7之一),尺寸字段包含歷史數(shù)據(jù)的尺寸值,組合標(biāo)記字段包含要被升級(jí)的目標(biāo)版本的版本號(hào)(在此示例中為第一版本的版本號(hào)# 1),失敗標(biāo)記字段包含關(guān)于加載失敗的發(fā)生的信息。第一版本的版本號(hào)# 1優(yōu)選地被包含在版本字段中并鏈接到組合標(biāo)記字段。例如,如果升級(jí)包的歷史數(shù)據(jù)的版本字段和組合標(biāo)記字段分別包含# 5和# 1,則接收設(shè)備30通過(guò)合并# 5的第二版本和# 1的第 一版本來(lái)生成#1的第一版本。下載的升級(jí)包以圖14的結(jié)構(gòu)被存儲(chǔ)在圖13中所示的第一存儲(chǔ)器310的第二存儲(chǔ)區(qū)域320中。當(dāng)請(qǐng)求存儲(chǔ)在第二存儲(chǔ)區(qū)域320中的升級(jí)包時(shí),所請(qǐng)求的升級(jí)包與存儲(chǔ)在第一存儲(chǔ)區(qū)域310中的第一版本合并,以使得第一版本被升級(jí)為第二版本。
這里描述的程序升級(jí)系統(tǒng)的升級(jí)操作包括包含映射數(shù)據(jù)、歷史數(shù)據(jù)和升級(jí)數(shù)據(jù)的升級(jí)包。
圖16是示出根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的程序數(shù)據(jù)系統(tǒng)的升級(jí)操作的框圖。如圖16所示,第一存儲(chǔ)器是諸如快閃存儲(chǔ)器的非易失性存儲(chǔ)器,第二存儲(chǔ)器是諸如隨機(jī)存取存儲(chǔ)器(RAM)的易失性存儲(chǔ)器。
參照?qǐng)D16,如果輸入升級(jí)請(qǐng)求,則加載器(未示出)從第一(快閃)存儲(chǔ)器250的第二存儲(chǔ)區(qū)域320加載所請(qǐng)求的版本的升級(jí)包,翻譯器240通過(guò)合并所加載的升級(jí)包和存儲(chǔ)在第 一存儲(chǔ)區(qū)域310中的程序的第 一版本來(lái)生成程序的第二版本,然后將第二版本加載到第二存儲(chǔ)器260上。升級(jí)請(qǐng)求是響應(yīng)于用戶命令而產(chǎn)生的。也就是說(shuō),當(dāng)下載了升級(jí)包或存在未被應(yīng)用的下載的升級(jí)包時(shí),接收設(shè)備30輸出警報(bào)用于通知用戶發(fā)布了升級(jí)包,以使得用戶可以觸發(fā)升級(jí)至目標(biāo)程序。如果由用戶響應(yīng)于升級(jí)警報(bào)輸入升級(jí)請(qǐng)求,則接收設(shè)備30執(zhí)行如上所述的升級(jí)過(guò)程,并將程序的升級(jí)后的版本加載到第二存儲(chǔ)器260上。因而,接收設(shè)備30以后利用第二版本來(lái)工作。
優(yōu)選地在接收設(shè)備被初始化后執(zhí)行升級(jí)過(guò)程。如圖12所示,程序的第一版本和升級(jí)包被單獨(dú)存儲(chǔ)在第一存儲(chǔ)器250中,并且通過(guò)合并第一版本和升級(jí)包之一來(lái)執(zhí)行程序升級(jí),以使得產(chǎn)生程序的第二版本并加載到第二存儲(chǔ)器260上。
圖17是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)系統(tǒng)的升級(jí)操作的框圖。在此實(shí)施例中,第一存儲(chǔ)器250不存儲(chǔ)用于第二版本的升級(jí)包。圖18和19是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)系統(tǒng)的升級(jí)操作的框圖。
參照?qǐng)D17,第一存儲(chǔ)器250存儲(chǔ)程序的第一版本。這里,第一版本可以是程序的初始版本。程序的第一版本由n個(gè)塊B#l到B#n組成。第一版本的安裝數(shù)據(jù)包括歷史數(shù)據(jù)和映射數(shù)據(jù)。歷史數(shù)據(jù)具有被設(shè)置為#1的版本字段和被設(shè)置為#0的組合標(biāo)記字段。映射數(shù)據(jù)優(yōu)選地被按照如上所述的表1到3中的一個(gè)構(gòu)造。
如果輸入了升級(jí)請(qǐng)求命令,則翻譯器240分析安裝數(shù)據(jù)。當(dāng)在第一存儲(chǔ)器250中不存在升級(jí)包時(shí),映射數(shù)據(jù)區(qū)域是空狀態(tài)或者具有映射數(shù)據(jù)(C:O,n,F:O, null, null}。這樣的映射數(shù)據(jù)意味著將存儲(chǔ)在第 一存儲(chǔ)器250中的程序的第一版本加載到第二存儲(chǔ)器上的命令,由此翻譯器240從第一存儲(chǔ)器250復(fù)制第一版本,并將復(fù)制的第一版本加載到第二存儲(chǔ)器260上。相應(yīng)地,接收設(shè)備30通過(guò)加載到第二存儲(chǔ)器260上的第一版本來(lái)工作。第一版本優(yōu)選地以壓縮狀態(tài)存儲(chǔ)在第一存儲(chǔ)器250中,在這種情況下,翻譯器240利用解壓縮器270來(lái)解壓縮壓縮的第一版本,并且加載到第二存儲(chǔ)器260上。另外,當(dāng)下載由升級(jí)包處理器10的第二壓縮器140壓縮的升級(jí)包時(shí),在壓縮后的升級(jí)包在加載到第二存儲(chǔ)器260之前被解壓縮之后,翻譯器240執(zhí)行翻譯。當(dāng)升級(jí)包由第二壓縮器140壓縮時(shí),翻譯器240在壓縮后的升級(jí)包被解壓縮之后執(zhí)4于翻i奪。
圖18和19是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)系統(tǒng)的升級(jí)操作的框圖。在此實(shí)施例中,第一版本被存儲(chǔ)在第一存儲(chǔ)器250的第一存儲(chǔ)區(qū)域310中,第二版本的升級(jí)包被存儲(chǔ)在第一存儲(chǔ)器250的第二存儲(chǔ)區(qū)域320上。第一版本可以是初始版本或預(yù)設(shè)參考版本,每個(gè)升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù)。安裝數(shù)據(jù)包括歷史數(shù)據(jù)和映射升級(jí),歷史數(shù)據(jù)包含第二版本的版本號(hào)和要被升級(jí)的目標(biāo)版本(在此示例中為第一版本)。第一版本由n個(gè)塊BW到B紐組成,如圖18和19所示。歷史數(shù)據(jù)的組合標(biāo)記字段被設(shè)置為# 0,映射數(shù)據(jù)優(yōu)選地被以表1到3之一的形式構(gòu)造。
參照?qǐng)D18,第一存儲(chǔ)器250的第一存儲(chǔ)區(qū)域310(圖13)存儲(chǔ)程序的第一版本,存儲(chǔ)在第一存儲(chǔ)器250的第二存儲(chǔ)區(qū)域320中的特定升級(jí)包具有表1形式的映射數(shù)據(jù)。升級(jí)包的歷史數(shù)據(jù)具有用于合并升級(jí)包和第 一版本的標(biāo)記。在這種情況下,翻譯器240參照映射數(shù)據(jù)將第一版本升級(jí)為第二版本,并將第二版本加載到第二存儲(chǔ)器260上。映射數(shù)據(jù)具有如下信息復(fù)制第一版本的第0到第15塊;復(fù)制第一版本的第12、第13、第8和第9塊成為第二版本的第16到第19塊;并且右移第一版本的第15塊之后的塊。因而,翻譯器240參照映射數(shù)據(jù)升級(jí)第一版本,并且將升級(jí)后的程序(即第二版本)加載到第二存儲(chǔ)器260上,如圖18所示。
參照?qǐng)D19,第一存儲(chǔ)器250的第一存儲(chǔ)區(qū)域310存儲(chǔ)程序的第一版本,第一存儲(chǔ)器250的第二存儲(chǔ)區(qū)域320存儲(chǔ)升級(jí)包,該升級(jí)包是具有以表3的形式構(gòu)造的映射數(shù)據(jù)的特定升級(jí)包。升級(jí)包的歷史數(shù)據(jù)具有用于通知第一版本和升級(jí)包的合并的標(biāo)記。映射數(shù)據(jù)具有如下信息復(fù)制第一版本的第O到第15塊;插入升級(jí)數(shù)據(jù)(Z,W,P,X〉成為第二版本的第16到第19塊;并且右移第一版本的第15塊之后的塊。這樣,翻譯器240參照映射數(shù)據(jù)升級(jí)第一版本。
在程序被升級(jí)之后,接收設(shè)備30利用根據(jù)圖18和19的示例升級(jí)的程序的第二版本工作。第一版本和升級(jí)包可以以壓縮的狀態(tài)被存儲(chǔ)。升級(jí)包優(yōu)選地被下載為壓縮包或者在下載后凈皮壓縮。當(dāng)?shù)谝话姹竞蜕?jí)包以壓縮狀態(tài)被存儲(chǔ)時(shí),翻譯器240使用解壓縮器270解壓縮該壓縮后的第一版本和升級(jí)包,以用于升級(jí)過(guò)程。當(dāng)在壓縮狀態(tài)下比較第一和第二版本時(shí)(當(dāng)由壓縮包處理器10的第一壓縮器160壓縮第一和第二版本時(shí)),輸入到翻譯器240的塊可以處于壓縮狀態(tài)。在這種情況下,翻譯器240使用解壓縮器275解壓縮第一版本和升級(jí)包的壓縮數(shù)據(jù),并將解壓縮后的數(shù)據(jù)加載到第二存儲(chǔ)器260上。
24圖20是示出根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的程序升級(jí)系統(tǒng)的接收設(shè)
備的升級(jí)操作的框圖。參照?qǐng)D20,第一存儲(chǔ)器250存儲(chǔ)程序的第一版本和第二版本的升級(jí)包。翻譯器240響應(yīng)于升級(jí)命令合并升級(jí)包和第一版本,以使得生成第二版本并加載到第二存儲(chǔ)器260中。在程序的第二版本被加載到第二存儲(chǔ)器260中后,接收設(shè)備30利用程序的第二版本工作。優(yōu)選地在接收設(shè)備30被初始化時(shí)或者輸入升級(jí)命令時(shí)重復(fù)執(zhí)行升級(jí)過(guò)程。
如上所述,根據(jù)本發(fā)明的實(shí)施例的程序升級(jí)方法通過(guò)預(yù)定通信標(biāo)準(zhǔn)信道下載升級(jí)包,存儲(chǔ)下載的升級(jí)包,使用所存儲(chǔ)的升級(jí)包執(zhí)行程序的升級(jí),加載升級(jí)后的程序,并在升級(jí)后的程序的控制下運(yùn)行接收設(shè)備。本發(fā)明的程序升級(jí)方法可以由升級(jí)包生成進(jìn)程、下載后的安裝lt據(jù)處理進(jìn)程、下載后的升級(jí)包管理進(jìn)程和升級(jí)執(zhí)行進(jìn)程構(gòu)成。
在升級(jí)包生成進(jìn)程中,程序的第一和第二版本被輸入到升級(jí)包處理器10中。以原始或壓縮狀態(tài)輸入第一和第二版本。接著,比較第一和第二版本,以便檢查這兩個(gè)版本之間的差別?;谠摬顒e,生成包括用于合并升級(jí)包和安裝在接收設(shè)備中的第一版本的映射數(shù)據(jù)的安裝數(shù)據(jù)。安裝數(shù)據(jù)與升級(jí)數(shù)據(jù)一起被打包到升級(jí)包中,并且該升級(jí)包被發(fā)送到升級(jí)包服務(wù)器。
在下載后的安裝數(shù)據(jù)處理進(jìn)程中,發(fā)送到升級(jí)包服務(wù)器的升級(jí)包被下載到接收設(shè)備中。接收設(shè)備可以通過(guò)比較升級(jí)包和參考版本(這里是第一版本)來(lái)獲得包含在升級(jí)包中的安裝數(shù)據(jù),并且安裝數(shù)據(jù)有助于尋址計(jì)算。也就是說(shuō),當(dāng)合并存儲(chǔ)在第一存儲(chǔ)器250中的第一版本和第二存儲(chǔ)器260中的升級(jí)包時(shí),可以使用安裝數(shù)據(jù)逐塊快速處理第 一版本和升級(jí)包的數(shù)據(jù)。
在升級(jí)包管理進(jìn)程中,安裝數(shù)據(jù)用于參照通過(guò)比較升級(jí)包和第二版本而獲得的映射數(shù)據(jù)的快速尋址計(jì)算,并且有助于合并第一版本和第二存儲(chǔ)器260中的升級(jí)包。優(yōu)選地,根據(jù)在升級(jí)包中是否打包有映射數(shù)據(jù)來(lái)執(zhí)行升級(jí)包安裝。當(dāng)在升級(jí)包中打包有映射數(shù)據(jù)時(shí),接收設(shè)備30從升級(jí)包中提取歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù),并且獨(dú)立地將所提取的數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)器250的升級(jí)包區(qū)域。另一方面,如果在升級(jí)包中不包含映射數(shù)據(jù),則接收設(shè)備30可以通過(guò)比較存儲(chǔ)在第一存儲(chǔ)器250中的第一版本和下載的升級(jí)包來(lái)獲得映射數(shù)據(jù)。此時(shí),映射數(shù)據(jù)可以被合并到升級(jí)數(shù)據(jù)中,如圖3F所示。在這種情況下,接收設(shè)備在安裝過(guò)程中從升級(jí)數(shù)據(jù)中提取映射數(shù)據(jù),并且將映射數(shù)據(jù)安裝在映射數(shù)據(jù)區(qū)域中。接收設(shè)備也提取升級(jí)數(shù)據(jù)并安裝在升級(jí)包存儲(chǔ)區(qū)域中。因而,接收設(shè)備可以以與映射數(shù)據(jù)被打包在升級(jí)包中相同的方式安裝升級(jí)包。安裝數(shù)據(jù)也包括升級(jí)包的歷史數(shù)據(jù)。歷史數(shù)據(jù)通知升級(jí)包的
版本和目標(biāo)程序。在此實(shí)施例中,在第一存儲(chǔ)器250中可以存儲(chǔ)六個(gè)升級(jí)包。
當(dāng)在特定升級(jí)包中發(fā)生合并失敗時(shí),接收設(shè)備通過(guò)顯示升級(jí)包列表來(lái)允許用戶選擇另一個(gè)升級(jí)包。
在升級(jí)執(zhí)行進(jìn)程中,升級(jí)包被存儲(chǔ)在第一存儲(chǔ)器250中準(zhǔn)備的相應(yīng)存儲(chǔ)區(qū)域中。因而,當(dāng)下載新的升級(jí)包時(shí),先前下載的升級(jí)包不被刪除。因而,當(dāng)特定升級(jí)包不被加載時(shí),接收設(shè)備30通過(guò)顯示升級(jí)包列表來(lái)允許用戶選擇另一個(gè)升級(jí)包用于程序升級(jí)。即使在所有升級(jí)包都不被加載的最壞情況
下,也可以加載程序的第一版本。
圖21是示出根據(jù)本發(fā)明的示范性實(shí)施例的程序升級(jí)方法的流程圖。將程序升級(jí)方法的步驟與圖1的程序升級(jí)系統(tǒng)的升級(jí)包處理器IO和接收設(shè)備30的搡作相關(guān)地描述。
參照?qǐng)D21,在步驟411中,升級(jí)包處理器IO接收程序的第一和第二版本。當(dāng)引入程序的新版本時(shí),通過(guò)比較舊版本(即第一版本)和新版本(即第二版本)來(lái)生成升級(jí)包。升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù)。第一版本可以是^皮編程為要與升級(jí)包合并的原始版本或者參考版本。升級(jí)包是用于將安裝在接收設(shè)備中的程序的第 一版本升級(jí)為第二版本的信息包。接收設(shè)備可以存儲(chǔ)至少一個(gè)升級(jí)包。如果接收到程序的第一和第二版本,則在步驟413中,升級(jí)包處理器IO分析第一和第二版本的差別,并且在步驟415中,基于分析結(jié)果生成升級(jí)包。升級(jí)包包括升級(jí)數(shù)據(jù)和包含用于合并升級(jí)數(shù)據(jù)和第一版本的信息的安裝數(shù)據(jù)。安裝數(shù)據(jù)包括用于提供第二版本的歷史的歷史數(shù)據(jù)和提供用于映射程序的第 一和第二版本的塊的信息的映射數(shù)據(jù)。映射數(shù)據(jù)可以不包含在安裝數(shù)據(jù)中。在這種情況下,接收設(shè)備可以在程序升級(jí)過(guò)程中生成映射數(shù)據(jù)??梢蕴峁┌惭b數(shù)據(jù)用于方便程序升級(jí)過(guò)程。如果成功生成升級(jí)包,則升級(jí)包處理器10將升級(jí)包發(fā)送到升級(jí)包服務(wù)器20。在接收到升級(jí)包后,升級(jí)包服務(wù)器20向接收設(shè)備30發(fā)送升級(jí)通知消息。如果接收到升級(jí)通知消息,則接收設(shè)備30響應(yīng)于用戶命令開始下載升級(jí)包??梢曰诮邮赵O(shè)備30支持的通信標(biāo)準(zhǔn)確定加載進(jìn)程。該通信標(biāo)準(zhǔn)包括CDMA、 UMTS、 GSM、 WiBro、Wi-Fi、 WiMAX、藍(lán)牙、紫蜂以及USB。
如果開始升級(jí)包下載,則在步驟451中接收設(shè)備30接收升級(jí)包并將下
26載的升級(jí)包存儲(chǔ)在第一存儲(chǔ)器250中。第一存儲(chǔ)器250具有用于存儲(chǔ)程序的 第一版本的第一存儲(chǔ)區(qū)域310和用于存儲(chǔ)升級(jí)包的第二存儲(chǔ)區(qū)域320。第二 存儲(chǔ)區(qū)域320可以被構(gòu)造為多存儲(chǔ)區(qū)域的形式,用于存儲(chǔ)相應(yīng)的升級(jí)包。在 此實(shí)施例中,第二存儲(chǔ)區(qū)域320具有六個(gè)存儲(chǔ)區(qū)域。每個(gè)存儲(chǔ)區(qū)域可以獨(dú)立 存儲(chǔ)歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)。
當(dāng)在下載的升級(jí)包的安裝數(shù)據(jù)中不包含映射數(shù)據(jù)時(shí),接收設(shè)備30的安 裝器230參照升級(jí)包和程序的第一版本生成映射數(shù)據(jù)。在升級(jí)包被存儲(chǔ)在第 一存儲(chǔ)器250中后,在步驟455中,接收設(shè)備30響應(yīng)于用戶命令,通過(guò)合 并升級(jí)包和第一版本將程序升級(jí)為第二版本,然后將程序的第二版本加載到 第二存儲(chǔ)器260中。因而,此后接收設(shè)備30在程序的第二版本的控制下進(jìn) 行工作。第二存儲(chǔ)器260可以是作為易失性存儲(chǔ)器的工作存儲(chǔ)器。以這樣的 方式,接收設(shè)備30通過(guò)合并存儲(chǔ)在第一存儲(chǔ)器250中的第一版本和在系統(tǒng) 初始化過(guò)程中最近下載的升級(jí)包來(lái)生成程序的第二版本,并且將第二版本加 載到第二存儲(chǔ)器260上以控制接收設(shè)備30的操作。當(dāng)利用特定升級(jí)包的程 序升級(jí)失敗時(shí),接收設(shè)備30自動(dòng)嘗試?yán)么鎯?chǔ)在第一存儲(chǔ)器250中的另一 個(gè)升級(jí)包升級(jí)程序。另外,接收設(shè)備30通過(guò)提供升級(jí)包列表允許用戶選擇 升級(jí)包,以使得利用所選擇的升級(jí)包來(lái)升級(jí)第一版本。
下面將參照?qǐng)D22更詳細(xì)地描述程序升級(jí)過(guò)程,其中接收設(shè)備30在步驟 501中,已將程序的第一版本安裝在第一存儲(chǔ)器250的第一區(qū)域310中。第
如果通知升級(jí)包的發(fā)布,則在步驟503到507中,接收設(shè)備30開始從升級(jí) 包服務(wù)器20下載升級(jí)包,并且臨時(shí)存儲(chǔ)升級(jí)包。通常,升級(jí)包被安裝在存 儲(chǔ)器中以便能夠被穩(wěn)定地存取。因而,下載的升級(jí)包被安裝在第一存儲(chǔ)器250 中。升級(jí)包可以在下載之后馬上被安裝或者在完成了正常操作之后被安裝。 如果在步驟509中在完全下載升級(jí)包之后未檢測(cè)到安裝命令,則接收設(shè)備30 返回到正常操作模式。如果在工作在正常工作模式時(shí)檢測(cè)到安裝命令,則接 收設(shè)備開始安裝存儲(chǔ)在第一存儲(chǔ)器250中的升級(jí)包。
如果在步驟509中檢測(cè)到安裝命令,則接收設(shè)備30開始安裝第一存儲(chǔ) 器250內(nèi)的升級(jí)包。第一存儲(chǔ)器是非易失性存儲(chǔ)器,且包括用于存儲(chǔ)作為參 考版本的第一版本的第一區(qū)域和用于存儲(chǔ)多個(gè)升級(jí)包的多個(gè)第二區(qū)域。也就 是說(shuō),第一存儲(chǔ)器250具有用于存儲(chǔ)第一版本和第二版本的升級(jí)包的第一和
27第二區(qū)域,如圖7、 14和15所示。因而,接收設(shè)備30將下載的升級(jí)包安裝 在被指定用于該升級(jí)包的存儲(chǔ)區(qū)域內(nèi)。以與升級(jí)歷史相關(guān)的下載次數(shù)的時(shí)間 順序來(lái)獨(dú)立存儲(chǔ)升級(jí)包而不管先前下載的升級(jí)包。
在升級(jí)包被安裝在第一存儲(chǔ)器250中后,在步驟515中,接收設(shè)備顯示 警報(bào),并確定是否輸入了系統(tǒng)重新啟動(dòng)命令。如果未檢測(cè)到系統(tǒng)重新啟動(dòng)命 令,則在步驟517中,接收設(shè)備30返回到正常工作模式。在這種情況下, 由于系統(tǒng)升級(jí)還未被執(zhí)行,所以接收設(shè)備30利用程序的第一版本工作。
如果檢測(cè)到系統(tǒng)重新啟動(dòng)命令,則接收設(shè)備30在步驟521中執(zhí)行系統(tǒng) 初始化然后在步驟523中加載翻譯器240。翻譯器240合并安裝在第一存儲(chǔ) 器250中的升級(jí)包和第一版本,以便生成程序的更新后的版本并將其加載到 第二存儲(chǔ)器260上。在加載翻譯器240后,在步驟525中,接收設(shè)備30檢 查升級(jí)包的狀態(tài),以確定升級(jí)包是否錯(cuò)誤。如果升級(jí)包錯(cuò)誤,則在步驟533 中,接收設(shè)備30將更新前的版本(第二版本)或第一版本加載到第二存儲(chǔ)器 中,用于穩(wěn)定的操作。如果在步驟525中確定升級(jí)包的狀態(tài)是正常的,則接 收設(shè)備30加載升級(jí)包(步驟527)并且在步驟529中合并升級(jí)包和第一版本, 由此在步驟531中生成第二版本。程序的第二版本被加載到第二存儲(chǔ)器260 上以運(yùn)行接收設(shè)備30。
接收設(shè)備30以上述方式執(zhí)行安裝并翻譯下載的升級(jí)包。
圖23是示出圖22的程序升級(jí)方法的升級(jí)包安裝進(jìn)程的流程圖,圖24 是圖22的程序升級(jí)方法的版本升級(jí)進(jìn)程。
參照?qǐng)D23,接收設(shè)備30在步驟601中運(yùn)行用于下載升級(jí)包的下載器, 并在步驟603中從升級(jí)包服務(wù)器20下載升級(jí)包??梢愿鶕?jù)接收設(shè)備30和升 級(jí)包服務(wù)器20的通信鏈路以不同的方式執(zhí)行該下載進(jìn)程。也就是說(shuō),接收 設(shè)備30可以通過(guò)基于諸如CDMA、 UMTS、 GSM、 GPRS、 WiBro、 Wi-Fi、 WiMAX、藍(lán)牙、紫蜂以及USB之類的通信標(biāo)準(zhǔn)建立的信道連接到升級(jí)包服 務(wù)器20。
在步驟605中,接收設(shè)備監(jiān)視該鏈路,以檢測(cè)是否成功完成下載。如果 在下載會(huì)話中檢測(cè)到錯(cuò)誤,則接收設(shè)備30在步驟607中執(zhí)行錯(cuò)誤處理進(jìn)程 并且在步驟609中重試下載。
如果確定在下載會(huì)話中未發(fā)生錯(cuò)誤,則在步驟611中,接收設(shè)備30將 用于安裝升級(jí)包的安裝器加載到第一存儲(chǔ)器250中。接著,接收設(shè)備30從升級(jí)包中提取歷史數(shù)據(jù)(步驟615),然后在步驟617中將升級(jí)包以歷史表的 形式存儲(chǔ)在第一存儲(chǔ)器250的升級(jí)包存儲(chǔ)區(qū)域中。
接著,在步驟619中,接收設(shè)備30確定升級(jí)包是否包含映射數(shù)據(jù)。如 果升級(jí)包包含映射數(shù)據(jù),則接收設(shè)備30在步驟637中從升級(jí)包中提取映射 數(shù)據(jù),并在步驟639中將映射數(shù)據(jù)安裝在第一存儲(chǔ)器250的一部分升級(jí)包存 儲(chǔ)區(qū)域中。接著,在步驟641中,接收設(shè)備30將升級(jí)數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ) 器的升級(jí)包存儲(chǔ)區(qū)域的相應(yīng)部分內(nèi)。因此,在步驟635中,接收設(shè)備30將 歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)安裝在指定用于該升級(jí)包的升級(jí)包存儲(chǔ)區(qū)域 的相應(yīng)部分內(nèi)。
相反,如果在步驟619中升級(jí)包不包含映射數(shù)據(jù),則接收設(shè)備30在步 驟621中運(yùn)行解壓縮器,以使得解壓縮器在步驟623中執(zhí)行對(duì)升級(jí)包的解壓 縮以提取升級(jí)數(shù)據(jù)。接著,在步驟625中,接收設(shè)備30解析升級(jí)數(shù)據(jù)并將 其存儲(chǔ)在第一存儲(chǔ)器250中。然后,接收設(shè)備30在步驟627中比較該升級(jí) 數(shù)據(jù)與程序的第一版本的數(shù)據(jù),并且獲得升級(jí)數(shù)據(jù)和第一版本的數(shù)據(jù)之間的 差別。接著,接收設(shè)備30在步驟629基于升級(jí)數(shù)據(jù)和第一版本之間的差別 來(lái)產(chǎn)生映射數(shù)據(jù),并且在步驟631和633中將映射數(shù)據(jù)和升級(jí)數(shù)據(jù)安裝在第 一存儲(chǔ)器250的升級(jí)包存儲(chǔ)區(qū)域的相應(yīng)部分內(nèi)。
如果升級(jí)數(shù)據(jù)包括映射數(shù)據(jù),則接收設(shè)備30在步驟625中檢測(cè)映射數(shù) 據(jù)。在這種情況下,可以略去映射數(shù)據(jù)產(chǎn)生進(jìn)程??梢砸詧D3F所示的格式 來(lái)構(gòu)成映射數(shù)據(jù)。如圖3F所示,升級(jí)數(shù)據(jù)由命令串構(gòu)成,該命令串具有命 令以及要根據(jù)該命令處理的塊的索引。由于升級(jí)數(shù)據(jù)包括映射數(shù)據(jù),所以可 以略去映射數(shù)據(jù)產(chǎn)生進(jìn)程。在這種情況下,跳過(guò)步驟627到633。
如上所述,接收設(shè)備30響應(yīng)于升級(jí)通知消息下載升級(jí)包,提取歷史數(shù) 據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù),并且將提取的歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)安 裝在第一存儲(chǔ)器250的相應(yīng)部分中。映射數(shù)據(jù)可以包括在或不包括在升級(jí)包 中。如果在升級(jí)包中不包括映射數(shù)據(jù),則接收設(shè)備30將映射數(shù)據(jù)存儲(chǔ)在第 一存儲(chǔ)器250中,通過(guò)比較升級(jí)數(shù)據(jù)與作為參考版本的第一版本來(lái)生成映射 數(shù)據(jù),以及將映射數(shù)據(jù)安裝在第一存儲(chǔ)器中。如果在升級(jí)包中包括映射數(shù)據(jù), 則可以跳過(guò)映射數(shù)據(jù)產(chǎn)生過(guò)程。
圖24是示出圖22的程序升級(jí)方法的版本升級(jí)進(jìn)程的流程圖。參照?qǐng)D24, 在歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)被安裝在第一存儲(chǔ)器中后,在步驟651中,接收設(shè)備30檢測(cè)開機(jī)事件或升級(jí)請(qǐng)求命令。在接收設(shè)備被初始化之后,接
收設(shè)備30合并最近下載的升級(jí)包與存儲(chǔ)在第一存儲(chǔ)器250中的程序的第一 版本,以使得生成程序的第二版本,并且將其加載到第二存儲(chǔ)器260上,用 于運(yùn)行接收設(shè)備30。.加載到第二存儲(chǔ)器260上的程序可以是系統(tǒng)固件、執(zhí)行 代碼和軟件、以及可以被存儲(chǔ)在非易失性存儲(chǔ)器中的它們的等效物。
如果發(fā)生開機(jī)事件,則在步驟651到655中,接收設(shè)備30執(zhí)行系統(tǒng)初 始化,然后運(yùn)行用于加載程序的第一版本和升級(jí)包的加載器。接著,在步驟 657中,接收設(shè)備30檢查第一存儲(chǔ)器250的升級(jí)包存儲(chǔ)區(qū)域,以確定在第一 存儲(chǔ)器250中是否存儲(chǔ)有至少一個(gè)升級(jí)包。如果未存儲(chǔ)升級(jí)包,則接收設(shè)備 30運(yùn)行用于加載程序的第一版本的翻譯器240(步驟659),并且在步驟661 中執(zhí)行對(duì)于第一程序的安全檢查。接著,在步驟663中,接收設(shè)備30檢查 存儲(chǔ)在第一存儲(chǔ)器250中的第一版本是否被壓縮。如果第一版本^皮壓縮,則 在步驟667中,接收設(shè)備30運(yùn)行解壓縮器(decopressorJ),然后將解壓縮后 的第一版本加載到第二存儲(chǔ)器上。因而,在步驟669中,程序的第一版本在 第二存儲(chǔ)器上運(yùn)行。如果在步驟663中確定第一版本未被壓縮,則跳過(guò)步驟 665,以使得加載第一版本(步驟667)并且在步驟669中在第二存儲(chǔ)器260上 運(yùn)行。
返回到步驟657,如果在第一存儲(chǔ)器250中存儲(chǔ)有至少一個(gè)升級(jí)包,則 接收設(shè)備在步驟671中運(yùn)行翻譯器240,從而在步驟673中翻譯器240將最 新的升級(jí)包加載到第二存儲(chǔ)器260上。安裝在第 一存儲(chǔ)器中的升級(jí)包包括歷 史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)中的至少兩個(gè)。接著,在步驟675中,接收設(shè) 備30運(yùn)行解壓縮器(decopressor—2),因而解壓縮器對(duì)升級(jí)包(或僅對(duì)升級(jí)數(shù)據(jù)) 執(zhí)行解壓縮。接著,接收設(shè)備30在步驟677中執(zhí)行對(duì)解壓縮后的升級(jí)包的 安全檢查,并且在步驟679中確定存儲(chǔ)在第一存儲(chǔ)器250中的第一版本是否 被壓縮。如果第一版本被壓縮,則接收設(shè)備30在步驟681中運(yùn)行解壓縮器 (decopressor—l)以解壓縮第一版本。接著,在步驟683中,接收設(shè)備30合并 第一版本與升級(jí)包,以生成第二版本。結(jié)果,在步驟669,第一版本被加載 以運(yùn)行在第二存儲(chǔ)器260上。在步驟683中,參照映射數(shù)據(jù),升級(jí)數(shù)據(jù)被映 射到第一版本。如果在步驟679中確定程序的第一版本未被壓縮,則跳過(guò)步 驟681。
圖25到31是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)方法的流程圖。在此實(shí)施例中,接收設(shè)備30從升級(jí)包服務(wù)器下載升級(jí)包,將升級(jí) 包安裝在非易失性存儲(chǔ)器內(nèi),通過(guò)合并升級(jí)包和目標(biāo)程序的參考版本來(lái)生成 目標(biāo)程序的升級(jí)版本,并加載升級(jí)版本以在易失性存儲(chǔ)器上運(yùn)行。
圖25是示出根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的程序升級(jí)方法的升級(jí)包 下載和安裝進(jìn)程的流程圖,圖26是示出根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的 程序升級(jí)方法的升級(jí)包翻"^進(jìn)程的流程圖,圖27是示出4艮據(jù)本發(fā)明的另一 個(gè)示范性實(shí)施例的程序升級(jí)方法的升級(jí)包翻譯進(jìn)程的流程圖,圖28是示出 根據(jù)本發(fā)明的另一個(gè)示范性實(shí)施例的程序升級(jí)方法的升級(jí)包翻譯進(jìn)程的流 程圖,圖29是示出根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例的程序升級(jí)方法的升級(jí) 包下載安裝管理進(jìn)程的流程圖,圖30是示出根據(jù)本發(fā)明的另一個(gè)示范性實(shí) 施例的程序升級(jí)方法的升級(jí)包下載管理進(jìn)程的流程圖,圖31是示出根據(jù)本 發(fā)明的一個(gè)示范性實(shí)施例的程序升級(jí)方法的預(yù)留升級(jí)包下載和安裝進(jìn)程的 流程圖。
參照?qǐng)D25到31,如果在步驟701中從升級(jí)包服務(wù)器20接收到升級(jí)包通
如果響應(yīng)于升級(jí)通告消息輸入升級(jí)請(qǐng)求命令,則接收設(shè)備30向升級(jí)包服務(wù) 器20發(fā)送升級(jí)請(qǐng)求消息。在接收到升級(jí)請(qǐng)求消息后,升級(jí)包服務(wù)器20開始 發(fā)送升級(jí)包。在步驟705中,接收設(shè)備30下載升級(jí)包,同時(shí)在顯示屏上顯 示下載狀態(tài)。升級(jí)包被臨時(shí)存儲(chǔ)在易失性存儲(chǔ)器(即第二存儲(chǔ)器)中。如果下 載完成,則在步驟707中,接收設(shè)備30顯示通知下載已完成且詢問(wèn)是否安 裝下載的升級(jí)包的通告消息。
由于下載的升級(jí)包臨時(shí)存儲(chǔ)在易失性存儲(chǔ)器中,因此升級(jí)包優(yōu)選地被安 裝在第一存儲(chǔ)器250(即非易失性存儲(chǔ)器)的第二存儲(chǔ)區(qū)域320中。這是因?yàn)?在接收設(shè)備30被重新啟動(dòng)之后可以使用升級(jí)包。
如果響應(yīng)于通告消息輸入安裝請(qǐng)求命令,則在步驟711中,接收設(shè)備30 檢查包含在升級(jí)包中的安裝數(shù)據(jù)。安裝數(shù)據(jù)包括歷史數(shù)據(jù)和可選映射數(shù)據(jù)。 歷史數(shù)據(jù)具有第二版本和參考版本的標(biāo)識(shí)符,其中包含在升級(jí)包中的升級(jí)數(shù) 據(jù)與參考版本合并。映射數(shù)據(jù)具有命令,命令之后是要根據(jù)該命令處理的塊 的索引。映射數(shù)據(jù)可以被打包到升級(jí)包中也可以不被打包到升級(jí)包中。在步 驟711中,接收設(shè)備30檢查由升級(jí)包表示的程序的版本(在此示例中,程序 從舊版本Vx升級(jí)到新版本Vy)、 CRC以及映射數(shù)據(jù)。如果在步驟713中確定升級(jí)是從Vx到Vy, CRC正常,且映射數(shù)椐存 在,則接收設(shè)備30的安裝器230將升級(jí)包的歷史數(shù)據(jù)安裝在第一存儲(chǔ)器250 的第二存儲(chǔ)區(qū)域320的歷史數(shù)據(jù)存儲(chǔ)部分內(nèi)(步驟715),在步驟717中將升 級(jí)包的映射數(shù)據(jù)存儲(chǔ)在第 一存儲(chǔ)器250的第二存儲(chǔ)區(qū)域320的映射數(shù)據(jù)存儲(chǔ) 部分內(nèi),并且在步驟719中將升級(jí)包的升級(jí)數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)器250的第 二存儲(chǔ)區(qū)域320的升級(jí)數(shù)據(jù)存儲(chǔ)部分內(nèi)。當(dāng)映射數(shù)據(jù)包括升級(jí)數(shù)據(jù)時(shí),安裝 器230跳過(guò)步驟713的存儲(chǔ)升級(jí)數(shù)據(jù)。也就是說(shuō),如果檢測(cè)到安裝請(qǐng)求,則 接收設(shè)備30的安裝器230提取歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù),并將數(shù)據(jù) 安裝在第一存儲(chǔ)器250的第二存儲(chǔ)區(qū)域320的各個(gè)部分內(nèi)。
如果在步驟721中確定程序從Vx升級(jí)到Vy, CRC正常,且不存在映 射數(shù)據(jù),則在步驟723中,接收設(shè)備30將升級(jí)包的歷史數(shù)據(jù)安裝在第一存 儲(chǔ)器250的第二存儲(chǔ)區(qū)域320的相應(yīng)部分中,如圖7到14所示。接著,在 步驟725中,接收設(shè)備30加載存儲(chǔ)在第一存儲(chǔ)器250中的第一版本(Vx), 并且通過(guò)將升級(jí)包的升級(jí)數(shù)據(jù)映射到第 一版本來(lái)生成映射數(shù)據(jù)。第 一版本和 升級(jí)包處于壓縮狀態(tài)。在這種情況下,接收設(shè)備30通過(guò)以塊為單位比較第 一版本和升級(jí)數(shù)據(jù)來(lái)生成映射數(shù)據(jù)。這是因?yàn)樯?jí)數(shù)據(jù)是基于通過(guò)以塊為單 位比較第一版本(Vx)和第二版本(Vx)而獲得的差別來(lái)生成的。因而,當(dāng)在步 驟823中生成映射數(shù)據(jù)時(shí),接收設(shè)備30以塊為單位比較第一版本和升級(jí)數(shù) 據(jù)。接著,接收設(shè)備30將映射數(shù)據(jù)安裝在第一存儲(chǔ)器250的映射數(shù)據(jù)存儲(chǔ) 區(qū)域內(nèi)(步驟727),在步驟729中將升級(jí)數(shù)據(jù)安裝在第一存儲(chǔ)器250的第二 存儲(chǔ)區(qū)域320的升級(jí)數(shù)據(jù)存儲(chǔ)部分內(nèi)。也就是說(shuō),如果檢測(cè)到安裝請(qǐng)求,則 接收設(shè)備30生成映射數(shù)據(jù),然后將歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)安裝在 第一存儲(chǔ)器250的第二存儲(chǔ)區(qū)域320的各個(gè)部分內(nèi)。如果升級(jí)數(shù)據(jù)包括如圖 3F所示的映射數(shù)據(jù),則接收設(shè)備30不用生成映射數(shù)據(jù)就安裝升級(jí)數(shù)據(jù)。也 就是說(shuō),如果升級(jí)數(shù)據(jù)包括具有要在第一和第二版本之間處理的塊的索引的 命令串,則跳過(guò)映射數(shù)據(jù)生成步驟。
升級(jí)包(或升級(jí)數(shù)據(jù))可以以壓縮狀態(tài)被存儲(chǔ),以通過(guò)減小升級(jí)包的量來(lái) 提高第一存儲(chǔ)器250的利用效率。第一存儲(chǔ)器250具有在制造階段安裝的程 序的第一版本或者在以后安裝的作為程序的參考版本。第一存儲(chǔ)器250也具 有用于存儲(chǔ)多個(gè)升級(jí)包的多個(gè)升級(jí)包存儲(chǔ)區(qū)域。因而,新下載的升級(jí)包凈皮存 儲(chǔ)到空升級(jí)包存儲(chǔ)區(qū)域之一中。如果所有升級(jí)包存儲(chǔ)區(qū)域都是滿的,則最老
32的升級(jí)包被刪除,以保證最新的升級(jí)包的空間。這樣,接收設(shè)備30可以保
持最近下載的升級(jí)包。當(dāng)升級(jí)過(guò)程失敗時(shí),可以選擇性地使用這些升級(jí)包,
達(dá)到容錯(cuò)效果。如果在步驟731中完成了升級(jí)包安裝,則在步驟733中,接 收設(shè)備30顯示通告消息,詢問(wèn)是否利用電源重置來(lái)執(zhí)行程序升級(jí)。如果響 應(yīng)于該通告消息輸入電源重置命令,則接收設(shè)備30在圖16的步驟741中執(zhí) 行電源重置操作。
參照?qǐng)D26,如果檢測(cè)到開機(jī)事件,則接收設(shè)備30開啟系統(tǒng)電源并執(zhí)行 系統(tǒng)初始化。系統(tǒng)初始化是硬件重置過(guò)程。在系統(tǒng)初始化后,接收設(shè)備在步 驟743中顯示通告消息,通知程序從Vx變?yōu)閂y,并且在步驟745中利用加 載翻譯后的升級(jí)包來(lái)重新啟動(dòng)系統(tǒng)。也就是說(shuō),接收設(shè)備30的翻譯器240 通過(guò)合并升級(jí)包和第一版本來(lái)生成程序的第二版本,并且將第二版本加載到 第二存儲(chǔ)器260上。
下面將更詳細(xì)地描述第二版本生成過(guò)程。當(dāng)升級(jí)包包括映射lt據(jù)時(shí),可 以以表1到4的形式提供該映射數(shù)據(jù)。如果映射數(shù)據(jù)被格式化如表1、 2和4 所示,則通過(guò)合并升級(jí)包的映射數(shù)據(jù)和程序的第 一版本來(lái)生成程序的第二版 本。
當(dāng)映射數(shù)據(jù)被格式化為如表1 "(C:0,15,F:0, null, null}, (M:16,4F:1, (16-12), (17-13), (18-8), (19-9), 0,0,0,0}, {S:20,5 F:O, (20-4), O)所示時(shí),接收設(shè) 備30存儲(chǔ)由命令C、 M和S之后的塊索引指示的第一版本的塊,作為第二 版本的相應(yīng)塊。在這種情況下,接收i殳備30存儲(chǔ)第一版本的第O到第15塊 成為第二版本的第O到第15塊;放置第一版本的第12、第13、第8和第9 塊成為第二版本的第16到第19塊;并且放置第一版本的第16到第20塊成 為第二版本的第20到第24塊。
當(dāng)映射數(shù)據(jù)被格式化為如表2 "(C:0,15, F:O, null, null}, {M:16,4 F:l, (16-12), (17-13), (18-8), (19-9), 0, code (B,K),code (E,C), 0}, {S:20,5 F:O, (20-4) 0},,時(shí),接收設(shè)備30將由命令C和S之后的塊索引指示的第一版本的塊存 儲(chǔ)為第二版本的相應(yīng)塊,并且使用第一版本的塊和熵編碼的數(shù)據(jù)生成由命令 M之后的塊索引指示的塊。在這種情況下,接收設(shè)備30存儲(chǔ)第一版本的第 O到第15塊成為第二版本的第O到第15塊;放置第一版本的第12塊碼(B,K) 和第9塊碼(E,C)成為第二版本的第16到第19塊;并且放置第一版本的第 16到第20塊成為第二版本的第20到第24塊。這里,碼(B,K)意思是通過(guò)對(duì)
33第一版本的第14塊與第二版本的第17塊之間的差進(jìn)行熵編碼獲得的數(shù)據(jù)。 同樣,碼(E,C)意思是通過(guò)對(duì)第一版本的第8塊與第二版本的第18塊之間的 差進(jìn)行熵編碼獲得的數(shù)據(jù)。
當(dāng)映射數(shù)據(jù)被格式化為如表3 "{C:0,15, F:O, null, null}, {M:16,4 F:2, null, null}, {S:20,5, F:O, (20-4), 0}"時(shí),接收設(shè)備30將由命令C和S之后的塊索 引指示的第一版本的塊存儲(chǔ)為第二版本的相應(yīng)塊,并且通過(guò)檢查塊索引和塊 數(shù)以及基于該索引和塊數(shù)從升級(jí)數(shù)據(jù)中搜索塊來(lái)生成由命令M之后的塊索 引指示的塊。在這種情況下,接收設(shè)備30存儲(chǔ)第一版本的第O到第15塊成 為第二版本的第O到第15塊;從升級(jí)數(shù)據(jù)中搜索第16到第19塊。這里, 第16到第19塊可以由Z、 W、 P和X表示。
當(dāng)升級(jí)包包括歷史數(shù)據(jù)和升級(jí)數(shù)據(jù)而不包括映射數(shù)據(jù)時(shí),接收設(shè)備30 通過(guò)比較升級(jí)數(shù)據(jù)和程序的第一版本來(lái)生成映射數(shù)據(jù)。如果升級(jí)數(shù)據(jù)具有如 表5 "{C:0,6}, {M:6,2,X,Y}, {S:8,3,6}, {S:ll,2,13}, {M:13,5,A,B,C,D,E}, {S:18,7,15},,所示的映射信息,則可以跳過(guò)映射數(shù)據(jù)生成步驟。在這種情況 下,接收設(shè)備30使用升級(jí)數(shù)據(jù)生成程序的第二版本。如果升級(jí)數(shù)據(jù)被提供 為表5的格式,則接收設(shè)備30存儲(chǔ)第一版本的第0到第5塊成為第二版本 的第0到第5塊,放置分別具有數(shù)據(jù)值X和Y的塊成為第二版本的第6和 第7塊,放置第一版本的第6和第8塊成為第二版本的第8和第10塊,放 置第一版本的第13和14塊成為第二版本的第11和12塊,放置分別具有數(shù) 據(jù)值A(chǔ)、 B、 C、 D和E的塊成為第二版本的第13到17塊,放置第一版本 的第15到21塊成為第二版本的第18到24塊。
在升級(jí)包安裝之后的第一個(gè)開機(jī)事件時(shí),在圖26的步驟743中,接收 設(shè)備30在預(yù)定時(shí)間(在該實(shí)施例中為2秒)期間顯示通告消息,通知舊版本 Vx被修改為新版本Vz,通過(guò)將升級(jí)包應(yīng)用于第一版本(即,翻譯)來(lái)生成第 二版本Vz,并將第二版本存儲(chǔ)在第二存儲(chǔ)器260內(nèi)(S745)。因此,在步驟 747中,接收設(shè)備30進(jìn)入空閑才莫式。
如上所述,設(shè)置系統(tǒng)開機(jī)功能,接收設(shè)備30將第一版本和升級(jí)包加載 在第一存儲(chǔ)器250上,并且通過(guò)合并第一版本和升級(jí)包來(lái)生成第二程序,以 使得加載第二版本以在第二存儲(chǔ)器260上運(yùn)行。利用程序的最新版本來(lái)執(zhí)行 程序升級(jí)。接收設(shè)備30加載第一版本和升級(jí)包,通過(guò)合并第一版本和升級(jí) 包來(lái)生成第二版本,以及加載第二版本以在第二存儲(chǔ)器260上運(yùn)行,如圖26所示。
如果利用最新升級(jí)包的程序升級(jí)失敗,則可以重試?yán)冒惭b在第一存儲(chǔ) 器250中的另一個(gè)升級(jí)包來(lái)進(jìn)行程序升級(jí)。在此實(shí)施例中,接收設(shè)備30可 以將多個(gè)升級(jí)包安裝在非易失性存儲(chǔ)器中,在系統(tǒng)初始化過(guò)程中利用最新的 升級(jí)包或者由用戶選擇的升級(jí)包之一來(lái)升級(jí)程序的第一版本,并將第二版本 加載到易失性存儲(chǔ)器上。在此實(shí)施例中,盡管利用一個(gè)升級(jí)包的程序升級(jí)失
敗,但是可以利用程序的先前版本執(zhí)行系統(tǒng)啟動(dòng)。因而,如果在步驟753中 發(fā)現(xiàn)最新的升級(jí)包錯(cuò)誤,(圖27描述了例如,最新升級(jí)包的版本號(hào)是V弁5), 在步驟755中,接收設(shè)備30顯示通告消息,詢問(wèn)是否選擇另一個(gè)升級(jí)包。
如果由用戶響應(yīng)于該通告消息輸入了版本選擇命令,則在步驟757中, 接收設(shè)備30顯示可用的升級(jí)包的版本號(hào)的列表(例如,#2, #3和#4)。如 果在步驟759中輸入了選擇命令以選擇版本號(hào)之一,則接收設(shè)備30加載所 選擇的版本號(hào)的升級(jí)包(步驟761),并且在步驟763中通過(guò)合并所選擇的升 級(jí)包與程序的第一版本來(lái)生成第二版本。加載第二版本以在第二存儲(chǔ)器260 上運(yùn)行,從而控制接收設(shè)備30的一般操作。在第二版本被加載到第二存儲(chǔ) 器260上之后,接收設(shè)備進(jìn)入空閑模式(S765)。
如果在預(yù)定時(shí)間沒(méi)有輸入版本選擇命令,則在步驟767和769中,接收 設(shè)備30加載最新的升級(jí)包(在此示例中,該升級(jí)包具有版本號(hào)#4),以替換 失敗的升級(jí)包(版本號(hào)#5),并在步驟771中通過(guò)合并版本號(hào)#4的升級(jí)包與 第一版本來(lái)生成程序的第二版本以及將第二版本加載到第二存儲(chǔ)器上。在加 載第二版本之后,接收設(shè)備30進(jìn)入空閑模式。也就是說(shuō),如果沒(méi)有設(shè)置用 戶指定版本選擇功能并且最新的升級(jí)包升級(jí)程序失敗,則接收設(shè)備30嘗試 通過(guò)合并次最新的升級(jí)包與第一版本來(lái)生成第二版本。
參照?qǐng)D28,如果在步驟781和783中發(fā)現(xiàn)安裝在第一存儲(chǔ)器250中的所 有升級(jí)包都是錯(cuò)誤的,則在步驟785到789中,接收設(shè)備30將安裝在第一 存儲(chǔ)器250中的程序的第一版本加載到第二存儲(chǔ)器上,以使得第一版本運(yùn)行 來(lái)控制接收設(shè)備30的操作和功能。在將系統(tǒng)的第一版本加載到第二存儲(chǔ)器 260上后,在步驟791中接收設(shè)備30進(jìn)入空閑模式。
如果在顯示通告消息詢問(wèn)是否下載升級(jí)包或是否將下載的升級(jí)包安裝 在第一存儲(chǔ)器250內(nèi)時(shí)未輸入用戶命令,則接收設(shè)備30在步驟821中設(shè)置 用于在下一啟動(dòng)時(shí)間時(shí)通知未完成的過(guò)程的通告功能(圖29),并且在步驟
35823中進(jìn)入空閑模式。也就是說(shuō),如果用戶沒(méi)有輸入用于下載或安裝升級(jí)包 的命令,則接收設(shè)備30設(shè)置未完成過(guò)程通告功能并且然后進(jìn)入空閑模式。 因而,如果系統(tǒng)被重新啟動(dòng),則接收設(shè)備30顯示通告消息,詢問(wèn)是否重新 開始下載或安裝該升級(jí)包。
如果在安裝升級(jí)包之后顯示詢問(wèn)是否翻譯升級(jí)包的通告消息并且未輸 入翻譯請(qǐng)求命令,則接收設(shè)備30在步驟831中設(shè)置在下一啟動(dòng)時(shí)間應(yīng)用安 裝的升級(jí)包,并且在步驟833中進(jìn)入空閑模式。如果在步驟835中在空閑模 式下執(zhí)行系統(tǒng)初始化,則接收設(shè)備30開始使用安裝在第一存儲(chǔ)器250中的 最新升級(jí)包來(lái)升級(jí)程序。如果在利用最新升級(jí)包升級(jí)程序之后不執(zhí)行翻譯過(guò) 程,則接收設(shè)備在系統(tǒng)開機(jī)時(shí)使用最新的升級(jí)包升級(jí)程序。
當(dāng)新發(fā)布的升級(jí)包未被下載、被下載但是未被安裝、或者安裝但是未被 翻譯時(shí),接收設(shè)備30顯示通告消息,詢問(wèn)是否下載新發(fā)布的升級(jí)包,是否 安裝被下載但是未被安裝的升級(jí)包,或者是否翻譯被安裝但是未被翻譯的升 級(jí)包。參照?qǐng)D31,如果在步驟803中發(fā)生了開機(jī)事件,則在步驟805中接收 設(shè)備30被開啟并初始化以啟動(dòng)該系統(tǒng)程序。在啟動(dòng)過(guò)程期間,接收設(shè)備30 從第一存儲(chǔ)器250加載最新的升級(jí)包,并且利用最新的升級(jí)包升級(jí)系統(tǒng)程序。 也就是說(shuō),在系統(tǒng)被重新啟動(dòng)之后剩余的升級(jí)過(guò)程被重新啟動(dòng)。在升級(jí)后的 系統(tǒng)被啟動(dòng)之后,在步驟807中接收設(shè)備30進(jìn)入空閑模式。在空閑模式下, 在步驟809中,接收設(shè)備30確定下載的升級(jí)包是否在先前的開機(jī)狀態(tài)下被 跳過(guò)。如果存在未被下載或者未完全下載的升級(jí)包,則在步驟811中,接收 設(shè)備30顯示通告消息,詢問(wèn)是否下載升級(jí)包。如果響應(yīng)于通告消息輸入下 載請(qǐng)求命令,則接收設(shè)備30執(zhí)行圖25的步驟S705中的下載進(jìn)程。如果沒(méi) 有輸入下載請(qǐng)求命令,則接收設(shè)備30在圖29的步驟821中設(shè)置剩余下載通 告選項(xiàng),以4吏得通告消息在下一啟動(dòng)時(shí)間詢問(wèn)是否重新開始下載升級(jí)包。如 果不存在剩余下載的升級(jí)包,則在步驟813中接收設(shè)備30確定是否存在被 下載但是未被安裝的升級(jí)包。如果存在剩余安裝的升級(jí)包,則在步驟815中 接收設(shè)備30顯示通告消息,詢問(wèn)是否安裝剩余安裝的升級(jí)包。如果響應(yīng)于 該通告消息輸入安裝請(qǐng)求命令,則接收設(shè)備30執(zhí)行圖25的步驟701中的安 裝過(guò)程。另一方面,如果未輸入安裝請(qǐng)求命令,則接收設(shè)備30在圖29的步 驟821中設(shè)置剩余安裝通告選項(xiàng)。
如上所述,接收設(shè)備30包括作為非易失性存儲(chǔ)器的第一存儲(chǔ)器250,第
36一存儲(chǔ)器250存儲(chǔ)程序的第一版本。第一版本可以是在接收設(shè)備30的制造 階段安裝的初始版本。只要下載了新的升級(jí)包,接收設(shè)備30就安裝升級(jí)包。 第一存儲(chǔ)器250被提供有多個(gè)存儲(chǔ)區(qū)域,以保證安裝升級(jí)包。升級(jí)包提供程 序的更新后的版本。升級(jí)包保護(hù)第一版本的數(shù)據(jù)和升級(jí)數(shù)據(jù),或者包括代表 程序的兩個(gè)版本之間的差別的升級(jí)數(shù)據(jù)。在此實(shí)施例中,升級(jí)包包括代表兩 個(gè)版本之間的差別的升級(jí)數(shù)據(jù)。
在此實(shí)施例中,接收設(shè)備包括作為易失性存儲(chǔ)器的第二存儲(chǔ)器260。第 二存儲(chǔ)器260優(yōu)選地為接收設(shè)備的工作存儲(chǔ)器。接收設(shè)備30在系統(tǒng)開機(jī)時(shí) 被初始化。在程序啟動(dòng)過(guò)程期間,程序的第一版本和最新升級(jí)包都被加載從 而被合并,以使得生成程序的第二版本并且加載到第二存儲(chǔ)器260上。因而, 接收設(shè)備30利用加載到第二存儲(chǔ)器260上的程序的第二版本工作。
在此實(shí)施例中,下載、安裝和翻譯過(guò)程可以在相應(yīng)事件發(fā)生時(shí)或者在系 統(tǒng)凈皮重新啟動(dòng)之后立即^皮執(zhí)行。
參照?qǐng)D32,移動(dòng)終端包括控制單元900、射頻(RF)單元930、顯示單元 950、鍵輸入單元940、通信接口單元960、第一存儲(chǔ)器250和第二存儲(chǔ)器260。 RF單元930負(fù)責(zé)移動(dòng)終端的無(wú)線通信。RF單元930包括用于對(duì)要祐義送的 信號(hào)執(zhí)行上變頻轉(zhuǎn)換和放大的RF發(fā)射器以及用于對(duì)接收到的信號(hào)執(zhí)行低噪 聲放大和下變頻轉(zhuǎn)換的RF接收器。
鍵輸入單元940被提供有多個(gè)字母數(shù)字鍵和各種功能鍵。
第一存儲(chǔ)器250是非易失性存儲(chǔ)器,并且包括用于存儲(chǔ)程序的第一版本 的第一區(qū)域和用于存儲(chǔ)至少一個(gè)升級(jí)包的第二版本。程序可以是操作固件或 軟件,程序的第一版本在制造階賴:被安裝。升級(jí)包是由程序的第一版本和新 版本之間的差別而獲得的數(shù)據(jù)包。升級(jí)包包括要被用來(lái)修改第 一版本的升級(jí) 數(shù)據(jù)和包括歷史數(shù)據(jù)和映射數(shù)據(jù)的安裝數(shù)據(jù)。映射數(shù)據(jù)可以被提供有升級(jí)數(shù) 據(jù)。在這種情況下,升級(jí)包包括歷史數(shù)據(jù)和映射數(shù)據(jù)。同樣,升級(jí)數(shù)據(jù)可以 被提供有映射數(shù)據(jù)。在這種情況下,升級(jí)包包括升級(jí)數(shù)據(jù)和歷史數(shù)據(jù)。第一 存儲(chǔ)器250的第二區(qū)域被提供有用于存儲(chǔ)各個(gè)升級(jí)包的存儲(chǔ)部分。
第二存儲(chǔ)器260是作為移動(dòng)終端的工作存儲(chǔ)器的易失性存儲(chǔ)器。第二存 儲(chǔ)器260在系統(tǒng)重新啟動(dòng)時(shí)加載通過(guò)將存儲(chǔ)在第一存儲(chǔ)器250的第一區(qū)域中 的第 一版本和存儲(chǔ)在第 一存儲(chǔ)器250的第二區(qū)域中的最新的升級(jí)包進(jìn)行合并 而生成的程序的第二版本??刂茊卧?00控制移動(dòng)終端的總體操作??刂茊卧?00優(yōu)選地被提供有 用于編碼和解碼信號(hào)的編解碼器以及用于調(diào)制和解調(diào)信號(hào)的調(diào)制解調(diào)器。如 果移動(dòng)終端是移動(dòng)電話機(jī),則控制單元900優(yōu)選地為合并有數(shù)據(jù)和音頻處理 功能的移動(dòng)站調(diào)制解調(diào)器(MSM)芯片。音頻和數(shù)據(jù)處理功能可以可替換地^皮 分開實(shí)現(xiàn)。在此實(shí)施例中,控制單元900包括用于從升級(jí)包服務(wù)器20下載 升級(jí)包的下載器、用于將下載的升級(jí)包安裝在第一存儲(chǔ)器250的第二區(qū)域的 存儲(chǔ)部分內(nèi)的安裝器、以及用于通過(guò)將第一版本與升級(jí)包合并來(lái)生成程序的 升級(jí)版本并將升級(jí)版本加載到第二存儲(chǔ)器260上的翻譯器。
顯示單元950在控制單元900的控制下顯示移動(dòng)終端輸出的各種數(shù)據(jù)。 顯示單元950可以被實(shí)現(xiàn)為具有液晶顯示器(LCD)。在這種情況下,顯示單 元950被提供有LCD控制器、用于存儲(chǔ)顯示數(shù)據(jù)的存儲(chǔ)器、以及LCD設(shè)備。 利用觸摸屏功能,LCD顯示單元950包括輸入功能。
通信接口單元960連接到控制單元900,并且提供諸如通用串行總線 (USB)端口的有線連接接口 、諸如藍(lán)牙和IrDA端口的短距離無(wú)線通信接口 、 或者諸如WiBro、 Wi-Fi和WiMAX卡的無(wú)線IP網(wǎng)絡(luò)接口 。
下面將描述上述結(jié)構(gòu)的移動(dòng)終端的升級(jí)包管理操作。移動(dòng)終端的控制單 元900可以使用RF單元930與基站進(jìn)行通信?;究梢允荂DMA、 UMTS 或GSM系統(tǒng),并且通過(guò)至少一個(gè)通信網(wǎng)絡(luò)連接到升級(jí)包服務(wù)器20。同樣, 移動(dòng)終端可以使用通信接口單元960通過(guò)互聯(lián)網(wǎng)訪問(wèn)升級(jí)包服務(wù)器20。如果 從升級(jí)包服務(wù)器20接收到升級(jí)包發(fā)布通知消息,則移動(dòng)終端的控制單元900 控制RF單元930從升級(jí)包服務(wù)器20下載升級(jí)包。該升級(jí)包以適合于諸如 CDMA、 UMTS和GSM系統(tǒng)的無(wú)線通信系統(tǒng)的無(wú)線傳輸格式在空中凈皮傳輸。 下載的升級(jí)包在控制單元900的控制下臨時(shí)存儲(chǔ)在第二存儲(chǔ)器260。
由于第二存儲(chǔ)器260是易失性存儲(chǔ)器,因此升級(jí)包應(yīng)當(dāng)被安裝在作為非 易失性存儲(chǔ)器的第一存儲(chǔ)器250中,以使得升級(jí)包可以被保留以便以后使用。 控制單元900也控制顯示單元950顯示升級(jí)包的下載狀態(tài)和詢問(wèn)是否安裝下 載的升級(jí)包的通告消息。如果響應(yīng)于該通告消息輸入安裝請(qǐng)求命令,則控制 單元900將升級(jí)包安裝在第一存儲(chǔ)器的第二區(qū)域的空的存儲(chǔ)部分中。如果沒(méi) 有空的部分,則存儲(chǔ)在第一存儲(chǔ)器250的第二區(qū)域中的最舊的升級(jí)包被刪除, 以提供空間存儲(chǔ)最新的升級(jí)包。升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù),安裝數(shù)據(jù) 包括歷史數(shù)據(jù)和映射數(shù)據(jù)。映射數(shù)據(jù)可以不被打包在升級(jí)包中。因而,移動(dòng)終端的控制單元900分析升級(jí)包以確定是否包括映射數(shù)據(jù)。如果升級(jí)包缺少
映射數(shù)據(jù),則控制單元900通過(guò)比較升級(jí)包和程序的第一版本來(lái)生成映射數(shù) 據(jù)并安裝以這樣的方式生成的映射數(shù)據(jù)。當(dāng)升級(jí)包缺少顯式映射數(shù)據(jù)而升級(jí) 數(shù)據(jù)具有映射信息時(shí),安裝器230跳過(guò)映射數(shù)據(jù)生成步驟,并且將升級(jí)數(shù)據(jù) 和歷史數(shù)據(jù)安裝在第一存儲(chǔ)器250的第二區(qū)域的相應(yīng)存儲(chǔ)部分內(nèi)。當(dāng)升級(jí)數(shù) 據(jù)未被明確打包在升級(jí)包中但是映射數(shù)據(jù)隱含地具有升級(jí)數(shù)據(jù)時(shí),安裝器 230將歷史數(shù)據(jù)和映射數(shù)據(jù)安裝在第一存儲(chǔ)器250的第二區(qū)域的相應(yīng)存儲(chǔ)部 分內(nèi)。
如果在預(yù)定時(shí)間內(nèi)未檢測(cè)到安裝請(qǐng)求命令,則移動(dòng)終端的控制單元900 設(shè)置不完全安裝通告選項(xiàng),以便在下次啟動(dòng)時(shí)顯示詢問(wèn)是否重新啟動(dòng)升級(jí)包 的安裝的通告消息。如果響應(yīng)于通告消息輸入了安裝請(qǐng)求命令,則控制單元 900控制開始將升級(jí)包安裝在第一存儲(chǔ)器250內(nèi)。如果升級(jí)包未被存儲(chǔ),則 控制單元900控制從升級(jí)包服務(wù)器20下載升級(jí)包,然后將下載的升級(jí)包安 裝在第一存^fi者器250內(nèi)。如果未請(qǐng)求安裝下載的升級(jí)包,則控制單元900再 次設(shè)置不完全安裝通告選項(xiàng),用于在下次啟動(dòng)時(shí)通知升級(jí)包的不完全安裝。
在被安裝到第一存儲(chǔ)器250中后,升級(jí)包可以被永久存儲(chǔ)。在系統(tǒng)初始 化過(guò)程期間,控制單元900從第一存儲(chǔ)器250加載程序的第一版本和最新的 升級(jí)包,并且通過(guò)將升級(jí)包映射到第一版本來(lái)生成程序的第二版本,以使得 第二版本被加載到第二存儲(chǔ)器260上。在加載最新的升級(jí)包之后,控制單元 900分析升級(jí)包的歷史數(shù)據(jù),以檢查要被合并的程序的舊版本和新版本的版 本號(hào),并合并升級(jí)包和舊版本(即,第一版本)以使得生成新版本(即,第二版 本)并且加載到第二存儲(chǔ)器260上。因而移動(dòng)終端利用程序的最新版本工作。
930來(lái)執(zhí)行。也就是說(shuō),移動(dòng)終端可以通過(guò)USB端口或短距離無(wú)線通信鏈路 來(lái)連接到諸如個(gè)人接收機(jī)(PC)的外部設(shè)備,用于接收由PC下載的升級(jí)包。 控制單元900可以通過(guò)上述下載、安裝和翻譯過(guò)程來(lái)升級(jí)程序。
如上所述,用于能夠OTA的設(shè)備的程序升級(jí)系統(tǒng)和方法利用基于程序 的參考版本和新版本之間的差別而生成的升級(jí)包來(lái)執(zhí)行升級(jí),由此能夠減少 包生成下載時(shí)間。同樣,用于能夠OTA的設(shè)備的程序升級(jí)系統(tǒng)和方法將下 載的升級(jí)包安裝在非易失性存儲(chǔ)器的單獨(dú)的存儲(chǔ)區(qū)域內(nèi),并且通過(guò)合并易失 性存儲(chǔ)器內(nèi)的程序的參考版本和升級(jí)包之一來(lái)生成升級(jí)后的版本,達(dá)到穩(wěn)定
39的程序升級(jí)和容^^晉效果。
盡管上面詳細(xì)描述了本發(fā)明的示范性實(shí)施例,但是應(yīng)當(dāng)清楚地理解,對(duì) 本領(lǐng)域技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的那些對(duì)這里教導(dǎo)的基本發(fā)明構(gòu)思的變化 和修改將仍然落入由所附權(quán)利要求所限定的本發(fā)明的精神和范圍之內(nèi)。
權(quán)利要求
1、一種利用程序工作的移動(dòng)終端的程序升級(jí)裝置,該裝置包括第一存儲(chǔ)器,用于存儲(chǔ)程序的參考版本和至少一個(gè)升級(jí)包;第二存儲(chǔ)器,用于加載程序的升級(jí)版本;通信單元,用于使得移動(dòng)終端能夠與外部系統(tǒng)通信;以及控制單元,用于響應(yīng)于來(lái)自外部系統(tǒng)的升級(jí)通知消息來(lái)控制通信單元下載升級(jí)包,將升級(jí)包安裝在第一存儲(chǔ)器內(nèi),通過(guò)合并該升級(jí)包和程序的參考版本來(lái)生成程序的升級(jí)版本,以及利用程序的升級(jí)后的版本操作該移動(dòng)終端。
2、 如權(quán)利要求1所述的程序升級(jí)裝置,其中,該升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù),其中該升級(jí)數(shù)據(jù)是基于程序的參考版本和升級(jí)版本之間的差別生成的,該安裝數(shù)據(jù)提供用于合并升級(jí)數(shù)據(jù)和程序的參考版本的信息。
3、 如權(quán)利要求2所述的程序升級(jí)裝置,其中,該安裝數(shù)據(jù)包括歷史數(shù)據(jù),包括由該升級(jí)包代表的升級(jí)版本和程序的參考版本的版本標(biāo)識(shí)符;以及映射數(shù)據(jù),用于將升級(jí)數(shù)據(jù)映射到程序的參考版本。
4、 如權(quán)利要求3所述的程序升級(jí)裝置,其中,該程序的參考版本包括至少兩個(gè)數(shù)據(jù)塊,該映射數(shù)據(jù)包括命令和要根據(jù)該命令處理的塊的索引。
5、 如權(quán)利要求4所述的程序升級(jí)裝置,其中,該命令包括復(fù)制命令、移動(dòng)命令和修改命令,該由索引指示的塊是升級(jí)數(shù)據(jù)。
6、、如權(quán)利要求1所述的程序升級(jí)裝置,其中,該第一存儲(chǔ)器包括第一區(qū)域,用于存儲(chǔ)該程序的參考版本;以及第二區(qū)域,用于存儲(chǔ)至少一個(gè)升級(jí)包。
7、 如權(quán)利要求6所述的程序升級(jí)裝置,其中,該升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù),其中該升級(jí)數(shù)據(jù)是基于程序的參考版本和升級(jí)版本之間的差別生成的,該安裝數(shù)據(jù)提供用于合并升級(jí)數(shù)據(jù)和該參考版本的信息。
8、 如權(quán)利要求7所述的程序升級(jí)裝置,其中,該安裝數(shù)據(jù)包括歷史數(shù)據(jù),包括由該升級(jí)包代表的升級(jí)版本和程序的參考版本的版本標(biāo)識(shí)符;以及映射數(shù)據(jù),用于將升級(jí)數(shù)據(jù)映射到程序的參考版本。
9、 如權(quán)利要求8所述的程序升級(jí)裝置,其中,該控制單元在被外部系統(tǒng)通知時(shí)下載升級(jí)包,將升級(jí)包安裝在該第一存儲(chǔ)器的第二區(qū)域中,從第一存儲(chǔ)器加載參考版本和升級(jí)包,通過(guò)合并該參考版本和升級(jí)包來(lái)生成升級(jí)版本,將程序的升級(jí)版本加載到第二存儲(chǔ)器上,以及利用該程序的升級(jí)版本來(lái)操作移動(dòng)終端。
10、 如權(quán)利要求9所述的程序升級(jí)裝置,其中,該控制單元檢查該升級(jí)包是否具有映射數(shù)據(jù);如果該升級(jí)包不具有映射數(shù)據(jù),則通過(guò)比較參考版本和升級(jí)數(shù)據(jù)來(lái)生成映射數(shù)據(jù);以及將歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi)。
11、 如權(quán)利要求10所述的程序升級(jí)裝置,其中,該程序的參考版本是在制造階段安裝的系統(tǒng)固件或軟件。
12、 一種用于利用程序工作的移動(dòng)終端的程序升級(jí)方法,該方法包括從外部系統(tǒng)下載程序的升級(jí)包;將升級(jí)包安裝在第 一存儲(chǔ)器內(nèi);響應(yīng)于升級(jí)請(qǐng)求加載該程序的參考版本和升級(jí)包;通過(guò)合并該程序的參考版本和升級(jí)包來(lái)生成程序的升級(jí)版本;將該程序的升級(jí)版本加載到第二存儲(chǔ)器中;以及利用該程序的升級(jí)版本^t喿作該移動(dòng)終端。
13、 如權(quán)利要求12所述的程序升級(jí)方法,其中,該程序的參考版本存儲(chǔ)在第 一存儲(chǔ)器的第 一 區(qū)域中,該升級(jí)包存儲(chǔ)在第 一存儲(chǔ)器的第二區(qū)域中,該第二區(qū)域具有多個(gè)存儲(chǔ)區(qū)域。
14、 如權(quán)利要求13所述的程序升級(jí)方法,其中,該升級(jí)包包括升級(jí)數(shù)據(jù)、歷史數(shù)據(jù)和映射數(shù)據(jù),其中該升級(jí)數(shù)據(jù)是基于程序的參考版本和升級(jí)版本之間的差別生成的,該歷史數(shù)據(jù)包括由該升級(jí)包代表的升級(jí)版本和程序的參考版本的版本標(biāo)識(shí)符,該映射數(shù)據(jù)用于將升級(jí)數(shù)據(jù)映射到程序的參考版本。
15、 如權(quán)利要求14所述的程序升級(jí)方法,其中,該映射數(shù)據(jù)包括復(fù)制、移動(dòng)和修改命令以及要根據(jù)該命令處理的塊的索引,并且該由索引指示的塊是升級(jí)數(shù)據(jù)。
16、 如權(quán)利要求14所述的程序升級(jí)方法,其中,所述安裝升級(jí)包包括從升級(jí)包中提取歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù);以及將該歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)安裝在第一存儲(chǔ)器的第二區(qū)域的各個(gè)存儲(chǔ)部分內(nèi)。
17、 如權(quán)利要求14所述的程序升級(jí)方法,其中,所述安裝升級(jí)包包括由該升級(jí)包生成歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù);以及將該歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù)安裝在第一存儲(chǔ)器的第二區(qū)域的各個(gè)存儲(chǔ)部分內(nèi)。
18、 如權(quán)利要求14所述的程序升級(jí)方法,其中,所述安裝升級(jí)包包括將歷史數(shù)據(jù)安裝在第 一存儲(chǔ)器的第二區(qū)域內(nèi);確定在該升級(jí)包內(nèi)是否包括映射數(shù)據(jù);如果該升級(jí)包具有映射數(shù)據(jù),則將映射數(shù)據(jù)安裝在第 一存儲(chǔ)器的第二區(qū)域內(nèi);如果升級(jí)包不具有映射數(shù)據(jù),則基于升級(jí)數(shù)據(jù)中提供的映射信息生成映射數(shù)據(jù),并且將映射數(shù)據(jù)安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi);以及將升級(jí)數(shù)據(jù)安裝在第 一存儲(chǔ)器的第二區(qū)域內(nèi)。
19、 如權(quán)利要求13所述的程序升級(jí)方法,其中,所述生成升級(jí)版本包括加載安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi)的升級(jí)包;以及合并升級(jí)包的升級(jí)數(shù)據(jù)與程序的參考版本。
20、 如權(quán)利要求19所述的程序升級(jí)方法,其中,該升級(jí)包是程序的最新片反本的包。
21、 如權(quán)利要求20所述的程序升級(jí)方法,其中,該第一存儲(chǔ)器是非易失性存儲(chǔ)器,該第二存儲(chǔ)器是易失性存儲(chǔ)器。
22、 如權(quán)利要求21所述的程序升級(jí)方法,其中,該升級(jí)請(qǐng)求是由系統(tǒng)初始化事件生成的。
23、 如權(quán)利要求21所述的程序升級(jí)方法,其中,該升級(jí)請(qǐng)求是在升級(jí)包被完全安裝后由用戶輸入生成的。
24、 如權(quán)利要求21所述的程序升級(jí)方法,其中,所述生成程序的升級(jí)版本包括基于歷史數(shù)據(jù)確定要被升級(jí)的程序的參考版本;以及通過(guò)基于升級(jí)包的映射數(shù)據(jù)將升級(jí)包的升級(jí)數(shù)據(jù)映射到程序的參考版本來(lái)創(chuàng)建程序的升級(jí)版本。
25、 一種利用程序工作的移動(dòng)終端的程序升級(jí)裝置,該裝置包括第 一存儲(chǔ)器,具有用于存儲(chǔ)程序的參考版本的第 一 區(qū)域和用于存儲(chǔ)至少一個(gè)升級(jí)包的至少一個(gè)第二區(qū)域;第二存儲(chǔ)器,用于存儲(chǔ)程序的升級(jí)后的版本;下載器,用于從外部系統(tǒng)下載升級(jí)包;安裝器,用于將由下載器下載的升級(jí)包安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi);以及翻譯器,用于從第一存儲(chǔ)器加載升級(jí)包和程序的參考版本,通過(guò)合并升級(jí)包和程序的參考版本來(lái)生成程序的升級(jí)后的版本,以及將程序的升級(jí)后的版本存儲(chǔ)在第二存儲(chǔ)器中。
26、 如權(quán)利要求25所述的程序升級(jí)裝置,其中,該第一存儲(chǔ)器是非易失性存儲(chǔ)器,該第二存儲(chǔ)器是易失性存儲(chǔ)器。
27、 如權(quán)利要求26所迷的程序升級(jí)裝置,其中,該升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù),其中該升級(jí)數(shù)據(jù)是基于程序的參考版本和升級(jí)版本之間的差別生成的,該安裝數(shù)據(jù)提供用于合并升級(jí)數(shù)據(jù)和程序的參考版本的信息,以及該安裝器從升級(jí)包提取歷史數(shù)據(jù)、映射數(shù)據(jù)和升級(jí)數(shù)據(jù),以安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi)。
28、如權(quán)利要求26所迷的程序升級(jí)裝置,其中,該升級(jí)包包括升級(jí)數(shù)據(jù)和安裝數(shù)據(jù),其中該升級(jí)數(shù)據(jù)是基于程序的參考版本和升級(jí)版本之間的差別生成的,該安裝數(shù)據(jù)提供用于合并升級(jí)數(shù)據(jù)和程序的參考版本的信息,以及該安裝器將從升級(jí)包提取的歷史數(shù)據(jù)安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi),由該升級(jí)數(shù)據(jù)生成用于將升級(jí)數(shù)據(jù)映射到參考版本的映射數(shù)據(jù),將映射數(shù)據(jù)安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi),以及將升級(jí)數(shù)據(jù)安裝在第一存儲(chǔ)器的第二區(qū)域內(nèi)。
29、 如權(quán)利要求27所迷的程序升級(jí)裝置,其中,該翻譯器通過(guò)基于映射數(shù)據(jù)合并升級(jí)數(shù)據(jù)與程序的參考版本來(lái)生成程序的升級(jí)后的版本,并且將升級(jí)后的版本存儲(chǔ)在第二存儲(chǔ)器中。
30、 如權(quán)利要求29所述的程序升級(jí)裝置,其中,該升級(jí)請(qǐng)求是通過(guò)系統(tǒng)初始化事件生成的。
31、 一種移動(dòng)終端的程序升級(jí)裝置,包括第一存儲(chǔ)器,具有用于存儲(chǔ)系統(tǒng)程序的參考版本和至少一個(gè)升級(jí)包的存儲(chǔ)區(qū)域;第二存儲(chǔ)器,用于存儲(chǔ)系統(tǒng)程序的升級(jí)版本;通信單元,用于佳_得移動(dòng)終端能夠與外部系統(tǒng)通信;以及控制單元,用于控制通信單元以通過(guò)該通信單元從外部系統(tǒng)下載升級(jí)包,控制該第一存儲(chǔ)器存儲(chǔ)下栽的升級(jí)包,以及響應(yīng)于安裝命令通過(guò)合并該升級(jí)包和參考版本來(lái)生成系統(tǒng)程序的升級(jí)后的版本并且將升級(jí)版本存儲(chǔ)在第二存儲(chǔ)器上,以及利用程序的升級(jí)后的版本才喿作該移動(dòng)終端。
全文摘要
提供了一種用于更新使用空中下載(OTA)編程機(jī)制的移動(dòng)終端的程序的裝置和方法。該程序升級(jí)裝置包括第一存儲(chǔ)器,用于存儲(chǔ)程序的參考版本和至少一個(gè)升級(jí)包;第二存儲(chǔ)器,用于加載程序的升級(jí)版本;通信單元,用于使得移動(dòng)終端能夠與外部系統(tǒng)通信;以及控制單元,用于響應(yīng)于來(lái)自外部系統(tǒng)的升級(jí)通知消息來(lái)控制通信單元下載升級(jí)包,將升級(jí)包安裝在第一存儲(chǔ)器內(nèi),響應(yīng)于安裝命令通過(guò)合并該升級(jí)包和程序的參考版本來(lái)生成程序的升級(jí)版本,以及利用程序的升級(jí)后的版本操作該移動(dòng)終端。
文檔編號(hào)G06F9/44GK101467129SQ200780022107
公開日2009年6月24日 申請(qǐng)日期2007年7月13日 優(yōu)先權(quán)日2006年7月14日
發(fā)明者吳成祚 申請(qǐng)人:三星電子株式會(huì)社