專利名稱:一種升級軟件版本的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件升級技術(shù),特別是指一種升級軟件版本的方法。
背景技術(shù):
隨著科學(xué)技術(shù)的發(fā)展,各種手持設(shè)備已逐漸成為人們生活、工作中不可缺少的一部分,如手機、個人數(shù)字助理(PDA)等。為了不斷滿足人們的需要,制造商也在不斷開發(fā)和更新手持設(shè)備.而同時,由于制造商推出產(chǎn)品的周期也越來越短,當(dāng)產(chǎn)品上市時,經(jīng)常會有一些缺陷或者不盡人意之處.因此,隨著技術(shù)的日趨完善,售出產(chǎn)品也需要不斷的升級,其升級過程往往是一個軟件版本升級過程.這里,軟件版本是指軟件每一次升級,所有功能都集合成一個文件,以二進制形式存在,配合相應(yīng)硬件設(shè)備,共同實現(xiàn)相關(guān)功能。由于軟件可能存在錯誤,在不修改硬件的前提下,經(jīng)常會出現(xiàn)軟件版本升級的情況.
對于軟件來說,通常將整體軟件根據(jù)功能的不同,存儲在不同的只讀存儲器(ROM)空間,軟件存儲區(qū)的劃分使得整體軟件依賴物理存儲而分開,從而實現(xiàn)了升級部分軟件功能.以手持設(shè)備軟件存儲區(qū)為例,一般軟件存儲區(qū)的劃分如圖I所示,圖1中的軟件存儲區(qū)分為四個部分Boot存儲區(qū)、App可執(zhí)行文件區(qū)、文件系統(tǒng)區(qū)和保留的專用數(shù)據(jù)存儲區(qū)。各個部分的功能如下
Boot存儲區(qū)存儲的是Boot軟件,Boot軟件是整個軟件的引導(dǎo),有三個功能
1、軟件啟動時,引導(dǎo)軟件的啟動過程;
2、軟件升級時,通過計算機(PC)端的相關(guān)軟件與PC建立通信,并把PC上的App代碼下載到手持設(shè)備中;
3、在App軟件損壞時,引導(dǎo)重新加載App的可執(zhí)行二進制文件到“App可執(zhí)行文件區(qū)”。App可執(zhí)行文件區(qū),用于存儲軟件運行程序。文件系統(tǒng)區(qū),用于存儲文件,如攝像頭獲取的圖片文件、通過網(wǎng)絡(luò)獲取的MP3文件寸。保留的專用數(shù)據(jù)存儲區(qū),用于保留一些關(guān)健參數(shù),包括某些參數(shù)的備份。通常所說的軟件升級,主要是指升級App可執(zhí)行文件區(qū)中的軟件,升級方法為Boot軟件通過和PC端的相關(guān)軟件與PC建立通信,并把PC中的App軟件下載到手持設(shè)備中.由于app軟件較大,這種app軟件升級,需要將app待加載軟件下載到本地空間,此時需要大量占據(jù)本地空間,而如果本地flash空間較小,將無法進行升級操作。而且,在升級過程中,需要將全部的app軟件都升級一次,對于大的軟件而言,要花很長的時間。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種升級軟件版本的方法,該方法可以不需要將全部應(yīng)用軟件下載到本地進行軟件版本升級,進而節(jié)省升級時間,減少占用存儲空間.
為了達到上述目的,本發(fā)明提供了一種升級軟件版本的方法,該方法包含 a.將第一版本軟件與第二版本軟件進行比較,得出版本區(qū)別列表;b.具有第一軟件版本的設(shè)備,利用所述版本區(qū)別列表更新第一版本軟件,獲得第二版本軟件。所述版本區(qū)別列表至少包括版本升級標識、版本區(qū)別位置、需要修改的內(nèi)容以及結(jié)束標識.
步驟b包括
bl、手持設(shè)備獲取版本區(qū)別列表;
b2、手持設(shè)備中boot軟件根據(jù)版本區(qū)別列表中的版本升級標識,確定該版本區(qū)別列表是否是自身需要的,如果是,則利用該版本區(qū)別列表更新自身flash中的第一版本軟件實現(xiàn),否則,跳出本流程。步驟1^2中所述修改包括
1^21、獲取版本區(qū)別列表記錄的版本區(qū)別位置和該位置需要修改成的內(nèi)容,在第一版本軟件中的所述版本區(qū)別位置處,按照獲取到所述要修改成的內(nèi)容d’ J新該位置的內(nèi)容. 所述版本區(qū)別列表進一步包括第二版本數(shù)據(jù)的大小。步驟a中所述版本區(qū)別列表是將第一版本軟件與第二版本軟件按字節(jié)、比特位或區(qū)域比較得出的。當(dāng)步驟a中所述版本區(qū)別列表保存在網(wǎng)絡(luò)側(cè)或PC機中時,步驟bl中所述手持設(shè)備是根據(jù)與網(wǎng)絡(luò)側(cè)或PC機通信獲取到所述版本區(qū)別列表的。 所述通信為有線或無線通信方式。步驟a中所述版本區(qū)別列表保存在手機中,步驟bl中手持設(shè)備是通過直接讀取自身保存的所述版本區(qū)別列表實現(xiàn)的。本發(fā)明時原軟件版本與新軟件版本進行比較,得出兩個版本的版本區(qū)別列表,然后利用版本區(qū)別列表更新手機中的軟件版本.該方法可以避免下載待升級文件,這對于變化不大的軟件版本來說,是一種高效的軟件版本升級方式。而且,該方法不需要改變?nèi)魏维F(xiàn)有軟件流程和機制,只需要是在手機版本升級軟件上稍做修改即可,因此實現(xiàn)簡單。
圖I為手機存儲區(qū)間的劃分示意圖; 圖2為實現(xiàn)本發(fā)明方法的流程示意圖; 圖3為本發(fā)明生成軟件版本的示意圖4為本發(fā)明利用版本區(qū)別列表完成版本軟件升級的示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明作進一步的詳細描述。由于軟件版本的編譯、連接過程是在整個軟件大工程的基礎(chǔ)上進行,一般而言,軟件的工程會保留不變,即上一個版本與下一個版本之間,使用同一個工程,因此對于成熟的軟件而言,軟件版本之間的差異會很小,這些較小的差異不僅表現(xiàn)在源代碼上,同時也表現(xiàn)在編譯連接生成后的bin文件上。因此,本發(fā)明的核心思想是比較兩個軟件版本之間的區(qū)別得到軟件版本區(qū)別列表,手持設(shè)備通過軟件版本區(qū)別列表中軟件二進制文件的區(qū)別,直接修改自身的原軟件版
4本中需要改變的部分.這里,軟件版本區(qū)另懷.]表主要是一種特殊定義的文件格式,該文件格式以某一個軟件版本文件為參照物,通過直接比較兩個軟件版本的方式,以特定的格式來記錄兩個軟件版本之間的差異。參見圖2所示,實現(xiàn)本發(fā)明方法包括以下步驟 步驟201:將第一版本軟件與第二版本軟件進行比較,得出版本區(qū)別列表。本發(fā)明中的版本區(qū)別列表至少包括版本升級標識、版本區(qū)別位置、需要修改的內(nèi)容以及結(jié)束標識。其中,版本升級標識,用于描述本版本區(qū)別列表用于何種版本軟件到何種版本軟件的升級,如從版本A到版本B的升級。版本區(qū)別位置,用于表示第二版本與第一版本之間的二進制代碼內(nèi)容改變的位置.結(jié)束標識,用于表示該版本區(qū)別列表結(jié)束。具體生成版本區(qū)別列表的過程是這樣實現(xiàn)的首先,記錄先后兩個版本標識,描述出自身是從何種版本升級到何種版本的區(qū)別列表,然后按照字節(jié)、位或塊比較兩個版本升級軟件的不同,記錄內(nèi)容不同的位置標識以及該位置需要更新的內(nèi)容,在記錄完成后,設(shè)笠結(jié)束標識,此時生成了版本區(qū)別列表.而且,具體按哪種方式進行比較,可以根據(jù)手機設(shè)備中保存需要更新軟件的具體的flash類型選擇,如NAND型flash,必須按block進行讀寫或擦除操作。舉例說明,在圖3中,版本A為手機flash中保存的原軟件版本的一部分,版本B為新軟件版本的一部分,在版本A和版本B中都是以O(shè)xxxxx為首地址,其分別有96 個byte的數(shù)據(jù)塊。圖3所示的版本區(qū)別列表包括三部分,其中,第一部分為版本升級描述,表示版本升級標識,即from版本A to版本B;第二部分表示兩個版本的有區(qū)別的位置以及欣版本中該位置的內(nèi)容,如版本A和版本Bif el在Oxxxxx+27. 0xxxxx+28. Oxxxxx+29. Oxxxxx+30. Oxxxxx+93. Oxxxxx+94, 0xxxxx+95 不同,其后,在版本區(qū)另丨洌表中分別記錄版本B中這些位置的內(nèi)容,即要更新的內(nèi)容ff,ff, ff, ff.89. 89. 89。步驟 202:手持設(shè)備獲取版本區(qū)別列表,并判斷該版本區(qū)別列表是否為自身需要的,如果是,則執(zhí)行步驟203,否則,升級失敗,跳出本流程。這里,手持設(shè)備獲取版本區(qū)別列表文件的方式不限,可以直接將版本區(qū)別列表下載到手機本地文件系統(tǒng)中,也可以將版本區(qū)別列表保存在網(wǎng)絡(luò)上或在PC上,然后手機通過某種通信方式,與網(wǎng)絡(luò)側(cè)或PC機連接后獲取。而且,手持設(shè)備中的Boot區(qū)需要通過版本升級標識所描述的信息,確定判斷該版本區(qū)別列表是自身需要的,這需要手持設(shè)備具有自識別功能.比如,手持設(shè)備中當(dāng)前版本為A版本,如果版本區(qū)別列表中的版本升級標識表示是從版本A到版本B的升級,那么,手持設(shè)備是可以利用該版本升級列表進行升級的,如果版本區(qū)別列表中的版本升級標識表示是從版本B到版本C的升級,則此時手持設(shè)備是不能利用該版本升級列表來升級的,否則會出現(xiàn)升級錯誤。步驟203:具有第一軟件版本的手持設(shè)備,利用所述該版本區(qū)別列表更新第一版本軟件.這里,第一軟件版本即為原軟件版本,第二軟件版本即為新軟件版本。在實際應(yīng)用中,需要開發(fā)一種PC端的工具軟件,該工具軟件將先后的兩個版本軟件,即最終的bin文件,作為榆入,然后對這兩個bin文件按bit. byte或block進行比較, 對比較不同之處在版本區(qū)別列表文件中列出。以下結(jié)合圖3以可直接讀寫字節(jié)(byte)的NOR型Bash為例,來說明PC機端工具軟件的工作原理。
按照byte,比較圖3所示的版本A和版本B,確定兩個版本軟件共有7個byte不同,在版本區(qū)別列表文件中,將內(nèi)容不同的地址和要修改成的內(nèi)容,都一一記錄。而對于版本A或版本B增加或減少的說明,可采用下面方式=Oxyyyy delOxyyyy XX表示版本B比版本A少此空間;表示版本B比版本A多此空間,XX表示具體內(nèi)容。當(dāng)然,版本區(qū)別列表文件中,也可以適當(dāng)增加一些其他部分必要信息,如版本B的數(shù)據(jù)大小等.而且版本區(qū)別列表文件并不局限于某一種具體的文件格式,簡單的文本文件格式即可滿足要求。版本升級過程是建立版本區(qū)別列表文件的逆過程,其具體如下手機獲取版本區(qū)別列表文件,手機中的boot軟件識別版本區(qū)別列表文件,獲取版本區(qū)別列表記錄的版本區(qū)別位置和該位置需要修改成的內(nèi)容,然后按照該版本區(qū)別列表文件中描述的相對位置,重新改寫flash的相關(guān)部分。如,在圖4中,版本區(qū)別列表已記錄版本A和版本B之間在Oxxxxx+27. 0xxxxx+28、 Oxxxxx+29、Oxxxxx+30、0xxxxx+93、Oxxxxx+94、0xxxxx+95 不同,而且分另Ij 記錄版本 B 中這些位五的內(nèi)容,即ff,ff, ff, ff, 89,89.89.因此,在升級的過程中,需要在 Oxxxxx+27, Oxxxxx+28, Oxxxxx+29,0xxxxx+30. 0xxxxx+93, Oxxxxx+94, 0xxxxx+95 的位置處,分別將其原來的內(nèi)容更新為ff,ff, ff. ff, 89,89. 89。本發(fā)明不局限于某種具體設(shè)備中的軟件更新,比如手機、PDA等各種手持設(shè)備.而且,以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1.一種升級軟件版本的方法,其特征在于,該方法包括以下步驟a.將第一版本軟件與第二版本軟件進行比較,得出版本區(qū)別列表;b.具有第一軟件版本的設(shè)備,矛.!用所述版本區(qū)別列表更新第一版本軟件,獲得第二版本軟件。
2.根據(jù)權(quán)利要求1述的方法,其特征在于,所述版本區(qū)別列表至少包括版本升級標識、 版本區(qū)別位置、需要修改的內(nèi)容以及結(jié)束標識。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,步驟b包括bl手持設(shè)備獲取版本區(qū)別列表;b2、手持設(shè)備中boot軟件根據(jù)版本區(qū)別列表中的版本升級標識,識別該版本區(qū)別列表是否是自身需要的,如果是,則利用該版本區(qū)別列表更新自身的第一版本軟件,否則,跳出本流程。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟1^2中所述更新包括1^21、獲取版本區(qū)別列表記錄的版本區(qū)別位置和該位置需要修改成的內(nèi)容,在第一版本軟件中的所述版本區(qū)別位置處,按照獲取到所述要修改成的內(nèi)容刷新該位置的內(nèi)容。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述版本區(qū)別列表進一步包括第二版本數(shù)據(jù)的大小。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟a中所述版本區(qū)別列表是將第一版本軟件與第二版本軟件按字節(jié)、比特位或區(qū)域比較得出的。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)步驟a中所述版本區(qū)別列表保存在網(wǎng)絡(luò)側(cè)或PC機中時,步驟bl中所述手持設(shè)備是根據(jù)與網(wǎng)絡(luò)側(cè)或PC機通信獲取到所述版本區(qū)別列表的。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述通信為有線或無線通信方式。
9.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟a中所述版本區(qū)別列表保存在手持設(shè)備中,步驟bl手持設(shè)備是通過直接讀取自身保存的所述版本區(qū)別列表實現(xiàn)的。
全文摘要
本發(fā)明公開了一種升級軟件版本的方法,該方法包括:a、將第一版本軟件與第二版本軟件進行比較,得出版本區(qū)別列表,所述版本區(qū)別列表至少包括版本升級標識、版本區(qū)別位置、需要修改的內(nèi)容以及結(jié)束標識;b、具有第一軟件版本的設(shè)備,利用所述版本區(qū)別列表更新第一版本軟件,獲得第二版本軟件。該方法可以避免下載待升級文件,這對于變化不大的軟件版本來說,是一種高效的軟件版本升級方式。而且,不需要改變?nèi)魏维F(xiàn)有軟件流程和機制,只需要是在手機版本升級軟件上稍做修改即可,因此實現(xiàn)簡單。
文檔編號G06F9/445GK102521004SQ20111044619
公開日2012年6月27日 申請日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者任平 申請人:蘇州銘星科技股份有限公司