TWI439931B - 用於增加三角差動效能之目的碼之產生 - Google Patents

用於增加三角差動效能之目的碼之產生 Download PDF

Info

Publication number
TWI439931B
TWI439931B TW095130535A TW95130535A TWI439931B TW I439931 B TWI439931 B TW I439931B TW 095130535 A TW095130535 A TW 095130535A TW 95130535 A TW95130535 A TW 95130535A TW I439931 B TWI439931 B TW I439931B
Authority
TW
Taiwan
Prior art keywords
updated
module
destination code
code
code module
Prior art date
Application number
TW095130535A
Other languages
English (en)
Other versions
TW200723100A (en
Inventor
Johan Eker
Platen Carl Von
Original Assignee
Ericsson Telefon Ab L M
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Publication of TW200723100A publication Critical patent/TW200723100A/zh
Application granted granted Critical
Publication of TWI439931B publication Critical patent/TWI439931B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

用於增加三角差動效能之目的碼之產生
本發明係關於一電腦程式之經更新目的碼之產生,該經更新目的碼適合於產生一欲載入一記憶體中之經更新記憶體影像,該記憶體中已儲存有一與一電腦程式之當前版本相對應之當前記憶體影像。
諸多數據機電子裝置(例如嵌入式裝置)係由儲存於快閃記憶體中之軟體來控制。快閃記憶體係一類在電子裝置中頻繁使用之記憶體,此乃因其容許多次重寫。然而,寫入作業被限定為每次寫入整個記憶頁面(所謂快閃區段)。一當前快閃記憶體之典型頁面大小為64 kbyte。
當更新儲存於一電子裝置之一快閃記憶體中之軟體以(例如)將新特徵添加至該軟體及/或修正該軟體當前版本中之錯誤時,會重寫或「重新快閃」該快閃記憶體之某些或所有記憶區段。一般而言,較佳應使在一軟體更新期間重寫之快閃頁面數量最少,以最小化裝配軟體更新所需之時間及能量消耗。
特定而言,一其中更新時間極受關注之應用係行動終端之無線(OTA)更新。在此類應用中,已知僅將對當前影像之修改而非整個經更新影像分配至行動終端。該等修改通常被稱作三角差動檔案(delta-files)。通常,在此類系統中,運行於行動終端上之更新代理將所接收修改施加於當前影像,從而使當前影像轉換為經更新版本。因此,通常較佳應減少三角差動檔案之大小,以減少必須經由用於OTA更新之通信通道傳輸之資料量。
此外,通常較佳應降低行動終端中執行軟體更新所需之儲存容量及計算資源量。
此類更新系統之一進一步普遍問題係於更新過程期間終端可能無法工作。因此,較佳應減少重新快閃記憶體所需之時間及因而減少系統之不工作時間。
然而,由於上文提及之快閃記憶體之限制條件,即使軟體源碼之小更新亦可導致大部分快閃頁面被更新,此乃因即使僅改變一單個位元組亦需要完全重寫整個頁面。
已公佈之美國申請案2003/0142556揭示一種快閃記憶體程式化之方法,其中將揮發性資訊或揮發性軟體組件儲存在快閃記憶體裝置之各個快閃記憶體位址空間之末端附近,以使改變或調整快閃區段之需要盡可能輕微。
然而,上述先前技術方法需要關於改變各個資訊組件之預期可能性之資訊。
歐洲專利0472812係關於一種包括一編譯器、一經修改鏈結器及一比較器之差動更新系統,該更新系統產生一包含一經更新機器碼與該機器碼之一先前版本之間的差異之差異程式檔案。該經修改鏈結器接收當前版本之經編譯片段及由該經修改鏈結器為先前版本產生之片段資訊,並根據其與先前版本相比較之大小將該等片段排列於記憶體中。
本發明之一目的係促成經改良之三角差動更新程序。
本發明藉由一種產生一電腦程式之經更新目的碼之方法來解決上述及其他問題,該經更新目的碼適合作為對一鏈結器組件之輸入用於產生一欲載入一儲存媒體中之經更新記憶體影像,該儲存媒體中已儲存有一與一電腦程式之當前版本相對應之當前記憶體影像,該方法包括:-接收至少一個欲自其產生經更新目的碼之經更新輸入碼模組;-處理至少該經更新輸入碼模組以產生至少一個適於由一鏈結器組件鏈結以產生該經更新記憶體影像之經更新目的碼模組;-執行至少一個最佳化過程以減少該經更新目的碼模組與一組當前目的碼模組中一對應者之間的差異,該組當前目的碼模組與該電腦程式之當前版本相對應,其中在將經更新目的碼模組饋送至一鏈結器組件之前執行該最佳化過程。
特定而言,本發明係基於下述認知:當編譯器-或一編譯器之後處理器-在鏈結器階段之前已將所產生目的碼最佳化以減少作為更新對應源碼之結果而引入目的碼中之變化量時,將極大地促使一後續有效三角差動檔案之產生。
由於不依賴於藉由實質上反向設計編譯器及鏈結器過程來於一稍後階段(例如在鏈結器階段)或在經編譯及鏈結之二進製影像中偵測源層階修改之可能性,上述方法首先確保以盡可能少之變化產生所產生之影像,從而促使更有效地產生產出較少三角差動檔案且僅需重寫較少記憶區段之三角差動檔案。
特定而言,於某些實施例中,最佳化步驟包括產生目的碼模組以使該目的碼模組之大小不超過對應之當前目的碼模組之對應大小。於某些實施例中,甚至可產生經更新目的碼模組以具有與對應之當前目的碼模組相同之大小。一優點係記憶體空間中之後續目的碼模組無需因修改目的碼模組而移位/移動。
一進一步之優點係甚至藉助簡易之三角差動檔案產生工具亦可能產生一高效能三角差動檔案,從而避免了對精密或昂貴三角差動檔案產生工具之需要。
於某些實施例中,該至少一個經更新輸入碼模組係至少一個經更新源碼模組,且該方法進一步包括編譯該經更新源碼模組。或者,該經更新輸入碼模組係一編譯器自至少一個對應之經更新源碼模組中產生之至少一個初步目的碼模組。因此,該方法可構建為一接收源碼並產生最佳目的碼之整合編譯器過程,從而容許甚至將編譯過程最佳化以減少經編譯碼中之差異,因而促使後續三角差動檔案產生效能之進一步改良。或者,該方法可構建為一編譯器之後處理步驟,其中該後處理步驟自該編譯器接收目的碼並產生一被饋送至鏈結器之最佳目的碼,從而容許使用一標準編譯工具且因此將該方法整合至一現有碼產生工具鏈中。
當該方法進一步包括自鏈結器接收控制資料(例如來自鏈結器之(例如)標示該經更新目的碼模組大小之大小限制條件之請求)時,可將該方法整合至一用於產生三角差動檔案之專用工具鏈中,其中下游工具將回饋資訊發送至上游工具以提供該三角差動檔案產生之整體最佳化。
於另一較佳實施例中,該方法包括:-產生一組初步目的碼模組;-將該組初步目的碼模組轉接至一鏈結器;-自該鏈結器及一後續三角差動檔案產生器中至少一者接收回饋資料;及-響應於該回饋資料產生經更新目的碼模組。
因此,於此實施例中,需兩遍或更多遍實施目的碼之產生,其中在第二遍中使用自第一遍之下游處理步驟接收之回饋資訊,從而進一步改良所產生目的碼對一有效三角差動檔案產生之適合性。舉例而言,鏈結器可產生對編譯器階段之回饋,致使編譯器重新編譯該源碼之至少一部分。此所具有之優點係該鏈結器可控制該所產生之一組目的碼模組,從而增加鏈結器重新排列目的碼模組之自由度。
當該方法進一步包括接收關於一用以自對應之當前輸入碼模組產生當前目的碼模組之先前處理步驟之處理資訊時,其會促使產生相比於當前版本具有最小變化之目的碼。舉例而言,該處理資訊可包含至少一個關於不同目的模組部分在當前目的碼模組中之當前佈置之當前佈置資訊及關於一先前編譯器步驟之編譯資訊,諸如至少一個源-機器碼映射及關於在先前編譯步驟期間應用哪些編譯最佳化步驟之資訊。或者或另外,該方法包括接收該組當前目的碼模組,從而容許該過程比較經更新目的模組與當前目的碼模組。術語「源-機器碼映射」係源碼結構與對應目的碼實體之間的關係。一函數(常數、類定義等)可對應於一個或數個片段。相依於該實施方案,一單個目的碼實體亦可對應於數個函數(常數、類定義等)。此映射之複雜性相依於實際實施方案。極簡單之映射(例如其中一個源檔案映射至一單個片段)甚至可能無須明確儲存,而複雜映射(例如其中兩個函數結合產生一共用片段)可能必須被儲存以正確地匹配已裝配影像與經更新影像之片段。
於某些實施例中,該方法進一步包括將關於該用於產生經更新目的碼模組之處理步驟之經更新處理資訊儲存於一碼儲存庫中,從而使該處理資訊可用於後續編譯行為。
因此,於某些實施例中,在不同編譯行為之間儲存元資訊並使其可由編譯器存取。該元資訊包含關於如何將源碼元件轉換為目的模組部分之資訊,以使編譯器可在後續翻譯中做出相似或甚至一致之轉換。於某些實施例中,編譯器甚至可能重新使用先前創建之目的碼。
於某些實施例中,經更新目的碼模組包括複數個目的模組部分。舉例而言,每一目的模組部分可包括一函數及一變數中至少一個。一般而言,在本說明中,術語「目的模組部分」意指一目外碼模組之可重新定位實體,特定而言係指一目的碼模組之最小可重新定位實體,且特定而言係指可獨立於其他實體被重新定位之實體。一般而言,目的模組部分可對應於程式化語言之結構實體,諸如函數、程序、類定義、常數定義、變數定義等。
當最佳化步驟包括判定該等目的模組部分在經更新目的碼模組中之順序時,該過程可確保目的模組部分在所產生之經更新目的碼中之相對次序與目的模組部分在當前版本中之次序之差異儘可能地小。
於某些實施例中,最佳化步驟包括將該等目的模組部分中至少一個不包含於一對應於一第一經更新目的碼模組之當前目的碼模組中之部分置於一不同於該第一目的碼模組之第二經更新目的碼模組中,以減少該第一經更新目的碼模組與對應之當前目的碼模組之間的差異。由此可避免因在更新中引入額外模組部分而導致一目的碼模組之大小增加。
通常,一碼產生系統包括:一編譯器,其編譯一源碼並產生一組目的碼模組;及一鏈結器,其以一可載入之記憶體影像形式產生可執行碼。該編譯器及鏈結器可(例如)構建為單獨之可執行軟體程式、構建為一整合軟體發展軟體應用程式之功能模組或諸如此類。
特定而言,於一三角差動檔案更新方案中,將記憶體影像相繼饋送至一產生三角差動檔案之三角差動檔案產生器中,該三角差動檔案代表當前程式碼版本與經更新之程式碼版本之間的差異。因此,所產生之三角差動檔案包含當前記憶體影像與經更新記憶體影像之間的差異,亦即一裝置自儲存於彼裝置中及三角差動檔案中之當前版本產生經更新版本所需之資訊。因此會減小需要載入至該裝置之檔案之大小,從而進一步減少執行一軟體更新所需之時間。
源碼通常包括一系列以某一人類可讀電腦程式化語言寫入之語句。在現代程式化語言中,構成一軟體程式之源碼通常以一個或多個文本檔案(所謂源碼模組)之形式產生。編譯器通常係一電腦程式或一電腦程式之功能組件,其將以一特定程式化語言寫入之源碼翻譯成電腦可讀機器碼。通常,當源碼包括複數個源碼模組時,編譯器個別地編譯每一源碼模組並產生對應之目的碼模組,亦即一對應於每一源碼模組之目的碼模組。
術語「目的碼」意指一通常以二進製機器語言來表達之電腦可讀程式碼,其常態下係一既定翻譯過程(通常稱作編譯)之輸出,其中該輸出原則上準備由一電腦執行。然而,目的碼亦可包括涉及目的碼中其他位置之符號參考。特定而言,當目的碼包括複數個目的碼模組時,對包含於其他目的碼模組中之函數或變數之參考被儲存為符號參考。因此,一目的碼模組通常可在記憶體空間中重新定位且含有未解析參考。特定而言,一可重新定位目的碼模組通常包含符號參考及重新定位資訊,且其後者指示鏈結器如何解析該等參考。可重新定位目的碼模組之一有趣屬性係起始位址及所參考符號之位址皆未決定。因此,重新定位係將對符號之參考替換為實際位址之過程。
鏈結器通常係一電腦程式或一電腦程式之功能組件,其解析構成一軟體發展項目之一組目的碼模組(具體而言任何符號參考)之間的相依性。此外,鏈結器之任務通常包括在記憶體中佈置各目的碼模組,亦即將相對位址指配給一對應位址空間內之不同目的碼模組。該等目的碼模組通常以一硬體及/或平臺特有之低層階檔案格式表示為各自之目的檔案。因此,於某些實施例中,該方法進一步包括將該等經更新目的碼模組饋送至一用於鏈結該等經更新目的碼模組之鏈結器組件中,從而產生適合隨後由一三角差動檔案產生器處理之經更新記憶體影像。
此處,術語「記憶體中碼之佈置」包括不同目的碼模組各自之起始位址或基址,亦即其在由程式碼佔據之位址空間內各自之相對位址。
本文所闡述之方法之一優點係其促成鏈結器階段之進一步最佳化步驟,從而為一後續三角差動檔案產生模組提供一最佳化輸入,並因而促進該三角差動檔案之最佳化產生。鏈結器所執行之最佳化過程可包括決定該等目的碼模組在記憶體中之佈置。
進一步之較佳實施例揭示於附屬申請項中。
應注意,上文及下文闡述之方法特徵可以軟體形式實施,並可因執行諸如電腦可執行指令等程式碼構件而執行於一資料處理系統或其他處理構件上。於此處及下文中,術語「處理構件」包括任一適合用於執行上述功能之電路及/或裝置。特定而言,術語「處理構件」包括通用或專用可程式化微處理器、數位信號處理器(DSP)、應用專用積體電路(ASIC)、可程式化邏輯陣列(PLA)、場可程式化閘陣列(FPGA)、專用電子電路等,或其一組合。
舉例而言,該程式碼構件可自一儲存媒體或經由一電腦網路自另一電腦載入一記憶體,諸如一隨機存取記憶體(RAM)。或者,上述特徵可由硬接線電路而非軟體或與軟體相結合來實施。
可以不同方式實施本發明,包括上文所述之方法及下文中之一資料處理系統,及其他產品構件,其每一個皆產生一個或多個結合最先提及之方法闡述的益處及優點,且每一個皆具有一個或多個較佳實施例,該等較佳實施例對應於結合最先提及之方法闡述的較佳實施例。
特定而言,本發明係關於一種用於產生一電腦程式之經更新目的碼之資料處理系統,該經更新目的碼適合作為一鏈結器組件之輸入以用於產生一欲載入一記憶體中之經更新記憶體影像,其中該記憶體中已儲存有一與一電腦程式之當前版本相對應之當前記憶體影像,該資料處理系統經合適地程式化以執行上文及下文所述方法之步驟。
本發明進一步係關於一種電腦程式產品,其包括程式碼構件,該程式碼構件適於在該程式碼構件隨後被執行於一資料處理系統上時致使該資料處理系統實施上文及下文中所述方法。該電腦程式產品可實施為一其上儲存有該程式碼構件之電腦可讀媒體。
在本說明中,術語「電子裝置」包括任一包括一用於儲存程式碼之記憶體(諸如快閃記憶體)之裝置。此類裝置之實例包括可攜式無線電通信設備及其他手持或可攜式裝置。術語「可攜式無線電通信設備」包括諸如行動電話、傳呼機、通信器(亦即電子記事簿)、智慧型手機、個人數位助理(PDA)、手持電腦或諸如此類等所有設備。
圖1示意性地顯示一種用於更新一電子裝置(例如一行動終端)中軟體之系統之實施例之方塊圖。該系統包括一行動終端101(例如一行動電話或類似裝置)、一軟體更新系統102及一通信介面103。
軟體更新系統102可包括一能夠存取通信網路之伺服器電腦。於某些實施例中,該伺服器電腦之功能可分佈於複數個電腦中,例如經由一電腦網路(例如一區域網路、一廣域網路、一網際網路或類似網路)連接之電腦。軟體更新系統102包括一容許軟體更新系統經由通信介面103傳送資料之介面電路104。舉例而言,該介面電路可包括一串行埠、一並行埠、一短距離無線通信介面(例如一紅外線埠)、一蓝牙收發器或類似裝置。介面電路之進一步實施例包括一網路卡、一DSL數據機、一閘道電腦或類似裝置。
該軟體更新系統進一步包括一經合適程式化以控制及執行更新過程之處理單元105,例如一伺服器電腦之CPU,其中該更新過程包括如本文所述之產生經更新程式碼。該處理單元進一步包括一版本資料庫/儲存庫106,該版本資料庫/儲存庫106中已儲存有欲更新軟體之至少一個基本版本/當前版本及一經更新版本之記憶體影像及其進一步資訊。於某些實施例中,版本資料庫可進一步包括額外資訊,例如用於不同型號之行動終端、用於不同客戶組群之(例如)複數個基本版本及/或經更新版本及/或諸如此類。
通信介面103可係用於在軟體更新系統102與行動終端101之間傳送資料之任一適合有線或無線通信介面。舉例而言,若係一適於經由一蜂巢式通信網路(例如一GSM網路、一UMTS網路、一GPRS網路或類似網路)進行通信之行動電話,則可經由彼蜂巢式通信網路實施該軟體更新系統與該行動終端之間關於一軟體更新之通信,從而避免對行動終端中額外通信介面之需要。
因此,為更新行動終端101上之軟體,行動終端可自該更新系統接收(例如)包括欲重寫之記憶體區段之影像在內的更新指令。
於一使用三角差動檔案之差動更新系統中,更新指令經產生以便其使得行動終端能夠自行動終端中已儲存之現有版本及更新指令中所包含之額外資訊中產生經更新軟體版本。可現場應用三角差動檔案,亦即由行動終端在現有影像上做出改變,從而幾乎不需要額外儲存。此外,由於僅需載入三角差動檔案且由於三角差動檔案通常較新版本小得多,則上述方法減少了載入時間。
因此,在上文中闡述一種其中可應用本文所述碼產生過程之可能方案。然而應瞭解,本文所述之碼產生過程亦可應用於其他更新方案。舉例而言,可經由其他媒體(例如其他通信通道、經由一電腦可讀媒體等)將更新提供給目標裝置。
下文中將更詳細闡述碼產生過程之實施例。
圖2示意性地顯示一電子裝置(例如一行動終端)之一實施例之方塊圖。行動終端101包括一通信塊210、一處理單元211及一記憶體單元212。
通信塊210包括容許經由一蜂巢式通信網路進行基於無線電資料通信之電路及/或裝置。因此,在本說明中,通信塊210包括用於接收及傳輸資料信號之接收電路及傳輸電路。通信塊可進一步包括用於藉由無線電通信技術領域中習知之適合技術合適地處理(例如調變、編碼、放大等)信號之電路。
行動終端進一步包括一處理單元211,例如一經合適程式化之微處理器。處理單元適於決定該行動終端中所儲存軟體之版本、計算所儲存軟體之核對和、及在接收到對應之更新指令時產生該軟體之一經更新版本。
記憶體單元212中已以一預定版本儲存有該軟體及/或其他資料。舉例而言,記憶體212可包括行動終端之韌體,其在被載入處理單元211並由處理單元211執行時實施行動終端之基本功能。該韌體可進一步包括一容許執行應用軟體之作業系統。相應地,記憶體212可進一步儲存有提供額外功能之應用軟體。使用一適合之位址空間來定址記憶體212,從而容許處理單元存取該記憶體之所選部分。於某些實施例中,可在邏輯上或物理上將記憶體212劃分為複數個記憶體區段。舉例而言,記憶體212可包括容許將資料寫入預定大小之區段內之快閃記憶體。
在本說明中,假設將記憶體212劃分為一定數量之預定大小之區段,分別標記為P1、P2、P3、……、PN。然而,應理解亦可替代地使用任一其他記憶體定址方案。當然,應進一步理解,若(例如)欲更新一行動電話之快閃記憶體之整個影像,則可將本文所述之更新過程應用於整個記憶體212,或者,若欲更新一個或多個軟體應用程式,則僅將本文所述之更新過程應用於該記憶體之預定部分。
在下文中,將參照圖3-11闡述一軟體更新過程之不同實例。在圖式中,相同參考編號指代相同或相對應之組件、特徵、實體等。
圖3顯示一軟體更新過程之一實施例之方塊圖。最初,一編譯器303自一源碼儲存庫301(例如一源碼資料庫、一版本管理系統)或直接自一源碼編輯工具接收一個或多個源碼模組302。編譯器303產生一組被饋送至一鏈結器306之目的碼模組305。鏈結器306將目的碼模組305組合成一絕對檔案307以準備用於執行。鏈結模組306所執行的任務之一係解析各單獨編譯之目的碼模組之間的交叉參考及指配最終位址以創建一單個可執行程式307。因此,來自鏈結器之輸出307係一可直接載入(例如)一欲執行該程式之裝置之快閃記憶體內之檔案。鏈結器輸出307亦將稱作一記憶體影像。
將鏈結器輸出307饋送至一亦稱作三角差動檔案產生器之三角差動檔案產生模組308內。三角差動檔案產生器308接收二進製(經更新)影像307及一對應之當前記憶體影像作為輸入並產生一三角差動檔案309,三角差動檔案309作為一更新封包或作為一更新封包之一部分發送至一其記憶體將自當前記憶體影像更新至經更新記憶體影像之裝置。該當前記憶體影像可(例如)被儲存在一影像檔案之儲存庫中,例如一適合之資料庫。於某些實施例中,自一儲存庫310擷取記憶體影像,儲存庫310可係與源儲存庫301相同之儲存庫之一部分。於某些實施例中,三角差動產生器308可(例如)以一所謂映射檔案形式(例如)自儲存庫310接收諸如附加鏈結資訊等額外輸入。
三角差動檔案之產生可示意性地由下列運算來圖解說明:filen e w -fileb a s e → △file
對應地,新版本之實際產生可隨後由行動終端根據下列運算來執行:fileb a s e +△file → filen e w
應理解,產生三角差動檔案(標記為上述標記中之「-」)及在行動終端上產生新版本(標記為上述標記中之「+」)之上述運算可包括或多或少之複雜運算。合適之三角差動檔案技術之實例包括US 6,546,552中及由Brenda Baker、Udi Manber及Robert Muth所著「Compressing Differences of Executable Code(in ACM SIGPLAN Workshop on Compiler Support for System Software(WCSSS'99),1999.)中闡述之方法。
在圖3之實施例中,編譯器303進一步自源儲存庫接收源檔案變化資訊304。在某些實施例中,變化資訊304包含關於在當前更新期間(亦即自對應於當前所安裝軟體之源碼至由編譯器303編譯之經更新源碼之更新)哪些源碼組件、(例如)哪些函數、方法、類及或諸如此類已得到修改之資訊。此資訊容許編譯器以儘可能少之差異產生經更新目的碼模組305。
圖4顯示一類似於結合圖3所述過程之軟體更新過程之另一實施例之方塊圖。圖4之過程與圖3之過程不同之處在於圖4實施例之編譯器303接收關於一先前編譯之資訊413,特定而言關於產生當前已安裝記憶體影像之編譯之資訊。相應地,根據此實施例,編譯器303將關於每一編譯之資訊412儲存於儲存庫310中,從而使該資訊可用於後續編譯。應理解,作為選擇,可將編譯資訊儲存在一不同儲存庫中。編譯資訊412及413可包含關於源-機器碼映射、目的碼佈置、編譯器最佳化資訊及/或諸如此類等資訊。因此,編譯器可將相同之最佳化步驟應用於源碼之相同部分,從而減少所產生目的碼中之差別。特定而言,若編譯器接收關於先前編譯之資訊及關於源碼變化之變化日誌兩者,則編譯器可確保以與先前編譯相同之相同方式(例如藉助相同之最佳化設定值)編譯源碼之彼等尚未改變之部分,從而在目的碼中產生最小變化。
於某些實施例中,先前編譯之結果甚至可儲存於(例如)儲存庫310中,從而容許直接再使用先前經編譯之組件。
圖5顯示一類似於結合圖3所述過程之軟體更新過程之再一實施例之方塊圖。圖5之過程與圖3之過程不同之處在於圖5實施例之編譯器303自鏈結器306接收回饋資訊514,例如對不同目的碼模組大小之請求/限制。由此,回饋信號使編譯器編譯一個或多個源檔案,從而產生更適合於由鏈結器306產生最佳記憶體佈置之目的碼模組/檔案。舉例而言,若鏈結器決定可用於一經修改目的碼模組之空間已增加(例如由於在當前構建中參照經修改目的碼模組而隨後定位於記憶體空間中之目的碼模組將不再出現在經更新構建中),則鏈結器可將一回饋信號514發送至編譯器以通知該編譯器:經修改目的碼模組之大小上限已增大。此依次可使編譯器避免經修改目的碼模組之分裂。於某些實施例中,圖5之過程可作為一兩遍式過程來實施,其中鏈結器基於第一遍(亦即一第一編譯及鏈結)之鏈結結果產生回饋信號。回饋信號514使編譯器重新編譯一個或多個源檔案,從而產生更適合於由鏈結器產生最佳記憶體佈置之經修改目的檔案。在某些實施例中,回饋信號514甚至可包含關於在每一目的碼模組中包含哪些目的模組部分(例如哪些函數)之資訊。
圖6顯示一類似於結合圖3所述過程之軟體更新過程之再一實施例之方塊圖。圖6之過程與圖3之過程不同之處在於圖6實施例之編譯器303如結合圖4所述接收關於先前編譯之資訊413,且圖6實施例之編譯器303如結合圖5所述自鏈結器306接收回饋資訊514。此外,於此實施例中,鏈結器306直接自源儲存庫接收變化資訊615,例如關於先前鏈結器選項或諸如此類之資訊。
此外,圖6之鏈結器306接收儲存於儲存庫310中之關於先前記憶體影像/構建之資訊616。相應地,如資料流箭頭617所指示,鏈結器306將關於經更新軟體之當前鏈結過程之資訊儲存於儲存庫中供將來使用。儲存及擷取儲存庫中之資訊可包含所產生影像檔案本身、關於目的碼模組在影像檔案中之佈置的佈置資訊、源-機器碼映射等。
應理解,可以不同方式組合上述實施例中由編譯器接收之不同類型的資訊,亦即在某些實施例中,編譯器可接收該資訊之一些或全部。
圖7示意性地圖解說明在軟體更新之前及之後一快閃記憶體之記憶體佈置,其中該佈置藉由引入一溢出塊而得到最佳化。
圖7a圖解說明一快閃記憶體之一部分位址空間之結構。將位址空間701劃分為一定數量之頁面,分別標記為P1、P2、P3、P4、P5、P6、P7及P8。該等頁面具有一預定大小S;於一典型習用之快閃記憶體中,頁面大小為64千位元(kbyte);然而,亦可能使用其他大小。
圖7b圖解說明一儲存於位址空間701中之程式碼版本V1(其一般由參考編號702代表)之記憶體佈置之實例。此實例中之程式碼版本包括五個分別標示為A、B、C、D及E之目的碼模組。該等目的碼模組具有不同大小且依序排列於位址空間701中。
圖7c圖解說明該程式碼之一經更新版本V2,其一般被標示為703。在此實施例中,假設版本V1與V2之間的唯一變化係將模組A替換為模組A',其中假設模組A'大於先前模組A,如A'所需之額外記憶體空間705所說明。假設剩餘模組B、C、D及E不改變,亦即與版本V1之對應部分一致。然而,如圖7c中參考編號706所說明,當依序排列經更新版本V2時,需要重寫記憶頁面P1至P7之整個內容。頁面P1、P2及P3因模組A之內容已改變為模組A'而需要被重寫,剩餘頁面因模組B、C、D及E之位置在版本V1與V2之間發生改變而需要被重寫。
圖7d圖解說明基於一最佳化編譯步驟之經更新程式版本V2之最佳記憶體佈置,其一般標示為704。在此實施例中,編譯器已根據嚴格大小限制條件(亦即藉由使用關於產生當前版本V1之先前編譯之資訊)產生經更新模組,從而使編譯器產生經更新目的碼模組A'1 、且使版本V2之B-E不大於當前版本V1之對應目的碼模組A-E。相應地,編譯器已產生兩個目的碼模組A'1 及A'2 替代單個目的碼模組A',以使A'1 具有與版本V1之原始模組A相同之大小。額外目的碼模組部分A'2 包括源自與A'對應之源碼模組之額外目的碼,而A'不能被置於大小受限制之目的碼模組A'1 上。因此'後續之鏈結器可分開放置模組部分A'1 及A'2 ,以減少V2中所產生之記憶體影像相比於當前版本V1之差異。在圖7d之實例中,鏈結器已將「溢出」目的碼模組A'2 附著至記憶體影像。因此,當藉助最佳之經更新版本V2更新記憶體以更換先前版本V1時,亦即藉由重新快閃一快閃記憶體之相關頁面時,如參考編號708所圖解說明,僅需重寫頁面P1、P2及P7。剩餘頁面(亦即頁面P3、P4、P5、P6及P8)則無需被重寫。
應理解,在某些情況下,編譯器可將「溢出」目的碼A'2 置於其他目的碼模組中之一個內。舉例而言,若亦更新其他目的碼模組中之一個,且作為更新之結果而減小其大小,則可將額外之目的碼A'2 置於彼另一經更新目的碼模組中而不違反其大小限制條件。
此外,若編譯器基於關於版本V1與V2之間的源碼之變化資訊及/或關於版本V1之編譯之資訊而產生與版本V1之原始目的碼模組A相似之目的碼模組A'1 ,則可進一步減少所產生影像中之差異。舉例而言,如圖7實例中之情形,若目的碼模組A跨越多於一個記憶體區段(圖7中之頁面P1與P2),則編譯器可能能夠將對目的碼模組A'1 之變化限定為僅侷限於部分目的碼模組,以使記憶體區段P1與P2不會全部受到自A更新至A'1 之影響。此外,減少A與A'1 之間的差異會進一步降低需改變其他參考A'1 之目的碼模組中之參考(此亦將導致其他目的碼模組中之變化)之危險。
在下文中,將參照圖8闡述一經更新目的碼模組之分裂之實例。
圖8示意性地圖解說明促進鏈結器做出一最佳記憶體佈置之目的碼模組之產生。
圖8a圖解說明由一編譯器303將一源碼模組「A.c」(其一般標示為801)之當前版本V1編譯為一目的碼模組「A.o」(其一般標示為802)之編譯。在此實施例中,假設源碼模組801定義三個函數f1()、f2()及f3()。相應地,目的碼模組802包括對應的三個目的模組部分,其每一個皆包括用於執行函數f1()、f2()及f3()中一對應函數之目的碼。函數f1()進一步相依於函數f2()及f3()。不同目的模組部分在目的碼模組內之放置由編譯器303在編譯期間決定。
圖8b圖解說明編譯器303對源碼模組「A.c」(標示為803)之經更新版本V2之編譯。在此實例中,假設經更新源碼模組與原始版本V1不同之處在於源碼現在界定函數f1()、f3()、g1()及g2()。此外,函數f1()現在相依於函數f3()、g1()及g2()。因此,與版本V1相比較,已移除對函數f2()之定義,已改變對函數f1()之定義,且已添加兩個新函數g1()及g2()。
編譯器303接收源碼803之經更新版本V2及在版本V1之先前編譯期間產生之目的碼802。或者或另外,編譯器303可接收關於目的模組部分在先前版本V1中之佈置的佈置資訊,而非接收整個目的檔案802。
根據先前目的碼模組802,編譯器303決定經更新目的碼模組之最大大小及目的碼模組部分之目標佈置。相應地,在此特定實例中,編譯器可產生一不大於先前目的碼模組「A.o」之經更新目的碼模組「A'1 .o」(804)。此外,編譯器可將已存在於目的碼之先前版本中之函數f1()及f3()定位於相同位置,亦即與先前版本中目的碼模組內相同之相對位址。在此實例中,假設對應於函數g2()之目的碼模組部分不大於先前函數f2()。因此,編譯器可將新函數g2()置於與先前函數f2()相同之位置。最後,編譯器將函數g1()置於一單獨之「溢出」目的碼模組「A'2 .o」(標示為805)中。
因此,上述實例圖解說明編譯器303可產生一不大於先前版本之目的碼模組。在某些實施例中,編譯器甚至可經組態以產生一經更新目的檔案,以(例如)藉由適合裝填使其總大小保持不變。因此避免了在後續鏈結過程中之模組置換。
此外,該實例顯示編譯器如何可將未改變及經修改之模組部分置於與在先前版本中相同之位置,而無論其在新的源檔案中之位置如何。
圖9顯示一目的碼產生過程之實施例之流程圖。
圖9a顯示一目的碼產生過程之一實施例之流程圖。該過程開始於步驟901,其中(例如)自源儲存庫301接收一欲編譯之源碼模組/檔案之經更新版本。在後續步驟902中,該過程在源碼模組中識別數個模組部分,例如函數、類定義等,並(例如)基於如上文闡述自源儲存庫接收之變化資訊304,或基於源碼之先前版本及對應目的碼之先前版本,決定各個模組部分之版本狀態。特定而言,該過程決定哪些模組部分已被修改、尚未變化、係新的或已被刪除。特定而言,與先前目的碼模組相比已被刪除之目的模組部分導致在經更新目的碼模組中產生可在定位所添加或經修改之目的模組部分時使用之空記憶體空間。在後續子過程903中,處理每一經標識模組部分,從而產生對應之目的模組部分。此子過程之一實施例將在下文中更詳細闡述。具體而言,子過程903進一步接收關於已因所刪除之目的模組部分而變得可用的記憶體槽之資訊907。
在後續步驟904中,將所產生之目的模組部分組合為一經更新目的碼模組。在某些實施例中,該過程將未變化之目的模組部分定位在與先前版本中相同之記憶體位置上,從而進一步減少先前版本與經更新版本之間的差異。
在步驟905中,將所產生目的碼模組之最終大小與對應目的碼模組先前版本(例如,如上文所述作為資料413自一目的碼儲存庫310獲得)之大小比較,並視需要與自鏈結器接收之任何大小限制條件/請求比較。若所產生之經更新目的碼模組滿足該(等)大小限制條件,則該過程終止。否則,若經更新目的碼模組過大,特定而言大於先前版本,則該過程將該目的碼模組分裂為兩個或更多個模組(步驟906)。上文中已參照圖7及8闡述此種分裂之一實例。
若組合步驟904與後續之鏈結器過程及目的碼格式相容,則可如圖9b中圖解說明將其省略。
圖9b顯示一目的碼產生過程之替代實施例之流程圖。此過程類似於圖9a之過程。然而,在此實施例中,並不將所產生目的模組部分組合為一較大之目的碼模組。因此,該過程導致產生數個較小實體,該等實體可彼此獨立地由鏈結器重新定位,從而容許鏈結器在產生一最佳化記憶體影像時具有更大自由度。舉例而言,其可有益於將空記憶體槽之再使用延遲至鏈結時間,此乃因鏈結器可針對整個軟體應用程式而非針對一單個源碼模組實施一總體最佳化。
圖10顯示圖9a及9b之目的模組部分產生子過程903之一實施例之流程圖。子過程903對所有經識別模組部分執行一循環。針對每一模組部分,該過程最初決定彼模組部分是否已在更新期間得到修改,該模組部分是否係一於更新期間引入之新模組部分,或該模組部分是否保持未被該更新改變。若該模組部分未改變,則該過程前進至步驟1002;若該模組部分經修改,則該過程前進至步驟1003;而當該模組部分係一新模組部分時,該過程前進至步驟1007。
在步驟1002中,該過程編譯該(等)未變化之模組部分。當編譯器使用與先前版本之編譯期間相同之編譯選項、最佳化步驟等時,該編譯導致產生一與此目的模組部分之先前版本極為相似或甚至完全一致之經更新目的模組部分。相應地,該過程可(例如)自儲存庫310接收關於編譯先前版本之資訊或甚至該目的碼本身之先前版本之資訊。
在步驟1003中,該過程處理經修改之目的模組部分。具體而言,該過程編譯經修改目的模組部分,從而產生經修改目的碼。若一經修改目的模組部分之大小相比於先前版本已減小,則可使用填充填滿剩餘之記憶體空間,從而提供一與對應之先前版本具有同一大小之經修改目的模組部分。該填充可(例如)藉由僅將當前之記憶體內容留在經填充記憶體空間內而達成。
在步驟1004中,該過程決定經修改目的模組部分之大小是否已增加。若該大小尚未增加,則該過程繼續至步驟1009。否則,該過程在步驟1005繼續,其中將該模組部分一分為二:一部分安裝在既定記憶體槽內,而另一部分可在後續鏈結過程期間置於任何其他地方。因此,該過程產生一包含第二模組部分之溢出模組部分(步驟1006)。應注意,分裂一目的模組部分(例如一函數)可能需要引入額外之分支指令。於一實施例中,該過程實施一控制流分析以決定是否可避免引入額外之分支指令,且若不能避免,則標識一個或多個適合之分裂點。舉例而言,通常較佳應避開碼之繁忙(亦即頻繁執行)部分,諸如內部循環。為決定適合之分裂點,可利用習知之控制流分析技術。舉例而言,Alfred V.Aho、Ravi Sethi、Jeffrey D.Ullman之「Compilers:Principles,Techniques and Tools」(Addison-Wesley,1986)中第604頁即揭示一種用於偵測循環之演算法。
在步驟1007中,該過程編譯新模組部分,亦即先前版本中未出現但於更新期間添加之模組部分。於一實施例中,該過程產生一大小受限之目的模組部分,以便若已偵測到任何(例如)因刪除另一目的模組部分而可用之記憶體槽其適合可用記憶體槽之其中一個。若所有部分皆適合此類記憶體槽(步驟1008),則該過程繼續至步驟1009。否則,該過程在步驟1006繼續,其中將不適合該等可用記憶體槽之模組部分定位於一溢出模組部分中。
圖11a-b顯示一軟體更新過程之進一步實施例之方塊圖。在圖11a之實施例中,由一編譯器模組1103及一鏈結器模組1106執行更新過程。特定而言,如本文所述,編譯模組1103自一源儲存庫1101接收經更新源碼1102,並產生經更新目的碼模組1105。相應地,編譯器進一步接收包含下述之一個或多個的資訊1104:關於源碼變化之變化資訊、關於編譯源碼之先前版本之編譯器資訊、關於先前目的碼之目的碼資訊等。基於所接收資訊,編譯器產生與目的碼之先前版本儘可能相似之經更新目的碼模組1105。將經更新目的碼轉接至鏈結器1106。
於圖11b之實施例中,由一編譯器模組1113、一後處理模組1123及一鏈結器模組1106執行更新過程。在此實施例中,編譯器1113可係一習用編譯器,其自儲存庫1101接收經更新源碼1102並產生經更新目的碼1115。後處理器1123如上文所述接收目的碼1115及額外資訊1104。後處理器1123將各別目的模組部分重新定位於由編譯器1113產生之目的碼模組中,以最小化經更新目的碼與該目的碼之先前版本之間的差異。因此,後處理器可如本文所述重新排列目的模組部分,分裂目的碼模組及/或目的模組部分,並產生溢出目的碼模組,從而產生被饋送至鏈結器1106之最佳經更新目的碼模組1125。
圖11b實施例之一優點係該後處理器可構建為一單獨之軟體組件,其可結合習用之編譯器及/或鏈結器來使用。因此,此實施例僅需要相對少之軟體設計,此乃因其容許再使用現有之軟體發展工具。
另一方面,圖11a之實施例具有下列優勢:編譯器1103可執行額外之最佳化步驟以進一步減少目的碼之經更新版本與先前版本之間的差異。舉例而言,編譯器可適於(例如)藉由使用相同之最佳化技術等產生與先前版本之目的碼相似之目的碼。
因此,在上文中已闡述一種在三角差動更新封裝之創建過程中整合編譯器之方法。從而藉由在軟體之後續版本中使用接近一致之記憶體佈置來避免無謂之變化。不同於鏈結器及鏈結器之後處理器(諸如三角差動檔案產生器),可賦予一編譯器在大小限制條件下產生碼及分裂不再適合其先前槽之模組部分的能力。
應注意,本文主要參照快閃記憶體闡述上述實施例。然而,應瞭解,本文所述方法亦可結合其他類型之記憶體來實施,包括可以更小單元(例如按位元組(byte-wise)或甚至按位元(bitwise))寫入之記憶體類型。此外,本文所述方法亦可結合其他儲存媒體應用,諸如光碟、硬碟、軟碟、磁帶及/或其他類型之磁性或光學儲存媒體。舉例而言,本文所述方法亦可應用於諸如桌上型電腦等電腦之更新,其中該電腦在執行程式之前將來自一第二記憶體/儲存媒體之程式載入RAM。
本發明可藉助包括數個相異元件之硬體及一經合適程式化之電腦來實施。在列舉數個構件之裝置請求項中,可藉由硬體(例如如本文所述之一經合適程式化之微處理器或電腦及或一個或多個通信介面)之一個且同一物項實施數個該等構件。在彼此不同之附屬專利申請項中引用特定方法或在不同實施例中闡述特定方法此一事實並不表示不能有利地使用該等方法之組合。
應強調,術語「包括」在用於此說明書中時旨在指定所注明特徵、整數、步驟或組件之存在,而不排除一個或多個其他特徵、整數、步驟、組件或其組群之存在或添加。
101...行動終端
102...軟體更新系統
103...通信介面
104...介面電路
105...處理單元
106...版本資料庫/儲存庫
210...通信塊
211...處理單元
212...記憶體單元
301...源碼儲存庫
302...源碼模組
303...編譯器
304...變化資訊
305...目的碼模組
306...鏈結器
307...絕對檔案/可執行程式/鏈結器輸出/二進製(經更新)影像
308...三角差動檔案產生模組
309...三角差動檔案
310...儲存庫
412...編譯資訊
413...編譯資訊
514...回饋資訊
615...改變資訊
616...資訊
617...資料流箭頭
701...位址空間
702...程式碼版本V1
703...經更新版本V2
704...最佳化記憶體佈置
705...額外記憶體空間
801...源碼模組「A.c」
802...目的碼模組「A.o」
803...源碼模組「A.c」
804...經更新目的碼模組「A'1 .o」
805...「溢出」目的碼模組「A'2 .o」
1101...源儲存庫
1102...經更新源碼
1103...編譯模組
1104...資訊
1105...經更新目的碼模組
1106...鏈結模組
1113...編譯模組
1115...目的碼
1123...後處理模組
1125...最佳化目的碼模組
根據上文參照圖式所闡述之實施例,本發明之上述及其他態樣將更加明顯及清晰,圖式中:圖1示意性地顯示一種用於更新一行動終端中軟體之系統之實施例之方塊圖;圖2示意性地顯示一電子裝置(例如一行動終端)之方塊圖;圖3顯示一軟體更新過程之一實施例之方塊圖;圖4顯示一軟體更新過程之另一實施例之方塊圖;圖5顯示一軟體更新過程之再一實施例之方塊圖;圖6顯示一軟體更新過程之再一實施例之方塊圖;圖7示意性地圖解說明一快閃記憶體在軟體更新之前及之後的記憶體佈置,其中該步驟藉由引入一溢出塊而得到最佳化。
圖8示意性地圖解說明促進鏈結器做出一最佳記憶體佈置之目的碼模組之產生;圖9顯示一目的碼產生過程之實施例之流程圖;圖10顯示圖9之目的模組部分產生子過程之一實施例之流程圖;圖11a-b顯示一軟體更新過程之另一實施例之方塊圖。
301...源碼儲存庫
302...源碼模組
303...編譯器
304...變化資訊
305...目的碼模組
306...鏈結器
307...絕對檔案/可執行程式/鏈結器輸出/二進製(經更新)影像
308...三角差動檔案產生模組
309...三角差動檔案
310...儲存庫
412...編譯資訊
413...編譯資訊
514...回饋資訊
615...改變資訊
616...資訊
617...資料流箭頭

Claims (23)

  1. 一種用於產生一電腦程式之經更新目的(object)碼之方法,該經更新目的碼適合作為一鏈結器組件之輸入,以用於產生一欲載入一儲存媒體之經更新記憶體影像,該儲存媒體中已儲存有一與該電腦程式之當前版本相對應之當前記憶體影像,該方法包括:- 接收至少一個經更新輸入碼模組,自其產生經更新目的碼;- 處理至少該經更新輸入碼模組以產生至少一個適於由該鏈結器組件鏈結之經更新目的碼模組,以產生該經更新記憶體影像;及- 執行至少一個最佳化過程以減少該經更新目的碼模組與一組當前目的碼模組中一對應者之間的差異,該組當前目的碼模組與該電腦程式之當前版本相對應,其中在將該經更新目的碼模組饋送至該鏈結器組件之前,執行該最佳化過程,及其中該經更新輸入碼模組係至少一個由一編譯器(compliler)自至少一個對應之經更新源碼(source code)模組中產生之初步目的碼(preliminary object)模組。
  2. 如請求項1之方法,其中該至少一個經更新輸入碼模組係至少一個經更新源碼模組,且其中該方法進一步包括編譯該經更新源碼模組之步驟。
  3. 如請求項1之方法,進一步包括自該鏈結器組件接收控 制資料之步驟。
  4. 如請求項3之方法,其中該控制資料包含對該經更新目的碼模組大小之大小限制條件。
  5. 如請求項1之方法,進一步包括接收該組當前目的碼模組之步驟。
  6. 如請求項1之方法,進一步包括接收指示該至少一個經更新輸入碼模組與至少一個對應之當前輸入碼模組之間之差異的變化資訊之步驟,該至少一個當前輸入碼模組與該組當前目的碼模組相對應。
  7. 如請求項1之方法,進一步包括接收關於一先前處理步驟之處理資訊之步驟,該處理步驟產生來自至少一個對應之當前輸入碼模組的該組當前目的碼模組。
  8. 如請求項7之方法,其中該處理資訊包含當前佈置資訊及關於一先前編譯(compilation)步驟的編譯器資訊之至少之一者,該當前佈置資訊係指示在該當前目的碼模組中的一組目的模組部分之一當前佈置。
  9. 如請求項8之方法,其中該編譯器資訊包含至少一個源-機器碼(source-to-machine code)映射及指示在該先前編譯步驟期間應用哪些編譯器最佳化步驟之資訊。
  10. 如請求項1之方法,進一步包括儲存經更新處理資訊之步驟,該經更新處理資訊係關於用於產生該經更新目的碼模組以供用於一後續處理步驟之該處理步驟。
  11. 如請求項10之方法,其中該經更新處理資訊包含佈置資訊及關於一編譯步驟之編譯器資訊之至少之一者,其中 該佈置資訊係指示在該經更新目的碼模組中一組目的模組部分的一佈置。
  12. 如請求項11之方法,其中該編譯器資訊包含至少一個源-機器碼映射及指示在該編譯步驟期間應用哪些編譯器最佳化步驟之資訊。
  13. 如請求項1之方法,其中該經更新目的碼模組包括複數個目的模組部分。
  14. 如請求項13之方法,其中該等目的模組部分之每一個係可在一記憶體影像中重新定位之一可重新定位實體。
  15. 如請求項13之方法,其中該等目的模組部分之每一個包括一函數定義、一程序定義、一類(class)定義、一常數定義、一變數定義中之至少一個。
  16. 如請求項13之方法,其中該最佳化步驟包括決定在該經更新目的碼模組中該等目的模組部分之一順序。
  17. 如請求項13之方法,其中該最佳化步驟進一步包括將不包含於與一第一經更新目的碼模組相對應之一當前目的碼模組中之該等目的模組部分之至少一個置於與該第一經更新目的碼模組不同之一第二經更新目的碼模組中,以減少該第一經更新目的碼模組與該對應之當前目的碼模組之間的差異。
  18. 如請求項1之方法,進一步包括將至少該經更新目的碼模組饋送至用於鏈結至少該經更新目的碼模組之一鏈結器組件中,從而產生適合由一三角差動(delta)檔案產生器後續處理之該經更新記憶體影像。
  19. 如請求項1之方法,其中該電腦程式係適於由一行動終端執行之電腦程式。
  20. 一種用於產生一電腦程式之經更新目的碼之資料處理系統,該經更新目的碼適合作為一鏈結器組件之輸入以用於產生一欲載入一記憶體中之經更新記憶體影像,其中該記憶體中已儲存有與該電腦程式之一當前版本相對應之一當前記憶體影像,該資料處理系統經適當程式化以執行如請求項1之方法的步驟。
  21. 一種包括程式碼構件之非暫時性(non-transitory)電腦程式產品,當在一資料處理系統上執行該程式碼構件時,該程式碼構件適於使該資料處理系統執行如請求項1之方法。
  22. 如請求項21之非暫時性電腦程式產品,其中該電腦程式產品包括一編譯器。
  23. 如請求項21之非暫時性電腦程式產品,其中該電腦程式產品包括一編譯器之一後處理器,該後處理器適於接收由該編譯器產生之目的碼及產生欲饋送至一鏈結器組件中之經修改目的碼。
TW095130535A 2005-08-18 2006-08-18 用於增加三角差動效能之目的碼之產生 TWI439931B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP05388066.2A EP1755034B1 (en) 2005-08-18 2005-08-18 Object code generation for increasing the performance of delta files
US71027405P 2005-08-22 2005-08-22

Publications (2)

Publication Number Publication Date
TW200723100A TW200723100A (en) 2007-06-16
TWI439931B true TWI439931B (zh) 2014-06-01

Family

ID=35457808

Family Applications (1)

Application Number Title Priority Date Filing Date
TW095130535A TWI439931B (zh) 2005-08-18 2006-08-18 用於增加三角差動效能之目的碼之產生

Country Status (4)

Country Link
US (1) US20090113386A1 (zh)
EP (1) EP1755034B1 (zh)
TW (1) TWI439931B (zh)
WO (1) WO2007020082A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7694291B2 (en) * 2004-04-06 2010-04-06 Hewlett-Packard Development Company, L.P. Build optimizer tool for efficient management of software builds for mobile devices
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8434059B2 (en) * 2009-05-01 2013-04-30 Apple Inc. Systems, methods, and computer-readable media for fertilizing machine-executable code
US9529574B2 (en) 2010-09-23 2016-12-27 Apple Inc. Auto multi-threading in macroscalar compilers
US8621448B2 (en) * 2010-09-23 2013-12-31 Apple Inc. Systems and methods for compiler-based vectorization of non-leaf code
US9069958B2 (en) * 2011-09-28 2015-06-30 International Business Machines Corporation Creating and maintaining a security policy
US9342285B2 (en) 2012-11-30 2016-05-17 Huawei Technologies Co., Ltd. Method and apparatus for detecting code change
CN103123588A (zh) * 2013-02-05 2013-05-29 东莞宇龙通信科技有限公司 一种获取差分升级补丁的方法及系统
US9268552B1 (en) * 2013-06-18 2016-02-23 Ayla Networks, Inc. Patching improvement for executables in memory constrained devices
CN105094879A (zh) * 2014-05-23 2015-11-25 西安中兴新软件有限责任公司 软件升级方法及移动终端
CN103984582B (zh) * 2014-06-04 2017-05-31 网易(杭州)网络有限公司 一种热更新方法和装置
US9430220B2 (en) * 2014-07-22 2016-08-30 GM Global Technology Operations LLC Method, medium, and apparatus for re-programming flash memory of a computing device
US9535688B2 (en) * 2014-07-23 2017-01-03 Verizon Patent And Licensing Inc. Efficient deployment of application revisions and implementation of application rollbacks across multiple application servers
KR102332669B1 (ko) * 2015-04-27 2021-11-30 삼성전자 주식회사 전자 장치의 동적 언어를 처리하는 방법 및 이를 사용하는 전자 장치
WO2017158663A1 (ja) * 2016-03-15 2017-09-21 パナソニックIpマネジメント株式会社 データ生成装置、組込端末、ファームウェア更新システム及びデータ生成方法
US10303460B2 (en) 2017-07-25 2019-05-28 Aurora Labs Ltd. Self-healing learning system for one or more vehicles
CN109582310B (zh) * 2018-11-30 2022-11-25 北京微播视界科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN113778515B (zh) * 2021-11-09 2022-03-04 北京世纪好未来教育科技有限公司 确定程序包变更信息的方法和装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834171B2 (ja) 1989-02-06 1998-12-09 株式会社日立製作所 コンパイル方法
DE59108978D1 (de) 1990-08-28 1998-06-10 Landis & Gyr Tech Innovat Verfahren zum Aendern einer in einem Computer eines Gerätes abgespeicherten Maschinensprachenfassung eines ersten Programms in eine Maschinensprachenfassung eines durch mindestens eine Aenderung vom ersten Programm abgeleiteten zweiten Programms
US5469572A (en) 1992-12-01 1995-11-21 Taylor; James M. Post compile optimizer for linkable object code
IL125846A0 (en) 1998-08-19 1999-04-11 Emony Incremental program update
CA2355989A1 (en) * 2001-08-27 2003-02-27 Ibm Canada Limited-Ibm Canada Limitee Compiling source code files having multiple
EP1331643B1 (en) * 2002-01-29 2009-12-16 Agere Systems Inc. Differential flash memory programming technique
EP1614034B1 (en) * 2003-04-11 2012-01-25 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
US7031972B2 (en) * 2003-07-21 2006-04-18 Innopath Software, Inc. Algorithms for block-level code alignment of software binary files

Also Published As

Publication number Publication date
TW200723100A (en) 2007-06-16
US20090113386A1 (en) 2009-04-30
EP1755034A1 (en) 2007-02-21
EP1755034B1 (en) 2017-01-18
WO2007020082A1 (en) 2007-02-22

Similar Documents

Publication Publication Date Title
TWI439931B (zh) 用於增加三角差動效能之目的碼之產生
JP4903686B2 (ja) フラッシュメモリのプログラミング
US7739679B2 (en) Object ordering tool for facilitating generation of firmware update friendly binary image
US7779055B2 (en) Device memory management during electronic file updating
EP1956482B1 (en) Generating delta updates for a processing device
KR101213275B1 (ko) 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법
EP1755039B1 (en) Feedback linker for increased delta performance
KR100871778B1 (ko) 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
CN101026825A (zh) 用于补丁最小化工具的系统和方法
US8001518B2 (en) Configuring a shared library to accommodate relocatable data in a pervasive device
US7844734B2 (en) Dynamic addressing (DA) using a centralized DA manager
CN111176717A (zh) 生成安装包的方法、装置及电子设备
CN108829465B (zh) 一种基于直接读写flash的本地动态加载系统及方法
CN1758220A (zh) 一种升级软件版本的方法
KR20010001869A (ko) 펌웨어 보드의 프로그램을 변경하기 위한 장치 및 방법
US20040181777A1 (en) Method and device for programming electronic devices using a uniform parameter format
US8949802B1 (en) Sharding program compilation for large-scale static analysis
KR100478463B1 (ko) 응용 프로그램의 동적링크 방법
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
CN117707543A (zh) 一种应用安装包制作和安装方法、计算设备及存储介质
CN116382701A (zh) 用于嵌入式系统的程序生成方法及程序局部更新方法
CN115774561A (zh) 应用程序升级方法、电子设备、芯片及可读存储介质

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees