欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于通過數(shù)據(jù)傳輸更新計(jì)算機(jī)程序的方法和數(shù)據(jù)處理設(shè)備的制作方法

文檔序號(hào):6655259閱讀:211來源:國知局
專利名稱:用于通過數(shù)據(jù)傳輸更新計(jì)算機(jī)程序的方法和數(shù)據(jù)處理設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于在需更新的計(jì)算機(jī)程序的舊程序版本與計(jì)算機(jī)程序的新程序版本之間創(chuàng)建差分?jǐn)?shù)據(jù)的方法,以及一種用于利用差分?jǐn)?shù)據(jù)來更新計(jì)算機(jī)程序的舊程序版本的方法。本發(fā)明進(jìn)一步涉及一種用于創(chuàng)建和發(fā)送差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備,以及用于接收與處理差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備。
背景技術(shù)
在數(shù)據(jù)處理裝置中,通常計(jì)算機(jī)程序的舊版本,不管是整個(gè)操作系統(tǒng)或者僅僅一部分的應(yīng)用軟件,完全通過新版本來替換,也就是說,新的程序文件以相同的文件名覆蓋舊的程序文件。假如移動(dòng)數(shù)據(jù)處理設(shè)備,如移動(dòng)電話或者在機(jī)動(dòng)車中安裝的設(shè)備必須更新時(shí),目前新程序版本根據(jù)使用者的需求傳輸給各自的設(shè)備。其可以這樣地實(shí)現(xiàn),即這些設(shè)備通過電纜與數(shù)據(jù)服務(wù)器連接,然后新程序版本通過該數(shù)據(jù)連接安裝到移動(dòng)設(shè)備中,或者在交換式數(shù)據(jù)載體,如CD或者DVD上的新程序版本被提供使用。另一方面,數(shù)據(jù)服務(wù)器本身可以通過數(shù)據(jù)遠(yuǎn)程連接,例如像互聯(lián)網(wǎng)連接或者無線連接獲得程序版本。在每種類型的數(shù)據(jù)傳輸中要考慮到的是,或許可以僅在合適的時(shí)間里傳輸相對(duì)有限的數(shù)據(jù)量,或者高數(shù)據(jù)傳輸率或許會(huì)帶來高額的數(shù)據(jù)傳輸費(fèi)用,因此,人們嘗試將要發(fā)送的數(shù)據(jù)保持盡可能地小。然而,該目標(biāo)與當(dāng)今的操作系統(tǒng)或應(yīng)用程序的日益增加的復(fù)雜性相矛盾。
在特定的工業(yè)領(lǐng)域中,例如像在軟件開發(fā)或者在數(shù)據(jù)庫的維護(hù)中,這又是必要的,即舊程序版本與新程序版本長時(shí)間共同保存,以使得例如可以恢復(fù)改變,或者在出現(xiàn)問題時(shí),舊程序版本可以再次重新使用。因?yàn)檫@會(huì)導(dǎo)致提供用于使用的存儲(chǔ)空間的瓶頸,所以開發(fā)了新的算法,該算法算出舊程序版本與新程序版本的偏差,并由此創(chuàng)建了帶有差分?jǐn)?shù)據(jù)的文件。此外,差分?jǐn)?shù)據(jù)用于在展示舊程序版本時(shí),自動(dòng)生成新程序版本。舊程序版本和明顯小于新程序版本的差分?jǐn)?shù)據(jù)文件被保存。用于創(chuàng)建差分?jǐn)?shù)據(jù)的算法也被稱為差值壓縮算法。
在該算法中,主要區(qū)別兩個(gè)等級(jí)通過復(fù)制和粘貼生成新程序版本的算法等級(jí),以及使用粘貼和刪除操作的算法等級(jí)。
在復(fù)制和粘貼時(shí),在舊的和新程序版本中搜索最大可能一致的區(qū)域。剩余的區(qū)域被作為新的要粘貼的區(qū)域。新的要粘貼的區(qū)域以及關(guān)于一致的以及新的區(qū)域的定位或者相互的排列的數(shù)據(jù)作為差分?jǐn)?shù)據(jù)來存儲(chǔ)。然后,復(fù)制粘貼算法可以在需要時(shí)從舊版本中生成新程序版本,該算法從舊程序版本中復(fù)制出一致區(qū)域,并且利用新區(qū)域設(shè)置對(duì)應(yīng)的定位信息并相互排列。由此,完全重新建立了新的版本。
在粘貼和刪除時(shí),同樣搜索最大可能一致的區(qū)域。然而,差分?jǐn)?shù)據(jù)信息不包含完全要粘貼的區(qū)域,而是彼此有差別的區(qū)域被詳細(xì)地檢查其區(qū)別,并且創(chuàng)建一個(gè)剪輯稿,利用該剪輯稿,彼此有差別的區(qū)域的舊版本與新版本進(jìn)行匹配。由此,粘貼刪除算法生成新程序版本,該算法基于剪輯稿在舊程序版本中進(jìn)行相應(yīng)的改變。新添加的部分被粘貼,并且省略的部分被刪除。新版本相應(yīng)地通過對(duì)舊版本的處理來生成。
一種公開的復(fù)制粘貼算法是Xdelta算法,該算法附屬于GNU通用公共許可證。該算法在今天已經(jīng)利用差分?jǐn)?shù)據(jù)應(yīng)用在移動(dòng)終端設(shè)備的計(jì)算機(jī)程序的更新中,因?yàn)椴罘謹(jǐn)?shù)據(jù)文件與利用通常方法壓縮的程序文件本身相比需要明顯更小的存儲(chǔ)空間和傳輸帶寬。用于更新的計(jì)算機(jī)程序以其為目標(biāo)處理器編譯的二進(jìn)制的形式存在。算法將舊的和新程序版本的二進(jìn)制程序代碼互相比較,搜索最大可能的一致的區(qū)域,并標(biāo)記其位置,也就是其程序地址。剩余的區(qū)域作為要粘貼的區(qū)域添加到差分?jǐn)?shù)據(jù)中。

發(fā)明內(nèi)容
本發(fā)明的目的是,提出一種用于創(chuàng)建差分?jǐn)?shù)據(jù)的方法,和一種用于創(chuàng)建和發(fā)送差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備,其中,差分?jǐn)?shù)據(jù)所需要的存儲(chǔ)空間應(yīng)該被進(jìn)一步地降低。本發(fā)明的另一個(gè)目的是,找到一種用于利用該差分?jǐn)?shù)據(jù)以及用于接收和處理該差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備來更新計(jì)算機(jī)程序的舊程序版本的方法。
該目的通過在獨(dú)立權(quán)項(xiàng)中提出的方法或者設(shè)備來實(shí)現(xiàn)。
本發(fā)明的基礎(chǔ)是識(shí)別,因?yàn)槔缯迟N新的程序部分,所以在計(jì)算機(jī)程序的新程序版本部分的內(nèi)部,如各個(gè)功能或功能塊,經(jīng)常僅僅相對(duì)于舊版本改變位置。在轉(zhuǎn)換的二進(jìn)制程序代碼中,由此而引起多個(gè)通過程序指令訪問的存儲(chǔ)地址的變化,因此,程序分支的轉(zhuǎn)移范圍或者變量或者常量數(shù)據(jù)的存儲(chǔ)位置發(fā)生改變。首先,被訪問的存儲(chǔ)地址以二進(jìn)制程序代碼的形式描述計(jì)算機(jī)指令的運(yùn)算域,特別是轉(zhuǎn)移指令的運(yùn)算域。同時(shí),轉(zhuǎn)移指令用于函數(shù)的分支,以及包括作為存儲(chǔ)地址的該函數(shù)的所屬相對(duì)或絕對(duì)程序地址。此外,被訪問的存儲(chǔ)地址可以作為絕對(duì)存儲(chǔ)地址而存儲(chǔ)在程序中,該存儲(chǔ)地址利用間接的存取指令存取。絕對(duì)存儲(chǔ)地址再次參照數(shù)據(jù),例如變量或者常量值。利用間接的存取指令,數(shù)據(jù)通過雙重的基準(zhǔn)從存儲(chǔ)器中讀取或者寫入到存儲(chǔ)器中。
接下來,通過程序指令訪問的存儲(chǔ)地址短暫地作為地址參考來描述。
已經(jīng)公開的Xdelta算法識(shí)別轉(zhuǎn)移的程序部分為不一致的部分,在該程序部分中,地址參考發(fā)生變化,因此,該算法不用邏輯地并且不用從內(nèi)容上來檢測代碼,而是直接地作一對(duì)一的比較。借此,只發(fā)現(xiàn)一致的程序部分,該部分具有完全相同的指令順序。
然而,本發(fā)明考慮的基礎(chǔ)是,即基本可行性在于,地址參考以及其變化自動(dòng)地識(shí)別,其中程序代碼被解釋并且不用進(jìn)行字符對(duì)字符的檢測。在源代碼轉(zhuǎn)換為二進(jìn)制代碼時(shí),地址參考的計(jì)算一直由鏈接和定位的標(biāo)準(zhǔn)化過程執(zhí)行。如果由多個(gè)源文件構(gòu)成的源代碼被轉(zhuǎn)換,那么,首先源文件被單獨(dú)地編譯并且由此創(chuàng)建所謂的目標(biāo)文件。接下來,連接器將單獨(dú)的目標(biāo)文件結(jié)合成一個(gè)目標(biāo)文件,并且將地址參量導(dǎo)入到一個(gè)位置上,變量或者函數(shù)在該位置被調(diào)入,因此,該變量和函數(shù)的最終位置在程序中相對(duì)于鏈接的時(shí)間點(diǎn)是未知的。如果連接器將所有的地址參量放置在確定的位置上,那么定位器通過對(duì)應(yīng)的絕對(duì)或者相對(duì)程序地址代替地址參量。定位器一直在一個(gè)程序的內(nèi)部和相同的程序內(nèi)部重新計(jì)算程序部分的地址參考。
本發(fā)明以此為出發(fā)點(diǎn),即在更新舊程序版本時(shí),改變的地址參考可以通過新程序版本自動(dòng)計(jì)算,因此,在舊程序版本中以及在新程序版本中的所有程序部分的位置被獲悉。新的絕對(duì)或者相對(duì)地址參考可以詳盡地由用于生成差分?jǐn)?shù)據(jù)的方法檢測,并且對(duì)應(yīng)于差分?jǐn)?shù)據(jù),從而在更新舊版本的程序部分時(shí),可以對(duì)應(yīng)地修改地址參考。僅僅必須改變地址參考的程序部分被作為新的程序部分歸入,并且不作為差分?jǐn)?shù)據(jù)存儲(chǔ),這明顯降低了差分?jǐn)?shù)據(jù)的存儲(chǔ)空間的需求。
在本發(fā)明的一個(gè)優(yōu)選的實(shí)施例中,差分?jǐn)?shù)據(jù)被進(jìn)一步減少,其中,新的地址參考不對(duì)應(yīng)于差分?jǐn)?shù)據(jù)。因?yàn)橛糜诟虏罘謹(jǐn)?shù)據(jù)的算法同樣知道舊的和新程序版本,所以該算法同樣如用于創(chuàng)建差分?jǐn)?shù)據(jù)的算法一樣有能力詳盡地計(jì)算新的地址參考,并且在新程序版本中修改。
為了計(jì)算地址被改變的地址參考,必須要了解,即在舊程序版本中的哪些程序部分對(duì)應(yīng)于在新程序版本中的哪些程序部分。這些保持相同的程序部分(除了被改變的地址參考)必須被識(shí)別為是互相合適的,為此,用于創(chuàng)建差分?jǐn)?shù)據(jù)的本發(fā)明的方法在內(nèi)容上檢測新的和舊程序版本的二進(jìn)制代碼。
二進(jìn)制代碼由指令字的序列組成,其長度通過應(yīng)用的處理器確定,并且可由處理器直接解讀。指令字也可以是計(jì)算機(jī)指令,由操作標(biāo)記、實(shí)際的指令部分以及可由一個(gè)或多個(gè)元素構(gòu)成的運(yùn)算域構(gòu)成,或者是直接以二進(jìn)制代碼形式存儲(chǔ)的變量的值和絕對(duì)地址。
在計(jì)算機(jī)程序的內(nèi)部改變的地址參考可以這樣地識(shí)別,即計(jì)算機(jī)指令的操作標(biāo)記的序列保持不變,并且僅僅轉(zhuǎn)移指令或者存取指令的運(yùn)算域改變,或者由保持不變的計(jì)算機(jī)指令訪問變化的存儲(chǔ)地址,例如被載入。
借此,根據(jù)本發(fā)明的算法不僅發(fā)現(xiàn)完全相同的程序部分,而且發(fā)現(xiàn)除了改變的地址參考之外完全相同的程序部分。所有的這些程序部分被整理為所謂的相同的程序部分,也就是在舊程序版本和新程序版本之間一致的程序部分。
從而,由多個(gè)獨(dú)立的程序部分構(gòu)成的由算法識(shí)別為未改變的程序范圍相對(duì)于通常的差值壓縮算法明顯的變大。其余的被保留的新整理的程序部分相應(yīng)地占用非常小的存儲(chǔ)位置,因此,本發(fā)明可以特別地應(yīng)用在用于更新計(jì)算機(jī)程序的情況中,在這些程序中,僅僅窄帶的或者成本高昂的數(shù)據(jù)傳輸是可能的,例如像使用GSM移動(dòng)電話時(shí)。
由算法存儲(chǔ)的差分?jǐn)?shù)據(jù)包括用于新的,如也用于相同的程序部分的程序地址數(shù)據(jù)的形式的至今所有新的程序部分以及位置信息,然而,其中相對(duì)于常規(guī)的算法的區(qū)別在于,很少的程序部分對(duì)應(yīng)于新的以及用于傳輸?shù)某绦虿糠帧?br> 在本發(fā)明的一個(gè)優(yōu)選的實(shí)施例中,算法在相同的、新程序版本上重復(fù)地檢查程序版本。在第一步中,該算法挑選出完全相同的指令字的相關(guān)聯(lián)的區(qū)域。此外,算法通過最大可能的相關(guān)聯(lián)區(qū)域開始運(yùn)算,并且然后運(yùn)算到一個(gè)最小的值。受系統(tǒng)限制的最小值代表指令字的長度。在一個(gè)特別的設(shè)計(jì)方案中,相關(guān)聯(lián)的區(qū)域的最小值可以也作為指令字的倍數(shù)而預(yù)先設(shè)定,從而,優(yōu)化了差分?jǐn)?shù)據(jù)創(chuàng)建的過程。
在第二步中,在其余保留的以及暫時(shí)作為新識(shí)別的程序部分中搜索相對(duì)相同的計(jì)算機(jī)指令,并且在相同的程序部分中搜索間接的存取指令。相對(duì)相同的計(jì)算機(jī)指令為具有作為運(yùn)算域的地址參考的指令,并且其操作標(biāo)記以及相對(duì)位置與相鄰的相同的程序部分一致。然而,運(yùn)算域的值在新程序版本中偏離于在舊程序版本中的值。相對(duì)相同的計(jì)算機(jī)指令作為下一個(gè)指令經(jīng)常直接排列在相同的程序部分的尾部,或者插入到兩個(gè)相同的程序部分之間。然而,這些指令也可以僅僅由新的程序部分包圍。假如相對(duì)相同的計(jì)算機(jī)指令的運(yùn)算域以及地址參考已經(jīng)作為相同的程序部分歸入的程序范圍來參照,那么,利用相對(duì)相同的計(jì)算機(jī)指令將命令行分類為相同的程序部分。假如該命令行與另一個(gè)相同的程序部分相鄰,那么該命令行對(duì)應(yīng)于這個(gè)相同的程序部分。
屬于相同的程序部分的間接存取指令參照指令字,指令字包括作為地址參考的絕對(duì)程序地址。如果指令字屬于作為新歸入的程序部分,并且包含在指令字中的絕對(duì)程序地址再一次參照相同的程序部分,那么指令字完全相同的程序地址同樣作為相同的程序部分被分類。
接下來,第二步在一個(gè)時(shí)間內(nèi)重復(fù),直到找到具有參照相同的程序部分的地址參考的所有指令。
在另一個(gè)優(yōu)選的實(shí)施例中,在差分?jǐn)?shù)據(jù)的生成結(jié)束之后執(zhí)行差分?jǐn)?shù)據(jù)的驗(yàn)證。這由此實(shí)現(xiàn),即根據(jù)差分?jǐn)?shù)據(jù)以及舊程序版本來創(chuàng)建新程序版本,完全相同地發(fā)生在更新舊程序版本時(shí)(如在移動(dòng)終端設(shè)備上)。相同的程序部分從舊程序版本中復(fù)制出來,并且粘貼到新程序版本的對(duì)應(yīng)的程序地址。地址數(shù)據(jù)也可以作為復(fù)制地址數(shù)據(jù)來表示。其或者描述開始點(diǎn)和對(duì)應(yīng)的程序部分的長度,或者描述開始點(diǎn)和結(jié)束點(diǎn)。
除了相同的程序部分的位置之外,新的程序部分也獲得差分?jǐn)?shù)據(jù),并且在相同的程序部分之間插入到新程序版本中。這在程序地址上實(shí)現(xiàn),該程序地址通過所謂的粘貼地址數(shù)據(jù)來說明。隨后,或者在程序部分的復(fù)制和粘貼時(shí),在程序部分中查找地址參考,并且其被檢測,即在舊程序版本中的地址參考參照了那些相同的程序部分。然后,對(duì)應(yīng)于相同的程序部分的已知的新位置來修改地址參考。最后,新創(chuàng)建的程序版本與原始存在的新程序版本比較,并且假如確定沒有偏差,那么差分?jǐn)?shù)據(jù)可以作為正確的而被歸入。
在驗(yàn)證的過程中,可以發(fā)現(xiàn)確定的錯(cuò)誤,該錯(cuò)誤取決于,在程序代碼中包括數(shù)據(jù)的較長的語句,例如文本串,其以其二進(jìn)制的形式與包括在舊程序版本中的一個(gè)或多個(gè)指令字一致。該數(shù)據(jù)的語句假如被作為相同的程序部分來不當(dāng)?shù)亟忉尩脑?,那么?huì)導(dǎo)致,即在驗(yàn)證期間創(chuàng)建的程序版本與本來的新程序版本不兼容。這些不當(dāng)?shù)慕忉屧诒景l(fā)明的另一個(gè)設(shè)計(jì)方案中作為特別事件識(shí)別。作為可能的輔助,帶有未解釋的數(shù)據(jù)的指令字從相同的程序部分的組中刪除,并且作為新的程序部分歸入。在這樣的情況中可以選擇另一種可能性,在該情況中,數(shù)據(jù)的未解釋的語句不僅存在于舊程序版本中還存在于新程序版本中。然后,該數(shù)據(jù)的位置存儲(chǔ)在舊程序版本和新程序版本中,并且在識(shí)別標(biāo)志下作為要復(fù)制的數(shù)據(jù)部分添加到差分?jǐn)?shù)據(jù)中。在該方法中,相對(duì)于作為新的程序部分而歸入的數(shù)據(jù)來創(chuàng)建較少的要傳輸?shù)牟罘謹(jǐn)?shù)據(jù)。
在差分?jǐn)?shù)據(jù)的接受者一方,用于與生成方法相配合的評(píng)估方法必須被應(yīng)用,從而可以從差分?jǐn)?shù)據(jù)中以及舊程序版本中創(chuàng)建正確的新程序版本。這樣的用于更新舊程序版本的本發(fā)明的方法,利用包括在差分?jǐn)?shù)據(jù)中的復(fù)制地址數(shù)據(jù)而從舊程序版本中復(fù)制出相同的程序部分,并且在相應(yīng)地在新程序版本中定位。新的程序部分利用粘貼地址數(shù)據(jù)粘貼到相同的程序部分之間。之后或者已經(jīng)在相同的程序部分的復(fù)制或者在新程序版本的粘貼期間,所有的相對(duì)相同的計(jì)算機(jī)指令以及所有的間接存取指令從程序部分中一個(gè)接一個(gè)地查找出來、解釋或者修正,也就是說其被評(píng)估,指令的地址參考在舊程序版本中參照那個(gè)相同的程序部分以及該程序部分的位置在新程序版本中改變了多少字符長度或者字節(jié)。由此創(chuàng)建的新的地址參考被對(duì)應(yīng)地在新程序版本中注冊(cè)。根據(jù)地址參考的類型,修正值或者作為位移來計(jì)算,并且因此將字節(jié)的對(duì)應(yīng)的數(shù)量加到舊的相對(duì)存儲(chǔ)地址上或者從其上減去,該修正值或者作為絕對(duì)位置以及的存儲(chǔ)地址來確定。
根據(jù)本發(fā)明的用于差分?jǐn)?shù)據(jù)的生成和傳輸?shù)臄?shù)據(jù)處理設(shè)備包括作為核心的計(jì)算單元,例如微處理器,其用于執(zhí)行用于生成差分?jǐn)?shù)據(jù)的方法,以及至少一個(gè)用于數(shù)據(jù)緩沖存儲(chǔ)的系統(tǒng)內(nèi)存。此外,為了持續(xù)地存儲(chǔ)舊程序版本或者新程序版本以及差分?jǐn)?shù)據(jù),存在有非臨時(shí)的數(shù)據(jù)存儲(chǔ)器,如硬盤或者閃存。此外,數(shù)據(jù)處理設(shè)備具有通信接口,利用該通信接口可以構(gòu)成無線的或者通過電纜與至少另一個(gè)預(yù)備接收的數(shù)據(jù)處理設(shè)備建立數(shù)據(jù)連接,從而通過該數(shù)據(jù)接口傳輸差分?jǐn)?shù)據(jù)。這樣的數(shù)據(jù)接口可以例如是GSM接口或者網(wǎng)絡(luò)連接。
此外,在一個(gè)優(yōu)選的設(shè)計(jì)方案中,數(shù)據(jù)處理設(shè)備包括輸入單元,如鍵盤或者鼠標(biāo),從而,借此可以預(yù)先輸入作為相同的歸入的程序部分的最小值。該輸入能夠用于最優(yōu)化創(chuàng)建差分?jǐn)?shù)據(jù)的方法以及用于影響差分?jǐn)?shù)據(jù)的存儲(chǔ)值。方法確定的最小值表現(xiàn)為計(jì)算機(jī)指令,因此,在相同的程序部分中,運(yùn)算域和操作標(biāo)記必須一致。產(chǎn)生偏差時(shí),使用者可以說明相同的程序部分的最小值為該最優(yōu)單元的幾倍。然后計(jì)算單元相應(yīng)地考慮到預(yù)定值,其中,該預(yù)定值對(duì)應(yīng)于新的程序部分的較小的相同程序部分。
根據(jù)本發(fā)明的用于接收和處理差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備包括作為核心的計(jì)算單元,其執(zhí)行用于更新舊程序版本的方法。此外,存在的用于數(shù)據(jù)緩存的系統(tǒng)內(nèi)存、用于存儲(chǔ)舊程序版本和新程序版本以及差分?jǐn)?shù)據(jù)的非臨時(shí)的數(shù)據(jù)存儲(chǔ)器、以及通信接口可以利用無線的或者有線的連接來建立預(yù)備發(fā)送的數(shù)據(jù)處理設(shè)備的連接,以使得該數(shù)據(jù)處理設(shè)備再次接受差分?jǐn)?shù)據(jù)。
在一個(gè)優(yōu)選的設(shè)計(jì)方案中,在接受差分?jǐn)?shù)據(jù)之后,計(jì)算單元根據(jù)校驗(yàn)和來檢查,是否執(zhí)行無錯(cuò)誤的傳輸。此外,在另一個(gè)設(shè)計(jì)方案中,根據(jù)一同發(fā)送的文件地址檢查差分?jǐn)?shù)據(jù)的真實(shí)性,從而驗(yàn)證數(shù)據(jù)是否由有資格的發(fā)送器發(fā)送。
如果根據(jù)校驗(yàn)和或者文件地址確定,即差分?jǐn)?shù)據(jù)無效,那么更新被中斷,并且錯(cuò)誤可以在錯(cuò)誤存儲(chǔ)器中保存。
新程序版本的生成過程可以或者在成功地接收之后直接啟動(dòng),或者通過確定的結(jié)果,如通過舊版本的有效的流程來更新。
新創(chuàng)建的程序版本可以再次根據(jù)校驗(yàn)和來檢查其正確性,并且在錯(cuò)誤的情況下,通過舊程序版本代替,為此其必須被單獨(dú)地存儲(chǔ)。在該種情況中,相應(yīng)的錯(cuò)誤報(bào)告也被存儲(chǔ)。


接下來,參考實(shí)施例和附圖對(duì)本發(fā)明進(jìn)一步解釋。圖中示出圖1有兩個(gè)原始的函數(shù)組成的計(jì)算機(jī)程序的更新;圖2用于創(chuàng)建和發(fā)送差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備;圖3圖2中示出的數(shù)據(jù)處理設(shè)備與數(shù)據(jù)中心以及兩個(gè)接收和處理差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備的通信。
具體實(shí)施例方式
作為舉例,在安裝在機(jī)動(dòng)車中的收費(fèi)設(shè)備時(shí),考慮到舊程序版本的更新。在此,用于創(chuàng)建差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備與所謂的數(shù)據(jù)中心、中央通信計(jì)算機(jī)連接,該計(jì)算機(jī)可以操縱多個(gè)收費(fèi)設(shè)備的更新。
在圖2中示出了這樣的用于創(chuàng)建差分?jǐn)?shù)據(jù)的數(shù)據(jù)處理設(shè)備11??梢钥吹接?jì)算單元12,該計(jì)算單元執(zhí)行用于差分?jǐn)?shù)據(jù)的創(chuàng)建的方法,并且該計(jì)算單元與以太網(wǎng)通信接口15連接,以及系統(tǒng)內(nèi)存13和非臨時(shí)數(shù)據(jù)存儲(chǔ)器14,其設(shè)計(jì)為硬盤。此外,計(jì)算單元12與作為輸入單元16使用的鍵盤連接,利用該鍵盤執(zhí)行相關(guān)于相同的程序部分的最小值的預(yù)先輸入,或者可以通過手來操縱到收費(fèi)設(shè)備的差分?jǐn)?shù)據(jù)的傳輸過程。此外,為了檢測輸入,圖形顯示單元22與計(jì)算單元12連接。
在圖3中示出了與數(shù)據(jù)中心22連接的數(shù)據(jù)處理設(shè)備11。數(shù)據(jù)中心22又通過GSM無線電與兩個(gè)作為收費(fèi)設(shè)備設(shè)計(jì)的數(shù)據(jù)處理設(shè)備17連接。數(shù)據(jù)中心22除了具有計(jì)算單元23之外還具有以太網(wǎng)接口24、GSM接口25以及系統(tǒng)內(nèi)存和非臨時(shí)的數(shù)據(jù)存儲(chǔ)器27。在每個(gè)數(shù)據(jù)處理單元17中設(shè)置有一個(gè)計(jì)算單元18,該計(jì)算單元執(zhí)行用于更新舊程序版本的方法。該計(jì)算單元與GSM通信接口19、系統(tǒng)內(nèi)存21和作為非臨時(shí)的數(shù)據(jù)存儲(chǔ)器20使用的閃存(Flash-ROM)連接。輸入單元和輸出單元在該設(shè)備中不一定是必要的,因此,其可以不依賴操作者地工作。
在接下來的舉例中,在收費(fèi)設(shè)備上運(yùn)行的計(jì)算機(jī)程序的舊程序版本由兩個(gè)函數(shù)構(gòu)成,其中,第二個(gè)函數(shù)從第一個(gè)函數(shù)中調(diào)入。
函數(shù)具有下列C-源代碼<pre listing-type="program-listing">  Void FunctionA(void)  {   FunctionB();  }  void FunctionB(void)  {   int y=1;  }</pre>用于ARM7處理器的計(jì)算機(jī)指令的助記憶的形式如下
FunctionA:
stmdb r13!,{r14}b1 FunctionBldmia r13!,{pc}FunctionB:
mov r0,#1mov pc,r14在新程序版本中,粘貼第三個(gè)函數(shù),即在函數(shù)A和B之間。
<pre listing-type="program-listing">  void FunctionA(void)  {   FunctionB();  }  void FunctionC(void)  {   int x=0;  }  void FunctioB(void)  {    int y=1;  }</pre>用于FunctionC的轉(zhuǎn)換具有形式Function C:
mov 0,#0
mov pc,r14。
因?yàn)閷?duì)于本發(fā)明,帶有地址參考的指令,如這里的分支指令b1扮演決定性的角色,所以在這個(gè)舉例中僅僅考慮其二進(jìn)制形式,而在簡化用于描述剩余的指令時(shí)保持助記憶的形式。
指令“b1 FunctionB”的操作標(biāo)記是部分“b1”(分支和鏈接),其作為“0xeb”二進(jìn)制地寫入。用于位移指令的FunctionB的相對(duì)位置作為運(yùn)算域注冊(cè)。因?yàn)閮蓚€(gè)指令長度位于舊程序版本中在分支指令的程序地址和FunctionB之間,因此相對(duì)的位移地址對(duì)應(yīng)于8Byte,因?yàn)锳RM7處理器是32位處理器。然而,在分支指令“b1”中,相對(duì)的位移地址已經(jīng)被解釋為包括8 Byte的偏移量,因此分支指令的運(yùn)算域是0x000000。
在接下來的表1中,在舊版本和新版本中對(duì)比地示出用于ARM7的轉(zhuǎn)換。如在新版本的程序行2中,根據(jù)FunktionB的位移,分支指令的相對(duì)的位移地址向下以兩個(gè)指令長度提高8 Byte(0x000002)。
在比較作為新的程序部分的程序行2和4-5時(shí),常規(guī)的差值壓縮算法被識(shí)別。
表1在舉例1中,舊版本和新版本的助記符號(hào)


與此相反,用于創(chuàng)建差分?jǐn)?shù)據(jù)的根據(jù)本發(fā)明的算法識(shí)別行1作為第一個(gè)相同的程序部分以及行3作為第二個(gè)相同的程序部分并且行6和行7作為第三個(gè)相同的程序部分。算法從舊程序版本開始運(yùn)算并且嘗試在新的版本中再次尋找在那里存在的程序行。如果行的位置移動(dòng),那么在舊版本中的在該行之后的行同樣在移動(dòng)過的位置搜索。舊版本的彼此排列的行4和5在行6和7再次被發(fā)現(xiàn),因此在相同的程序行5和7之間可以沒有混淆,而是新的行5明確地對(duì)應(yīng)于新的程序部分。
接下來,在搜索相對(duì)相同的計(jì)算機(jī)指令時(shí),算法發(fā)現(xiàn)在行2中的位移指令,其不僅相鄰第一個(gè)相同的部分而且相鄰于第二個(gè)相同的部分。在兩個(gè)程序版本中,該位移指令參照同一個(gè)相同的程序部分,因此指令添加第一個(gè)相同的程序部分。接著,第二個(gè)相同的程序部分直接關(guān)聯(lián)到第一個(gè)相同的程序部分上,從而使這兩個(gè)相同的程序部分可以關(guān)聯(lián)成一個(gè)單獨(dú)的相同的程序部分。算法僅僅識(shí)別新版本的行4和5為新的程序部分。
包括在差分?jǐn)?shù)據(jù)中的新程序版本的程序行4和5的內(nèi)容與定位信息,例如像詳盡描述的程序地址一樣被聯(lián)系到一起,該程序地址在這里通過行號(hào)說明。此外,差分?jǐn)?shù)據(jù)包括數(shù)據(jù),即同一個(gè)相同的程序部分處于新的行1到3之間,如在舊的行1到3之間,并且新的版本的行6和7對(duì)應(yīng)于舊的版本的行4和5。
差分?jǐn)?shù)據(jù)的存儲(chǔ)大小不僅僅這樣地實(shí)現(xiàn),即行2不必作為包括粘貼地址數(shù)據(jù)的相同的程序部分存儲(chǔ),而是這樣地,即行1到3被作為來相關(guān)聯(lián)的相同的程序部分識(shí)別,在其中必須僅包括一個(gè)而不是兩個(gè)復(fù)制地址數(shù)據(jù)的語句。在簡化的舉例中明確地實(shí)現(xiàn)的差分?jǐn)?shù)據(jù)的減少使增加的程序長度和程序復(fù)雜性增加許多倍。
在間接的存取指令時(shí),第二個(gè)舉例說明地址參考的查找。
程序版本分別由以不同的源代碼文件(Modul1.c和Modul2.c)存儲(chǔ)的總程序的兩個(gè)的部分組成。
舊的版本Modul1.c:
const int x=1;
Modul2.c:
void Function1{void}{int local;
local=x;
}新的版本Modul1.c;
const int y=2;
const int x=1;
Modul2.c:
void Function1{void}
{int local;
local=x;
}Modul2.c在兩個(gè)程序版本這是相同的,而在Modul1.c中常數(shù)y的說明是新添加的。
用于ARM7的所屬轉(zhuǎn)換的摘要可在表2中找到,其中,二進(jìn)制代碼和對(duì)應(yīng)的助記符號(hào)分開示出。
在程序地址0x41000104上,間接存儲(chǔ)指令“l(fā)dr r0,0x41000110”(從地址0x41000110加載注冊(cè)r0)在兩個(gè)版本中,該指令具有作為地址參考的絕對(duì)程序地址0x41000110。在給第一個(gè)地址上發(fā)現(xiàn)第二個(gè)程序地址和第二地址參考的參照,0x41000200或者0x41000204。常數(shù)x處于第二個(gè)地址上。利用指令“l(fā)dr r0,0x41000110”,一個(gè)值被第二個(gè)地址參考加載,其中,第二個(gè)地址參考利用包含在指令中的第一個(gè)地址參考發(fā)現(xiàn)。
根據(jù)本發(fā)明的用于創(chuàng)建差分?jǐn)?shù)據(jù)的算法,在比較程序版本的二進(jìn)制代碼時(shí)識(shí)別從0x41000104到0x4100010c的行作為第一個(gè)相同的程序部分。該算法識(shí)別在舊程序版本中的行0x41000200和新程序版本中的行0x41000204同樣作為相同的程序部分。
表2在舉例2中的新版本和舊版本的助記符號(hào)


在新程序版本中的作為新歸入的程序部分-行0x41000110和0x41000200中,利用作為運(yùn)算域的地址參考來查找計(jì)算機(jī)指令。然而沒有行包括計(jì)算機(jī)指令,因?yàn)閮蓚€(gè)行屬于所謂的“文字池”或者文字區(qū)域。在舉例中,固定值1和2是文字。文字區(qū)域在該聯(lián)系中示出在地址空間中的區(qū)域,文字以及所屬的地址保存在該地址空間中。
除了在新的程序部分中利用作為運(yùn)算域的地址參考來查找計(jì)算機(jī)指令之外,相同的程序部分利用地址參考查找間接的存取指令。同時(shí)在行0x41000104中找到指令ldr,其地址參考參照第二地址參考,第二地址參考指示第二個(gè)相同的程序部分。借此,因?yàn)橹两褡鳛樾職w入的程序部分0x41000110包括帶有在相同的程序部分上的地址參考的指令字(0x41000200或0x41000204),所以該指令字同樣作為相同的程序部分整理。因?yàn)槠渲苯舆B接在第一個(gè)相同的程序部分上,所以其對(duì)應(yīng)于該程序部分。
差分?jǐn)?shù)據(jù)的存儲(chǔ)值在利用標(biāo)準(zhǔn)壓縮方法壓縮之后可以進(jìn)一步降低,該差分?jǐn)?shù)據(jù)從收費(fèi)中心發(fā)送到在機(jī)動(dòng)車中安裝的收費(fèi)設(shè)備中。當(dāng)要更新的收費(fèi)設(shè)備在下一次在中心注冊(cè)時(shí),這樣的過程例如被激活,從而交換街道使用數(shù)據(jù)。在與中心第一次接觸之后,直接向收費(fèi)設(shè)備發(fā)送一個(gè)更新請(qǐng)求,緊接著收費(fèi)設(shè)備進(jìn)入用于差分?jǐn)?shù)據(jù)的接收模式。
在數(shù)據(jù)處理設(shè)備11確定差分?jǐn)?shù)據(jù)之后,該設(shè)備通過以太網(wǎng)連接發(fā)送差分?jǐn)?shù)據(jù)到數(shù)據(jù)中心22。數(shù)據(jù)中心等待至今還沒有更新的收費(fèi)設(shè)備再一次在中心注冊(cè)。因此,例如車隊(duì)的兩輛載重汽車剛剛為一次貨物運(yùn)輸而啟動(dòng),并且在載重汽車中安裝的數(shù)據(jù)處理設(shè)備17向數(shù)據(jù)中心注冊(cè)用于接下來獲得街道使用費(fèi)用。接著,數(shù)據(jù)中心22要求設(shè)備17接收差分?jǐn)?shù)據(jù)。在差分?jǐn)?shù)據(jù)通過GSM傳輸?shù)绞召M(fèi)設(shè)備上之后,收費(fèi)設(shè)備根據(jù)一同發(fā)送來的校驗(yàn)和來檢測,是否實(shí)現(xiàn)無錯(cuò)誤的傳輸。此外,利用預(yù)先在收費(fèi)設(shè)備中保存的密碼來驗(yàn)證,利用差分?jǐn)?shù)據(jù)傳送到文件地址是否是正確的,也就是說,差分?jǐn)?shù)據(jù)是否出自于值得信賴的來源。隨后,在收費(fèi)設(shè)備中保存的舊的計(jì)算機(jī)程序的更新過程開始。
另外,在圖3中,這也是可能的,即數(shù)據(jù)處理設(shè)備11本身作為中心而工作,并且相應(yīng)地直接構(gòu)成到收費(fèi)設(shè)備的數(shù)據(jù)連接,并可以將差分?jǐn)?shù)據(jù)傳輸給收費(fèi)設(shè)備。
圖1示出了上面描述的第一個(gè)程序舉例的更新的示意圖。舊程序版本1用于作為復(fù)制原件的更新方法。復(fù)制地址數(shù)據(jù)10詳細(xì)地說明從舊程序版本1中復(fù)制出哪些部分,并且該復(fù)制出來的部分必須復(fù)制到新程序版本2的哪個(gè)位置。該復(fù)制地址數(shù)據(jù)屬于描述相同的程序部分的差分?jǐn)?shù)據(jù)3的第一部分6的定位。在示出的舉例中,作為單獨(dú)的計(jì)算機(jī)指令的位移指令以其二進(jìn)制的形式示出。其可以在操作符號(hào)4(“0xeb”)和操作符號(hào)5(“0x000000”)中分割。
利用屬于差分?jǐn)?shù)據(jù)3的第二部分7的粘貼地址數(shù)據(jù)9,新的程序部分8可以粘貼在相同的程序部分之間。
接下來,更新方法在相同的程序部分中查找?guī)в械刂穮⒖嫉闹噶钭?,并且發(fā)現(xiàn)指令0xeb000000,其原始地參照程序行4。假如該程序行現(xiàn)在在行6中發(fā)現(xiàn),算法剔除復(fù)制地址數(shù)據(jù)。該算法可以相應(yīng)地計(jì)算作為4指令長度的相對(duì)的位移地址,并且因?yàn)樗惴▽?duì)指令0xeb解碼,所以這也是可知的,即相對(duì)的位移地址利用2個(gè)指令的偏差來說明。算法相應(yīng)地計(jì)算0x000002作為新的運(yùn)算域5,并且登記在行2中。新程序版本2可以根據(jù)另一個(gè)校驗(yàn)和來檢驗(yàn)其正確性。
如果成功地實(shí)現(xiàn)了更新,那么各個(gè)收費(fèi)設(shè)備自動(dòng)地啟動(dòng)執(zhí)行新程序版本。
在第二個(gè)程序舉例中,更新方法在相同的程序部分中發(fā)現(xiàn)來自行0x41000104的ldr指令,以及在文字區(qū)域中在程序地址0x41000110上的第二地址參考的參照。第二地址參考在舊程序版本0x41000200中執(zhí)行。所屬的程序行(0x00000001)在新的版本中移動(dòng)到絕對(duì)地址0x41000204。更新算法將該新的地址參考登記在新程序版本中。
權(quán)利要求
1.一種用于在需更新的計(jì)算機(jī)程序的舊程序版本和計(jì)算機(jī)程序的新程序版本之間創(chuàng)建差分?jǐn)?shù)據(jù)的方法,其中-所述新程序版本(1)與所述舊程序版本(2)的二進(jìn)制程序代碼進(jìn)行比較,該程序代碼由指令字構(gòu)成,并且-相同的程序部分被確定,該程序部分不僅存在于所述舊程序版本(2)中,而且存在于所述新程序版本(1),并且至少包括一個(gè)所述指令字,以及復(fù)制地址數(shù)據(jù)(10)作為差分?jǐn)?shù)據(jù)(3)的第一個(gè)部分(6)存儲(chǔ),該復(fù)制地址數(shù)據(jù)確定在所述舊程序版本(2)內(nèi)部和所述新程序版本(1)的內(nèi)部的相同的程序部分的定位,其特征在于,步驟-確定由完全相同的指令字以及包括有地址參考的指令字組合而成的相同的程序部分,-保存差分?jǐn)?shù)據(jù)(3)的第二部分(7),其由不相同的和新的程序部分(8)構(gòu)成,該程序部分包含在所述新程序版本中,以及由粘貼地址數(shù)據(jù)(9)和用于修正地址參考的修正數(shù)據(jù)構(gòu)成,粘貼地址數(shù)據(jù)確定所述新程序版本(2)的二進(jìn)制程序代碼內(nèi)部的所述新程序部分(8)的定位。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,由完全相同的指令詞以及包括有地址參考的指令字組合而成的相同的程序部分被確定,其中,所述地址參考參照另一個(gè)同樣完全相同的指令字。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,重復(fù)地實(shí)現(xiàn)所述相同的程序部分的確定,其中-首先,僅僅完全相同的指令字被作為相同的程序部分來識(shí)別,-接下來,相同的和新的程序部分查找?guī)в兴龅刂穮⒖嫉乃鲋噶钭郑?假如所述地址參考參照相同的程序部分,那么所屬的指令字作為所述相同的程序部分來整理,-緊接著,根據(jù)所述地址參考再一次開始搜索,該地址參考參照相同的程序部分。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,首先所述相同的程序部分作為所述完全相同的指令字的連貫的序列來搜索,其中,所述序列具有最小數(shù)目的所述完全相同的指令字。
5.根據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,其特征在于,所述新的程序部分查找相對(duì)相同的計(jì)算機(jī)指令,在該指令中,操作標(biāo)記(4)存在于兩個(gè)程序版本中,并且運(yùn)算域(5)說明所述地址參考,該地址參考參照所述相同的程序部分。
6.根據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,其特征在于,所述相同的程序部分查找間接存取指令,其運(yùn)算域參照所述地址參考,所屬地址參考又參照所述相同的程序部分。
7.根據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,其特征在于,在所述差分?jǐn)?shù)據(jù)(3)的生成結(jié)束之后,執(zhí)行所述差分?jǐn)?shù)據(jù)(3)的確認(rèn),其中-生成所述新程序版本的拷貝,其中所述相同的程序部分從在復(fù)制地址數(shù)據(jù)(10)的位置上的所述舊程序版本(1)中復(fù)制出來,并且所述新的程序部分(8)被粘貼到粘貼地址數(shù)據(jù)(9)的位置上,-所述所有參照所述相同程序部分的地址參考被查找,并且被參考的所述相同的程序部分的新的定位被計(jì)算,-對(duì)應(yīng)于所述新的定位的所述地址參考的修正被執(zhí)行,-所述程序版本的拷貝與所述新程序版本(2)比較。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,在確認(rèn)時(shí),所述相同的程序部分的被未解釋的數(shù)據(jù)被識(shí)別,其二進(jìn)制的形式總是與所述指令字的二進(jìn)制的形式或者與來自于所述舊程序版本(1)的指令字的序列的二進(jìn)制的形式一致。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,屬于所述未解釋的數(shù)據(jù)的指令字從所述相同的程序部分中刪除,并且作為所述新的程序部分(8)存儲(chǔ)。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,地址數(shù)據(jù)作為所述差分?jǐn)?shù)據(jù)(3)的第三個(gè)部分存儲(chǔ),所述地址數(shù)據(jù)確定二進(jìn)制程序代碼內(nèi)部的所述未解釋的數(shù)據(jù)的定位。
11.一種用于利用在計(jì)算機(jī)程序的舊程序版本(1)的二進(jìn)制程序代碼和新程序版本(2)的二進(jìn)制程序代碼之間的差分?jǐn)?shù)據(jù)(3)更新的方法,其中所述二進(jìn)制程序代碼由指令字構(gòu)成,-所述差分?jǐn)?shù)據(jù)(3)至少包括復(fù)制地址數(shù)據(jù)(10)、新的程序部分(8)以及粘貼地址數(shù)據(jù)(9),-所述復(fù)制地址數(shù)據(jù)(10)確定在所述舊程序版本(1)和新程序版本(2)的內(nèi)部的相同的程序部分的定位,-所述相同的程序部分由完全相同的指令字和包括有地址參考的指令字構(gòu)成,該地址參考分別參照另一個(gè)同樣相同的指令字,-所述新的程序部分(8)是所有的不相同的、包括在所述新程序版本(2)中的程序部分,其在所述新的程序部分(2)的二進(jìn)制程序代碼的內(nèi)部的定位通過所述粘貼地址數(shù)據(jù)(9)確定,利用步驟-從所述舊程序版本(1)中復(fù)制出所述相同的程序部分,并且利用所述復(fù)制地址數(shù)據(jù)(10)在所述新程序版本(2)中定位所述相同的程序部分,-利用所述粘貼地址數(shù)據(jù)(9)在所述新程序版本(2)中粘貼所述新的程序部分(8),-利用屬于所述差分?jǐn)?shù)據(jù)的修正數(shù)據(jù),在所述相同的程序部分中確定新的地址參考,并且修正所述地址參考。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述地址參考被確定,該地址參考參照所述相同的程序部分,并且所述地址參考對(duì)應(yīng)于所述相同的程序部分的新的定位來修正。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述被參考的相同的程序部分的新的定位被作為在所述舊程序版本(1)中的定位與在所述新程序版本(2)中的定位之間的位移來計(jì)算。
14.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述被參考的相同的程序部分的新的定位被作為在所述新程序版本(2)中的絕對(duì)定位來計(jì)算。
15.一種用于創(chuàng)建和傳輸差分?jǐn)?shù)據(jù)(3)的數(shù)據(jù)處理設(shè)備(11),其具有-計(jì)算單元(12),其執(zhí)行根據(jù)權(quán)利要求1-6所述的方法,-與所述計(jì)算單元(12)連接的系統(tǒng)內(nèi)存(13),用于數(shù)據(jù)的緩沖存儲(chǔ),-與所述計(jì)算單元(12)連接的非臨時(shí)數(shù)據(jù)存儲(chǔ)器(14),用于存儲(chǔ)舊程序版本(1)、新程序版本(2)以及差分?jǐn)?shù)據(jù)(3),-與所述計(jì)算單元(12)連接的通信接口(15),用于構(gòu)成到至少另一個(gè)預(yù)備接收的數(shù)據(jù)處理設(shè)備(22)的數(shù)據(jù)連接,并且用于到至少另一個(gè)數(shù)據(jù)處理設(shè)備(22)的所述差分?jǐn)?shù)據(jù)(3)的數(shù)據(jù)傳輸。
16.根據(jù)權(quán)利要求15所述的數(shù)據(jù)處理設(shè)備(11),其特征在于,所述計(jì)算單元(12)與輸入單元(16)連接,該輸入單元用于相同的程序部分的最小值的輸入,該最小值作為至少屬于相同的程序部分的計(jì)算機(jī)指令的數(shù)量,并且所述計(jì)算單元(12)如下地考慮所述相同的程序部分的最小值,即其對(duì)應(yīng)于相同的程序部分,該程序部分的值小于相鄰的新的程序部分(8)的最小值。
17.一種用于接收和處理差分?jǐn)?shù)據(jù)(3)的數(shù)據(jù)處理設(shè)備(17),其具有-計(jì)算單元(18),其執(zhí)行根據(jù)權(quán)利要求7-9所述的方法,-與所述計(jì)算單元(18)連接的通信接口(19),用于構(gòu)成到另一個(gè)預(yù)備發(fā)送的數(shù)據(jù)處理設(shè)備(22)的數(shù)據(jù)連接,并且用于從另一個(gè)數(shù)據(jù)處理設(shè)備(22)接收所述差分?jǐn)?shù)據(jù)(3),-與所述計(jì)算單元(18)連接的非臨時(shí)數(shù)據(jù)存儲(chǔ)器(20),用于存儲(chǔ)舊程序版本(1)、新程序版本(2)以及所述差分?jǐn)?shù)據(jù)(3),-與所述計(jì)算單元(18)連接的系統(tǒng)內(nèi)存(21),用于數(shù)據(jù)的緩沖存儲(chǔ)。
18.根據(jù)權(quán)利要求17所述的數(shù)據(jù)處理設(shè)備(17),其特征在于,在更新所述舊程序版本(1)之后,所述計(jì)算單元(18)根據(jù)校驗(yàn)和來檢查所述新程序版本(2)的有效性。
19.根據(jù)權(quán)利要求17或18所述的數(shù)據(jù)處理設(shè)備(17),其特征在于,在更新所述舊程序版本(1)之后,所述計(jì)算單元(18)根據(jù)文件地址來檢查所述新程序版本(2)的有效性。
20.根據(jù)權(quán)利要求18或19所述的數(shù)據(jù)處理設(shè)備(17),其特征在于,在所述新程序版本(2)無效時(shí),所述計(jì)算單元(18)通過所述舊程序版本(1)替代所述新程序版本(2),并且創(chuàng)建一個(gè)錯(cuò)誤報(bào)告。
21.根據(jù)權(quán)利要求18或19所述的數(shù)據(jù)處理設(shè)備(17),其特征在于,在所述新程序版本(2)有效時(shí),所述計(jì)算單元(18)自動(dòng)執(zhí)行所述新程序版本(2)。
22.根據(jù)權(quán)利要求17至21中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備(17),其特征在于,在接收所述差分?jǐn)?shù)據(jù)(3)之后,所述計(jì)算單元(18)直接開始所述舊程序版本(1)的更新。
23.根據(jù)權(quán)利要求17至22中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備(17),其特征在于,所述通信接口(19)是GSM接口。
24.根據(jù)權(quán)利要求15至23中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備(11、17),其特征在于,發(fā)送之前或者接受之后,所述計(jì)算單元(12、18)利用標(biāo)準(zhǔn)的壓縮方法壓縮或者解壓縮所述差分?jǐn)?shù)據(jù)(3)。
全文摘要
本發(fā)明涉及一種差值壓縮方法,該方法特別被應(yīng)用于計(jì)算機(jī)程序的更新,尤其能夠在窄帶的數(shù)據(jù)傳輸路徑中使用。用于創(chuàng)建差分?jǐn)?shù)據(jù)的本發(fā)明的方法不僅識(shí)別完全一致的程序區(qū),而且還識(shí)別這樣的程序區(qū),即在該程序區(qū)中,被參考的存儲(chǔ)地址根據(jù)相對(duì)于舊程序版本的相同的程序部分的移動(dòng)的位置而改變。該相對(duì)于相同的程序部分的識(shí)別以位移指令和存取指令中被參考的存儲(chǔ)地址的解釋為基礎(chǔ)。僅僅新添加的程序區(qū)以及用于各個(gè)程序部分的地址數(shù)據(jù)作為差分?jǐn)?shù)據(jù)來傳輸。因此,差分?jǐn)?shù)據(jù)所需要的存儲(chǔ)容量極大地降低。在更新舊程序版本時(shí),新的存儲(chǔ)地址對(duì)于移動(dòng)的程序部分來明確地計(jì)算,并且插入到新的要建立的程序版本中。
文檔編號(hào)G06F9/445GK1926513SQ200580006703
公開日2007年3月7日 申請(qǐng)日期2005年2月1日 優(yōu)先權(quán)日2004年3月2日
發(fā)明者斯特凡·根佩萊因, 馬丁·格魯勒 申請(qǐng)人:西門子公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
边坝县| 清流县| 南澳县| 黄龙县| 东乡县| 来宾市| 建瓯市| 金湖县| 沛县| 南投县| 甘泉县| 邹城市| 封丘县| 冀州市| 平陆县| 陇南市| 建德市| 磐安县| 张家港市| 柳州市| 泸水县| 玉树县| 措勤县| 卓尼县| 五河县| 铜川市| 梁河县| 扬中市| 西安市| 宝坻区| 临江市| 始兴县| 鄂州市| 体育| 龙游县| 峨山| 武陟县| 读书| 桓台县| 正定县| 武安市|