TWI439931B - Object code generation for increased delta performance - Google Patents

Object code generation for increased delta performance 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
Chinese (zh)
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/en
Application granted granted Critical
Publication of TWI439931B publication Critical patent/TWI439931B/en

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

Description

用於增加三角差動效能之目的碼之產生Generation of the purpose code for increasing the triangular differential performance

本發明係關於一電腦程式之經更新目的碼之產生,該經更新目的碼適合於產生一欲載入一記憶體中之經更新記憶體影像,該記憶體中已儲存有一與一電腦程式之當前版本相對應之當前記憶體影像。The present invention relates to the generation of an updated destination code for a computer program, the updated destination code being adapted to generate an updated memory image to be loaded into a memory having stored therein and a computer program The current memory image corresponding to the current version.

諸多數據機電子裝置(例如嵌入式裝置)係由儲存於快閃記憶體中之軟體來控制。快閃記憶體係一類在電子裝置中頻繁使用之記憶體,此乃因其容許多次重寫。然而,寫入作業被限定為每次寫入整個記憶頁面(所謂快閃區段)。一當前快閃記憶體之典型頁面大小為64 kbyte。Many data electronic devices (such as embedded devices) are controlled by software stored in flash memory. A flash memory system is a type of memory that is frequently used in electronic devices because it allows multiple rewrites. However, the write job is limited to writing the entire memory page each time (so-called flash sector). A typical page size for a current flash memory is 64 kbytes.

當更新儲存於一電子裝置之一快閃記憶體中之軟體以(例如)將新特徵添加至該軟體及/或修正該軟體當前版本中之錯誤時,會重寫或「重新快閃」該快閃記憶體之某些或所有記憶區段。一般而言,較佳應使在一軟體更新期間重寫之快閃頁面數量最少,以最小化裝配軟體更新所需之時間及能量消耗。Rewriting or "reflashing" when updating software stored in one of the flash devices of an electronic device, for example, adding new features to the software and/or correcting errors in the current version of the software Some or all of the memory segments of the flash memory. In general, it should preferably minimize the number of flash pages rewritten during a software update to minimize the time and energy consumption required to assemble the software update.

特定而言,一其中更新時間極受關注之應用係行動終端之無線(OTA)更新。在此類應用中,已知僅將對當前影像之修改而非整個經更新影像分配至行動終端。該等修改通常被稱作三角差動檔案(delta-files)。通常,在此類系統中,運行於行動終端上之更新代理將所接收修改施加於當前影像,從而使當前影像轉換為經更新版本。因此,通常較佳應減少三角差動檔案之大小,以減少必須經由用於OTA更新之通信通道傳輸之資料量。In particular, an application (OTA) update of an application terminal in which the update time is of great interest. In such applications, it is known that only modifications to the current image, rather than the entire updated image, are assigned to the mobile terminal. These modifications are often referred to as delta-files. Typically, in such systems, an update agent running on the mobile terminal applies the received modifications to the current image, thereby converting the current image to an updated version. Therefore, it is generally preferred to reduce the size of the triangular differential file to reduce the amount of data that must be transmitted via the communication channel for OTA updates.

此外,通常較佳應降低行動終端中執行軟體更新所需之儲存容量及計算資源量。In addition, it is generally preferable to reduce the storage capacity and the amount of computing resources required to perform software updates in the mobile terminal.

此類更新系統之一進一步普遍問題係於更新過程期間終端可能無法工作。因此,較佳應減少重新快閃記憶體所需之時間及因而減少系統之不工作時間。A further common problem with one of such update systems is that the terminal may not work during the update process. Therefore, it is preferable to reduce the time required to reflash the memory and thus reduce the downtime of the system.

然而,由於上文提及之快閃記憶體之限制條件,即使軟體源碼之小更新亦可導致大部分快閃頁面被更新,此乃因即使僅改變一單個位元組亦需要完全重寫整個頁面。However, due to the limitations of the flash memory mentioned above, even a small update of the software source code can cause most of the flash pages to be updated, because even if only a single byte is changed, it is necessary to completely rewrite the entire page.

已公佈之美國申請案2003/0142556揭示一種快閃記憶體程式化之方法,其中將揮發性資訊或揮發性軟體組件儲存在快閃記憶體裝置之各個快閃記憶體位址空間之末端附近,以使改變或調整快閃區段之需要盡可能輕微。US Published Application No. 2003/0142556 discloses a method of flash memory staging in which volatile information or volatile software components are stored near the end of each flash memory address space of a flash memory device, The need to change or adjust the flash zone is as slight as possible.

然而,上述先前技術方法需要關於改變各個資訊組件之預期可能性之資訊。However, the prior art methods described above require information about changing the expected likelihood of each information component.

歐洲專利0472812係關於一種包括一編譯器、一經修改鏈結器及一比較器之差動更新系統,該更新系統產生一包含一經更新機器碼與該機器碼之一先前版本之間的差異之差異程式檔案。該經修改鏈結器接收當前版本之經編譯片段及由該經修改鏈結器為先前版本產生之片段資訊,並根據其與先前版本相比較之大小將該等片段排列於記憶體中。European Patent No. 0472812 relates to a differential update system comprising a compiler, a modified linker and a comparator, the update system generating a difference comprising a difference between an updated machine code and a previous version of the machine code Program file. The modified linker receives the compiled version of the current version and the clip information generated by the modified link for the previous version, and arranges the fragments in the memory according to their size compared to the previous version.

本發明之一目的係促成經改良之三角差動更新程序。One of the objects of the present invention is to facilitate an improved triangular differential update procedure.

本發明藉由一種產生一電腦程式之經更新目的碼之方法來解決上述及其他問題,該經更新目的碼適合作為對一鏈結器組件之輸入用於產生一欲載入一儲存媒體中之經更新記憶體影像,該儲存媒體中已儲存有一與一電腦程式之當前版本相對應之當前記憶體影像,該方法包括:-接收至少一個欲自其產生經更新目的碼之經更新輸入碼模組;-處理至少該經更新輸入碼模組以產生至少一個適於由一鏈結器組件鏈結以產生該經更新記憶體影像之經更新目的碼模組;-執行至少一個最佳化過程以減少該經更新目的碼模組與一組當前目的碼模組中一對應者之間的差異,該組當前目的碼模組與該電腦程式之當前版本相對應,其中在將經更新目的碼模組饋送至一鏈結器組件之前執行該最佳化過程。The present invention solves the above and other problems by a method of generating an updated destination code of a computer program, the updated destination code being suitable for input to a linker component for generating a payload to be stored in a storage medium. After updating the memory image, the storage medium has stored a current memory image corresponding to the current version of the computer program, the method comprising: - receiving at least one updated input code pattern from which the updated destination code is to be generated Grouping - processing at least the updated input code module to generate at least one updated destination code module adapted to be linked by an linker component to produce the updated memory image; - performing at least one optimization process To reduce the difference between the updated destination code module and a corresponding one of the current destination code modules, the current target code module of the group corresponds to the current version of the computer program, wherein the updated destination code is The optimization process is performed before the module is fed to a linker assembly.

特定而言,本發明係基於下述認知:當編譯器-或一編譯器之後處理器-在鏈結器階段之前已將所產生目的碼最佳化以減少作為更新對應源碼之結果而引入目的碼中之變化量時,將極大地促使一後續有效三角差動檔案之產生。In particular, the present invention is based on the recognition that when the compiler - or a compiler after the compiler - optimizes the generated object code before the linker phase to reduce the result of updating the corresponding source code The amount of change in the code will greatly contribute to the generation of a subsequent valid triangular differential file.

由於不依賴於藉由實質上反向設計編譯器及鏈結器過程來於一稍後階段(例如在鏈結器階段)或在經編譯及鏈結之二進製影像中偵測源層階修改之可能性,上述方法首先確保以盡可能少之變化產生所產生之影像,從而促使更有效地產生產出較少三角差動檔案且僅需重寫較少記憶區段之三角差動檔案。Since the source layer is not relied on by substantially reverse-engineering the compiler and linker process at a later stage (eg, in the linker stage) or in a compiled and linked binary image To modify the possibility, the above method first ensures that the resulting image is produced with as little variation as possible, thereby facilitating more efficient generation of triangular differential files that produce fewer triangular differential files and that only need to rewrite fewer memory segments.

特定而言,於某些實施例中,最佳化步驟包括產生目的碼模組以使該目的碼模組之大小不超過對應之當前目的碼模組之對應大小。於某些實施例中,甚至可產生經更新目的碼模組以具有與對應之當前目的碼模組相同之大小。一優點係記憶體空間中之後續目的碼模組無需因修改目的碼模組而移位/移動。In particular, in some embodiments, the optimizing step includes generating the destination code module such that the size of the destination code module does not exceed a corresponding size of the corresponding current destination code module. In some embodiments, an updated destination code module can even be generated to have the same size as the corresponding current destination code module. One advantage is that the subsequent destination code module in the memory space does not need to be shifted/moved by modifying the destination code module.

一進一步之優點係甚至藉助簡易之三角差動檔案產生工具亦可能產生一高效能三角差動檔案,從而避免了對精密或昂貴三角差動檔案產生工具之需要。A further advantage is that even a simple triangular differential file generation tool can generate a high-performance triangular differential file, thereby avoiding the need for sophisticated or expensive triangular differential file generation tools.

於某些實施例中,該至少一個經更新輸入碼模組係至少一個經更新源碼模組,且該方法進一步包括編譯該經更新源碼模組。或者,該經更新輸入碼模組係一編譯器自至少一個對應之經更新源碼模組中產生之至少一個初步目的碼模組。因此,該方法可構建為一接收源碼並產生最佳目的碼之整合編譯器過程,從而容許甚至將編譯過程最佳化以減少經編譯碼中之差異,因而促使後續三角差動檔案產生效能之進一步改良。或者,該方法可構建為一編譯器之後處理步驟,其中該後處理步驟自該編譯器接收目的碼並產生一被饋送至鏈結器之最佳目的碼,從而容許使用一標準編譯工具且因此將該方法整合至一現有碼產生工具鏈中。In some embodiments, the at least one updated input code module is at least one updated source code module, and the method further comprises compiling the updated source code module. Alternatively, the updated input code module is at least one preliminary destination code module generated by the compiler from at least one corresponding updated source code module. Therefore, the method can be constructed as an integrated compiler process that receives the source code and produces the best destination code, thereby allowing or even optimizing the compilation process to reduce differences in the compiled code, thereby facilitating the subsequent triangular differential file generation performance. Further improvement. Alternatively, the method can be constructed as a post-compiler processing step, wherein the post-processing step receives the object code from the compiler and produces a best destination code that is fed to the linker, thereby allowing the use of a standard compilation tool and thus The method is integrated into an existing code generation tool chain.

當該方法進一步包括自鏈結器接收控制資料(例如來自鏈結器之(例如)標示該經更新目的碼模組大小之大小限制條件之請求)時,可將該方法整合至一用於產生三角差動檔案之專用工具鏈中,其中下游工具將回饋資訊發送至上游工具以提供該三角差動檔案產生之整體最佳化。When the method further includes receiving control data from the linker (eg, a request from a linker, for example, indicating a size limit condition for the updated destination code module size), the method can be integrated into one for generating In the special tool chain of the triangular differential file, the downstream tool sends the feedback information to the upstream tool to provide an overall optimization of the triangular differential file generation.

於另一較佳實施例中,該方法包括:-產生一組初步目的碼模組;-將該組初步目的碼模組轉接至一鏈結器;-自該鏈結器及一後續三角差動檔案產生器中至少一者接收回饋資料;及-響應於該回饋資料產生經更新目的碼模組。In another preferred embodiment, the method includes: - generating a set of preliminary destination code modules; - transferring the set of preliminary destination code modules to a linker; - from the linker and a subsequent triangle At least one of the differential file generators receives the feedback data; and - generates an updated destination code module in response to the feedback data.

因此,於此實施例中,需兩遍或更多遍實施目的碼之產生,其中在第二遍中使用自第一遍之下游處理步驟接收之回饋資訊,從而進一步改良所產生目的碼對一有效三角差動檔案產生之適合性。舉例而言,鏈結器可產生對編譯器階段之回饋,致使編譯器重新編譯該源碼之至少一部分。此所具有之優點係該鏈結器可控制該所產生之一組目的碼模組,從而增加鏈結器重新排列目的碼模組之自由度。Therefore, in this embodiment, the generation of the object code is performed two or more times, wherein the feedback information received from the downstream processing step of the first pass is used in the second pass, thereby further improving the generated target code pair. The suitability of an effective triangular differential file. For example, the linker can generate feedback to the compiler stage, causing the compiler to recompile at least a portion of the source code. This has the advantage that the linker can control one of the generated group code modules, thereby increasing the degree of freedom of the linker to rearrange the destination code module.

當該方法進一步包括接收關於一用以自對應之當前輸入碼模組產生當前目的碼模組之先前處理步驟之處理資訊時,其會促使產生相比於當前版本具有最小變化之目的碼。舉例而言,該處理資訊可包含至少一個關於不同目的模組部分在當前目的碼模組中之當前佈置之當前佈置資訊及關於一先前編譯器步驟之編譯資訊,諸如至少一個源-機器碼映射及關於在先前編譯步驟期間應用哪些編譯最佳化步驟之資訊。或者或另外,該方法包括接收該組當前目的碼模組,從而容許該過程比較經更新目的模組與當前目的碼模組。術語「源-機器碼映射」係源碼結構與對應目的碼實體之間的關係。一函數(常數、類定義等)可對應於一個或數個片段。相依於該實施方案,一單個目的碼實體亦可對應於數個函數(常數、類定義等)。此映射之複雜性相依於實際實施方案。極簡單之映射(例如其中一個源檔案映射至一單個片段)甚至可能無須明確儲存,而複雜映射(例如其中兩個函數結合產生一共用片段)可能必須被儲存以正確地匹配已裝配影像與經更新影像之片段。When the method further includes receiving processing information regarding a previous processing step for generating a current destination code module from the corresponding current input code module, it causes a destination code having a minimum change compared to the current version. For example, the processing information may include at least one current arrangement information about a current arrangement of different target module portions in the current destination code module and compilation information about a previous compiler step, such as at least one source-to-machine code mapping. And information about which compilation optimization steps were applied during the previous compilation step. Alternatively or additionally, the method includes receiving the current set of destination code modules to allow the process to compare the updated destination module with the current destination code module. The term "source-to-machine code mapping" is the relationship between the source code structure and the corresponding destination code entity. A function (constant, class definition, etc.) can correspond to one or several fragments. Depending on the implementation, a single destination code entity may also correspond to several functions (constants, class definitions, etc.). The complexity of this mapping depends on the actual implementation. A very simple mapping (eg, mapping one source file to a single fragment) may not even require explicit storage, while complex mapping (eg, where two functions combine to produce a common fragment) may have to be stored to correctly match the assembled image and the Update the clip of the image.

於某些實施例中,該方法進一步包括將關於該用於產生經更新目的碼模組之處理步驟之經更新處理資訊儲存於一碼儲存庫中,從而使該處理資訊可用於後續編譯行為。In some embodiments, the method further includes storing the updated processing information regarding the processing steps for generating the updated destination code module in a code repository such that the processing information is available for subsequent compilation behavior.

因此,於某些實施例中,在不同編譯行為之間儲存元資訊並使其可由編譯器存取。該元資訊包含關於如何將源碼元件轉換為目的模組部分之資訊,以使編譯器可在後續翻譯中做出相似或甚至一致之轉換。於某些實施例中,編譯器甚至可能重新使用先前創建之目的碼。Thus, in some embodiments, meta information is stored between different compilation behaviors and made accessible by the compiler. This meta-information contains information on how to convert source code components into the target module portion so that the compiler can make similar or even consistent transitions in subsequent translations. In some embodiments, the compiler may even reuse the previously created object code.

於某些實施例中,經更新目的碼模組包括複數個目的模組部分。舉例而言,每一目的模組部分可包括一函數及一變數中至少一個。一般而言,在本說明中,術語「目的模組部分」意指一目外碼模組之可重新定位實體,特定而言係指一目的碼模組之最小可重新定位實體,且特定而言係指可獨立於其他實體被重新定位之實體。一般而言,目的模組部分可對應於程式化語言之結構實體,諸如函數、程序、類定義、常數定義、變數定義等。In some embodiments, the updated destination code module includes a plurality of destination module portions. For example, each of the target module portions may include at least one of a function and a variable. In general, in the present description, the term "destination module portion" means a relocatable entity of a foreign code module, in particular a minimum relocatable entity of a destination code module, and in particular Refers to an entity that can be relocated independently of other entities. In general, the destination module portion may correspond to a structural entity of a stylized language, such as functions, programs, class definitions, constant definitions, variable definitions, and the like.

當最佳化步驟包括判定該等目的模組部分在經更新目的碼模組中之順序時,該過程可確保目的模組部分在所產生之經更新目的碼中之相對次序與目的模組部分在當前版本中之次序之差異儘可能地小。When the optimization step includes determining the order of the target module portions in the updated destination code module, the process ensures the relative order of the destination module portions in the generated updated destination code and the destination module portion. The difference in order in the current version is as small as possible.

於某些實施例中,最佳化步驟包括將該等目的模組部分中至少一個不包含於一對應於一第一經更新目的碼模組之當前目的碼模組中之部分置於一不同於該第一目的碼模組之第二經更新目的碼模組中,以減少該第一經更新目的碼模組與對應之當前目的碼模組之間的差異。由此可避免因在更新中引入額外模組部分而導致一目的碼模組之大小增加。In some embodiments, the optimizing step includes placing at least one of the target module portions not included in a current destination code module corresponding to a first updated destination code module in a different one. The second updated destination code module of the first destination code module is configured to reduce a difference between the first updated destination code module and the corresponding current destination code module. This avoids an increase in the size of a destination code module due to the introduction of additional module portions in the update.

通常,一碼產生系統包括:一編譯器,其編譯一源碼並產生一組目的碼模組;及一鏈結器,其以一可載入之記憶體影像形式產生可執行碼。該編譯器及鏈結器可(例如)構建為單獨之可執行軟體程式、構建為一整合軟體發展軟體應用程式之功能模組或諸如此類。Generally, a code generation system includes: a compiler that compiles a source code and generates a set of object code modules; and a linker that generates executable code in the form of a loadable memory image. The compiler and linker can, for example, be constructed as a separate executable software program, as a functional module for an integrated software development software application, or the like.

特定而言,於一三角差動檔案更新方案中,將記憶體影像相繼饋送至一產生三角差動檔案之三角差動檔案產生器中,該三角差動檔案代表當前程式碼版本與經更新之程式碼版本之間的差異。因此,所產生之三角差動檔案包含當前記憶體影像與經更新記憶體影像之間的差異,亦即一裝置自儲存於彼裝置中及三角差動檔案中之當前版本產生經更新版本所需之資訊。因此會減小需要載入至該裝置之檔案之大小,從而進一步減少執行一軟體更新所需之時間。Specifically, in a triangular differential file update scheme, the memory images are successively fed into a triangular differential file generator that generates a triangular differential file representing the current code version and updated. The difference between the code versions. Therefore, the generated triangular differential file contains the difference between the current memory image and the updated memory image, that is, a device required to generate an updated version from the current version stored in the device and in the triangular differential file. Information. This will reduce the size of the files that need to be loaded into the device, further reducing the time required to perform a software update.

源碼通常包括一系列以某一人類可讀電腦程式化語言寫入之語句。在現代程式化語言中,構成一軟體程式之源碼通常以一個或多個文本檔案(所謂源碼模組)之形式產生。編譯器通常係一電腦程式或一電腦程式之功能組件,其將以一特定程式化語言寫入之源碼翻譯成電腦可讀機器碼。通常,當源碼包括複數個源碼模組時,編譯器個別地編譯每一源碼模組並產生對應之目的碼模組,亦即一對應於每一源碼模組之目的碼模組。Source code usually consists of a series of statements written in a human-readable computer stylized language. In modern stylized languages, the source code that makes up a software program is usually produced in the form of one or more text files (so-called source code modules). A compiler is typically a computer program or a functional component of a computer program that translates source code written in a particular stylized language into computer readable machine code. Generally, when the source code includes a plurality of source code modules, the compiler separately compiles each source code module and generates a corresponding destination code module, that is, a destination code module corresponding to each source code module.

術語「目的碼」意指一通常以二進製機器語言來表達之電腦可讀程式碼,其常態下係一既定翻譯過程(通常稱作編譯)之輸出,其中該輸出原則上準備由一電腦執行。然而,目的碼亦可包括涉及目的碼中其他位置之符號參考。特定而言,當目的碼包括複數個目的碼模組時,對包含於其他目的碼模組中之函數或變數之參考被儲存為符號參考。因此,一目的碼模組通常可在記憶體空間中重新定位且含有未解析參考。特定而言,一可重新定位目的碼模組通常包含符號參考及重新定位資訊,且其後者指示鏈結器如何解析該等參考。可重新定位目的碼模組之一有趣屬性係起始位址及所參考符號之位址皆未決定。因此,重新定位係將對符號之參考替換為實際位址之過程。The term "destination code" means a computer readable program code, usually expressed in a binary machine language, which is normally output as an established translation process (commonly referred to as compilation), wherein the output is in principle prepared by a computer. carried out. However, the destination code may also include symbol references relating to other locations in the destination code. In particular, when the destination code includes a plurality of destination code modules, references to functions or variables included in other destination code modules are stored as symbol references. Therefore, a destination code module can typically be relocated in memory space and contain unresolved references. In particular, a relocatable destination code module typically includes symbol reference and relocation information, and the latter indicates how the linker resolves the references. One of the interesting attributes of the relocatable destination code module is that the start address and the address of the reference symbol are not determined. Therefore, relocation is the process of replacing the reference to the symbol with the actual address.

鏈結器通常係一電腦程式或一電腦程式之功能組件,其解析構成一軟體發展項目之一組目的碼模組(具體而言任何符號參考)之間的相依性。此外,鏈結器之任務通常包括在記憶體中佈置各目的碼模組,亦即將相對位址指配給一對應位址空間內之不同目的碼模組。該等目的碼模組通常以一硬體及/或平臺特有之低層階檔案格式表示為各自之目的檔案。因此,於某些實施例中,該方法進一步包括將該等經更新目的碼模組饋送至一用於鏈結該等經更新目的碼模組之鏈結器組件中,從而產生適合隨後由一三角差動檔案產生器處理之經更新記憶體影像。A linker is typically a functional component of a computer program or a computer program that resolves the dependencies between the code modules (and in particular any symbol references) that form a group of software development projects. In addition, the task of the linker usually includes arranging each target code module in the memory, and also assigning the relative address to a different destination code module in a corresponding address space. The destination code modules are typically represented in a hardware and/or platform-specific low-level file format as their respective destination files. Accordingly, in some embodiments, the method further includes feeding the updated destination code modules to an linker component for linking the updated destination code modules to generate a suitable one for subsequent The updated memory image processed by the triangular differential file generator.

此處,術語「記憶體中碼之佈置」包括不同目的碼模組各自之起始位址或基址,亦即其在由程式碼佔據之位址空間內各自之相對位址。Here, the term "arrangement of codes in memory" includes respective start addresses or base addresses of different destination code modules, that is, their respective relative addresses in the address space occupied by the code.

本文所闡述之方法之一優點係其促成鏈結器階段之進一步最佳化步驟,從而為一後續三角差動檔案產生模組提供一最佳化輸入,並因而促進該三角差動檔案之最佳化產生。鏈結器所執行之最佳化過程可包括決定該等目的碼模組在記憶體中之佈置。One of the advantages of the method described herein is that it facilitates a further optimization step of the linker stage, thereby providing an optimized input for a subsequent triangular differential file generation module and thereby facilitating the most of the triangular differential file Jiahua is produced. The optimization process performed by the linker can include determining the placement of the target code modules in the memory.

進一步之較佳實施例揭示於附屬申請項中。Further preferred embodiments are disclosed in the dependent application.

應注意,上文及下文闡述之方法特徵可以軟體形式實施,並可因執行諸如電腦可執行指令等程式碼構件而執行於一資料處理系統或其他處理構件上。於此處及下文中,術語「處理構件」包括任一適合用於執行上述功能之電路及/或裝置。特定而言,術語「處理構件」包括通用或專用可程式化微處理器、數位信號處理器(DSP)、應用專用積體電路(ASIC)、可程式化邏輯陣列(PLA)、場可程式化閘陣列(FPGA)、專用電子電路等,或其一組合。It should be noted that the method features set forth above and below may be implemented in software and may be executed on a data processing system or other processing component by executing program code components such as computer executable instructions. Here and in the following, the term "processing member" includes any circuit and/or device suitable for performing the functions described above. In particular, the term "processing component" includes general purpose or special programmable microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), programmable logic arrays (PLAs), field programmable Gate array (FPGA), dedicated electronic circuitry, etc., or a combination thereof.

舉例而言,該程式碼構件可自一儲存媒體或經由一電腦網路自另一電腦載入一記憶體,諸如一隨機存取記憶體(RAM)。或者,上述特徵可由硬接線電路而非軟體或與軟體相結合來實施。For example, the code component can load a memory, such as a random access memory (RAM), from a storage medium or via a computer network from another computer. Alternatively, the above features may be implemented by a hardwired circuit rather than a soft body or in combination with a soft body.

可以不同方式實施本發明,包括上文所述之方法及下文中之一資料處理系統,及其他產品構件,其每一個皆產生一個或多個結合最先提及之方法闡述的益處及優點,且每一個皆具有一個或多個較佳實施例,該等較佳實施例對應於結合最先提及之方法闡述的較佳實施例。The present invention can be embodied in a variety of ways, including the methods described above and one of the following data processing systems, and other product components, each of which produces one or more of the benefits and advantages described in connection with the methods first mentioned. Each of the preferred embodiments has one or more preferred embodiments, which correspond to the preferred embodiments set forth in connection with the first mentioned method.

特定而言,本發明係關於一種用於產生一電腦程式之經更新目的碼之資料處理系統,該經更新目的碼適合作為一鏈結器組件之輸入以用於產生一欲載入一記憶體中之經更新記憶體影像,其中該記憶體中已儲存有一與一電腦程式之當前版本相對應之當前記憶體影像,該資料處理系統經合適地程式化以執行上文及下文所述方法之步驟。In particular, the present invention relates to a data processing system for generating an updated destination code for a computer program, the updated destination code being suitable for input as an linker component for generating a memory to be loaded The memory image is updated, wherein the current memory image corresponding to the current version of the computer program is stored in the memory, and the data processing system is suitably programmed to perform the methods described above and below. step.

本發明進一步係關於一種電腦程式產品,其包括程式碼構件,該程式碼構件適於在該程式碼構件隨後被執行於一資料處理系統上時致使該資料處理系統實施上文及下文中所述方法。該電腦程式產品可實施為一其上儲存有該程式碼構件之電腦可讀媒體。The invention further relates to a computer program product comprising a code component adapted to cause the data processing system to perform the above and below when the code component is subsequently executed on a data processing system method. The computer program product can be implemented as a computer readable medium having stored thereon.

在本說明中,術語「電子裝置」包括任一包括一用於儲存程式碼之記憶體(諸如快閃記憶體)之裝置。此類裝置之實例包括可攜式無線電通信設備及其他手持或可攜式裝置。術語「可攜式無線電通信設備」包括諸如行動電話、傳呼機、通信器(亦即電子記事簿)、智慧型手機、個人數位助理(PDA)、手持電腦或諸如此類等所有設備。In the present description, the term "electronic device" includes any device that includes a memory (such as a flash memory) for storing code. Examples of such devices include portable radio communication devices and other handheld or portable devices. The term "portable radio communication device" includes all devices such as a mobile phone, a pager, a communicator (i.e., an electronic organizer), a smart phone, a personal digital assistant (PDA), a handheld computer, or the like.

圖1示意性地顯示一種用於更新一電子裝置(例如一行動終端)中軟體之系統之實施例之方塊圖。該系統包括一行動終端101(例如一行動電話或類似裝置)、一軟體更新系統102及一通信介面103。1 is a block diagram showing an embodiment of a system for updating software in an electronic device, such as a mobile terminal. The system includes a mobile terminal 101 (e.g., a mobile telephone or similar device), a software update system 102, and a communication interface 103.

軟體更新系統102可包括一能夠存取通信網路之伺服器電腦。於某些實施例中,該伺服器電腦之功能可分佈於複數個電腦中,例如經由一電腦網路(例如一區域網路、一廣域網路、一網際網路或類似網路)連接之電腦。軟體更新系統102包括一容許軟體更新系統經由通信介面103傳送資料之介面電路104。舉例而言,該介面電路可包括一串行埠、一並行埠、一短距離無線通信介面(例如一紅外線埠)、一蓝牙收發器或類似裝置。介面電路之進一步實施例包括一網路卡、一DSL數據機、一閘道電腦或類似裝置。The software update system 102 can include a server computer capable of accessing a communication network. In some embodiments, the functionality of the server computer can be distributed among a plurality of computers, such as a computer connected via a computer network (eg, a regional network, a wide area network, an internet, or the like). . The software update system 102 includes a interface circuit 104 that allows the software update system to communicate data via the communication interface 103. For example, the interface circuit can include a serial port, a parallel port, a short-range wireless communication interface (eg, an infrared port), a Bluetooth transceiver, or the like. A further embodiment of the interface circuit includes a network card, a DSL modem, a gateway computer or the like.

該軟體更新系統進一步包括一經合適程式化以控制及執行更新過程之處理單元105,例如一伺服器電腦之CPU,其中該更新過程包括如本文所述之產生經更新程式碼。該處理單元進一步包括一版本資料庫/儲存庫106,該版本資料庫/儲存庫106中已儲存有欲更新軟體之至少一個基本版本/當前版本及一經更新版本之記憶體影像及其進一步資訊。於某些實施例中,版本資料庫可進一步包括額外資訊,例如用於不同型號之行動終端、用於不同客戶組群之(例如)複數個基本版本及/或經更新版本及/或諸如此類。The software update system further includes a processing unit 105, such as a server computer CPU, suitably programmed to control and execute the update process, wherein the update process includes generating updated code as described herein. The processing unit further includes a version repository/repository 106 having stored therein at least one basic version/current version of the software to be updated and an updated version of the memory image and further information thereof. In some embodiments, the version database may further include additional information, such as for different types of mobile terminals, for different customer groups, for example, a plurality of basic versions and/or updated versions and/or the like.

通信介面103可係用於在軟體更新系統102與行動終端101之間傳送資料之任一適合有線或無線通信介面。舉例而言,若係一適於經由一蜂巢式通信網路(例如一GSM網路、一UMTS網路、一GPRS網路或類似網路)進行通信之行動電話,則可經由彼蜂巢式通信網路實施該軟體更新系統與該行動終端之間關於一軟體更新之通信,從而避免對行動終端中額外通信介面之需要。Communication interface 103 can be used in any suitable wired or wireless communication interface for transferring data between software update system 102 and mobile terminal 101. For example, if it is a mobile phone suitable for communication via a cellular communication network (for example, a GSM network, a UMTS network, a GPRS network or the like), it can communicate via the cellular communication. The network implements communication between the software update system and the mobile terminal regarding a software update, thereby avoiding the need for additional communication interfaces in the mobile terminal.

因此,為更新行動終端101上之軟體,行動終端可自該更新系統接收(例如)包括欲重寫之記憶體區段之影像在內的更新指令。Thus, to update the software on the mobile terminal 101, the mobile terminal can receive, for example, an update command including an image of the memory segment to be rewritten, from the update system.

於一使用三角差動檔案之差動更新系統中,更新指令經產生以便其使得行動終端能夠自行動終端中已儲存之現有版本及更新指令中所包含之額外資訊中產生經更新軟體版本。可現場應用三角差動檔案,亦即由行動終端在現有影像上做出改變,從而幾乎不需要額外儲存。此外,由於僅需載入三角差動檔案且由於三角差動檔案通常較新版本小得多,則上述方法減少了載入時間。In a differential update system using a triangular differential file, an update command is generated to enable the mobile terminal to generate an updated software version from additional information contained in existing versions and update instructions stored in the mobile terminal. The triangular differential file can be applied on-site, that is, the mobile terminal makes changes on the existing image, so that almost no additional storage is required. In addition, the above method reduces the load time since only the triangular differential file needs to be loaded and since the triangular differential file is usually much smaller than the newer version.

因此,在上文中闡述一種其中可應用本文所述碼產生過程之可能方案。然而應瞭解,本文所述之碼產生過程亦可應用於其他更新方案。舉例而言,可經由其他媒體(例如其他通信通道、經由一電腦可讀媒體等)將更新提供給目標裝置。Thus, a possible solution in which the code generation process described herein can be applied is set forth above. However, it should be understood that the code generation process described herein can also be applied to other update scenarios. For example, updates may be provided to the target device via other media (eg, other communication channels, via a computer readable medium, etc.).

下文中將更詳細闡述碼產生過程之實施例。Embodiments of the code generation process are explained in more detail below.

圖2示意性地顯示一電子裝置(例如一行動終端)之一實施例之方塊圖。行動終端101包括一通信塊210、一處理單元211及一記憶體單元212。Figure 2 is a block diagram showing an embodiment of an electronic device (e.g., a mobile terminal). The mobile terminal 101 includes a communication block 210, a processing unit 211, and a memory unit 212.

通信塊210包括容許經由一蜂巢式通信網路進行基於無線電資料通信之電路及/或裝置。因此,在本說明中,通信塊210包括用於接收及傳輸資料信號之接收電路及傳輸電路。通信塊可進一步包括用於藉由無線電通信技術領域中習知之適合技術合適地處理(例如調變、編碼、放大等)信號之電路。Communication block 210 includes circuitry and/or devices that permit radio based data communication via a cellular communication network. Accordingly, in the present description, communication block 210 includes receiving circuitry and transmission circuitry for receiving and transmitting data signals. The communication block may further comprise circuitry for suitably processing (e.g., modulating, encoding, amplifying, etc.) signals by suitable techniques well known in the art of radio communication technology.

行動終端進一步包括一處理單元211,例如一經合適程式化之微處理器。處理單元適於決定該行動終端中所儲存軟體之版本、計算所儲存軟體之核對和、及在接收到對應之更新指令時產生該軟體之一經更新版本。The mobile terminal further includes a processing unit 211, such as a suitably programmed microprocessor. The processing unit is adapted to determine a version of the software stored in the mobile terminal, calculate a checksum of the stored software, and generate an updated version of the software upon receiving the corresponding update instruction.

記憶體單元212中已以一預定版本儲存有該軟體及/或其他資料。舉例而言,記憶體212可包括行動終端之韌體,其在被載入處理單元211並由處理單元211執行時實施行動終端之基本功能。該韌體可進一步包括一容許執行應用軟體之作業系統。相應地,記憶體212可進一步儲存有提供額外功能之應用軟體。使用一適合之位址空間來定址記憶體212,從而容許處理單元存取該記憶體之所選部分。於某些實施例中,可在邏輯上或物理上將記憶體212劃分為複數個記憶體區段。舉例而言,記憶體212可包括容許將資料寫入預定大小之區段內之快閃記憶體。The software and/or other materials have been stored in the memory unit 212 in a predetermined version. For example, the memory 212 can include a firmware of the mobile terminal that, when loaded into the processing unit 211 and executed by the processing unit 211, implements the basic functions of the mobile terminal. The firmware may further include an operating system that allows execution of the application software. Accordingly, the memory 212 can be further stored with application software that provides additional functionality. The memory 212 is addressed using a suitable address space to allow the processing unit to access selected portions of the memory. In some embodiments, memory 212 can be logically or physically divided into a plurality of memory segments. For example, memory 212 can include flash memory that allows data to be written into segments of a predetermined size.

在本說明中,假設將記憶體212劃分為一定數量之預定大小之區段,分別標記為P1、P2、P3、……、PN。然而,應理解亦可替代地使用任一其他記憶體定址方案。當然,應進一步理解,若(例如)欲更新一行動電話之快閃記憶體之整個影像,則可將本文所述之更新過程應用於整個記憶體212,或者,若欲更新一個或多個軟體應用程式,則僅將本文所述之更新過程應用於該記憶體之預定部分。In the present description, it is assumed that the memory 212 is divided into a certain number of segments of a predetermined size, labeled P1, P2, P3, ..., PN, respectively. However, it should be understood that any other memory addressing scheme may alternatively be used. Of course, it should be further understood that if, for example, the entire image of the flash memory of a mobile phone is to be updated, the update process described herein can be applied to the entire memory 212, or if one or more softwares are to be updated. The application only applies the update process described herein to a predetermined portion of the memory.

在下文中,將參照圖3-11闡述一軟體更新過程之不同實例。在圖式中,相同參考編號指代相同或相對應之組件、特徵、實體等。In the following, different examples of a software update process will be explained with reference to Figures 3-11. In the drawings, the same reference numerals are used to refer to the same or corresponding components, features, and the like.

圖3顯示一軟體更新過程之一實施例之方塊圖。最初,一編譯器303自一源碼儲存庫301(例如一源碼資料庫、一版本管理系統)或直接自一源碼編輯工具接收一個或多個源碼模組302。編譯器303產生一組被饋送至一鏈結器306之目的碼模組305。鏈結器306將目的碼模組305組合成一絕對檔案307以準備用於執行。鏈結模組306所執行的任務之一係解析各單獨編譯之目的碼模組之間的交叉參考及指配最終位址以創建一單個可執行程式307。因此,來自鏈結器之輸出307係一可直接載入(例如)一欲執行該程式之裝置之快閃記憶體內之檔案。鏈結器輸出307亦將稱作一記憶體影像。Figure 3 shows a block diagram of one embodiment of a software update process. Initially, a compiler 303 receives one or more source modules 302 from a source repository 301 (eg, a source repository, a version management system) or directly from a source editing tool. The compiler 303 generates a set of destination code modules 305 that are fed to a linker 306. The linker 306 combines the destination code modules 305 into an absolute archive 307 ready for execution. One of the tasks performed by the link module 306 is to resolve the cross-references between the individually compiled target code modules and assign the final address to create a single executable 307. Thus, the output 307 from the linker is directly loadable into, for example, a file in the flash memory of a device that is to execute the program. The linker output 307 will also be referred to as a memory image.

將鏈結器輸出307饋送至一亦稱作三角差動檔案產生器之三角差動檔案產生模組308內。三角差動檔案產生器308接收二進製(經更新)影像307及一對應之當前記憶體影像作為輸入並產生一三角差動檔案309,三角差動檔案309作為一更新封包或作為一更新封包之一部分發送至一其記憶體將自當前記憶體影像更新至經更新記憶體影像之裝置。該當前記憶體影像可(例如)被儲存在一影像檔案之儲存庫中,例如一適合之資料庫。於某些實施例中,自一儲存庫310擷取記憶體影像,儲存庫310可係與源儲存庫301相同之儲存庫之一部分。於某些實施例中,三角差動產生器308可(例如)以一所謂映射檔案形式(例如)自儲存庫310接收諸如附加鏈結資訊等額外輸入。The linker output 307 is fed into a triangular differential file generation module 308, also referred to as a triangular differential file generator. The triangular differential file generator 308 receives the binary (updated) image 307 and a corresponding current memory image as input and generates a triangular differential file 309 as an update packet or as an update packet. A portion of it is sent to a device whose memory is updated from the current memory image to the updated memory image. The current memory image can, for example, be stored in a repository of image files, such as a suitable database. In some embodiments, the memory image is retrieved from a repository 310, and the repository 310 can be part of the same repository as the source repository 301. In some embodiments, the triangular differential generator 308 can receive additional input, such as additional link information, from the repository 310, for example, in the form of a so-called mapping archive.

三角差動檔案之產生可示意性地由下列運算來圖解說明:filen e w -fileb a s e → △fileThe generation of the triangular differential file can be schematically illustrated by the following operations: file n e w -file b a s e → △file

對應地,新版本之實際產生可隨後由行動終端根據下列運算來執行:fileb a s e +△file → filen e w Correspondingly, the actual generation of the new version can then be performed by the mobile terminal according to the following operations: file b a s e +Δfile → file n 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.)中闡述之方法。It should be understood that the above operation of generating a triangular differential file (marked as "-" in the above mark) and generating a new version on the mobile terminal (marked as "+" in the above mark) may include more or less complicated operations. . Examples of suitable triangular differential archival techniques include US 6,546,552 and "Compressing Differences of Executable Code" by Brenda Baker, Udi Manber and Robert Muth, in ACM SIGPLAN Workshop on Compiler Support for System Software (WCSSS '99), 1999. The method described in ).

在圖3之實施例中,編譯器303進一步自源儲存庫接收源檔案變化資訊304。在某些實施例中,變化資訊304包含關於在當前更新期間(亦即自對應於當前所安裝軟體之源碼至由編譯器303編譯之經更新源碼之更新)哪些源碼組件、(例如)哪些函數、方法、類及或諸如此類已得到修改之資訊。此資訊容許編譯器以儘可能少之差異產生經更新目的碼模組305。In the embodiment of FIG. 3, compiler 303 further receives source file change information 304 from the source repository. In some embodiments, the change information 304 includes information about which source components, such as which functions, during the current update (ie, from the source code corresponding to the currently installed software to the updated source code compiled by the compiler 303). , methods, classes, and/or information that has been modified. This information allows the compiler to generate updated destination code module 305 with as little difference as possible.

圖4顯示一類似於結合圖3所述過程之軟體更新過程之另一實施例之方塊圖。圖4之過程與圖3之過程不同之處在於圖4實施例之編譯器303接收關於一先前編譯之資訊413,特定而言關於產生當前已安裝記憶體影像之編譯之資訊。相應地,根據此實施例,編譯器303將關於每一編譯之資訊412儲存於儲存庫310中,從而使該資訊可用於後續編譯。應理解,作為選擇,可將編譯資訊儲存在一不同儲存庫中。編譯資訊412及413可包含關於源-機器碼映射、目的碼佈置、編譯器最佳化資訊及/或諸如此類等資訊。因此,編譯器可將相同之最佳化步驟應用於源碼之相同部分,從而減少所產生目的碼中之差別。特定而言,若編譯器接收關於先前編譯之資訊及關於源碼變化之變化日誌兩者,則編譯器可確保以與先前編譯相同之相同方式(例如藉助相同之最佳化設定值)編譯源碼之彼等尚未改變之部分,從而在目的碼中產生最小變化。4 shows a block diagram of another embodiment of a software update process similar to the process described in connection with FIG. The process of Figure 4 differs from the process of Figure 3 in that the compiler 303 of the Figure 4 embodiment receives information about a previously compiled information 413, particularly with respect to generating a compilation of the currently installed memory image. Accordingly, in accordance with this embodiment, compiler 303 stores information about each compilation in repository 310, thereby making the information available for subsequent compilation. It should be understood that, as an option, the compiled information can be stored in a different repository. The compiled information 412 and 413 may contain information regarding source-to-machine code mapping, destination code placement, compiler optimization information, and/or the like. Therefore, the compiler can apply the same optimization steps to the same part of the source code, thereby reducing the difference in the generated object code. In particular, if the compiler receives both information about previous compilations and a change log about source code changes, the compiler can ensure that the source code is compiled in the same way as the previous compilation (eg, with the same optimized settings). They have not changed, resulting in minimal changes in the destination code.

於某些實施例中,先前編譯之結果甚至可儲存於(例如)儲存庫310中,從而容許直接再使用先前經編譯之組件。In some embodiments, the results of the previous compilation may even be stored, for example, in repository 310, allowing for the direct reuse of previously compiled components.

圖5顯示一類似於結合圖3所述過程之軟體更新過程之再一實施例之方塊圖。圖5之過程與圖3之過程不同之處在於圖5實施例之編譯器303自鏈結器306接收回饋資訊514,例如對不同目的碼模組大小之請求/限制。由此,回饋信號使編譯器編譯一個或多個源檔案,從而產生更適合於由鏈結器306產生最佳記憶體佈置之目的碼模組/檔案。舉例而言,若鏈結器決定可用於一經修改目的碼模組之空間已增加(例如由於在當前構建中參照經修改目的碼模組而隨後定位於記憶體空間中之目的碼模組將不再出現在經更新構建中),則鏈結器可將一回饋信號514發送至編譯器以通知該編譯器:經修改目的碼模組之大小上限已增大。此依次可使編譯器避免經修改目的碼模組之分裂。於某些實施例中,圖5之過程可作為一兩遍式過程來實施,其中鏈結器基於第一遍(亦即一第一編譯及鏈結)之鏈結結果產生回饋信號。回饋信號514使編譯器重新編譯一個或多個源檔案,從而產生更適合於由鏈結器產生最佳記憶體佈置之經修改目的檔案。在某些實施例中,回饋信號514甚至可包含關於在每一目的碼模組中包含哪些目的模組部分(例如哪些函數)之資訊。Figure 5 shows a block diagram of yet another embodiment of a software update process similar to the process described in connection with Figure 3. The process of FIG. 5 differs from the process of FIG. 3 in that the compiler 303 of the embodiment of FIG. 5 receives feedback information 514 from the linker 306, such as requests/restrictions on the size of different destination code modules. Thus, the feedback signal causes the compiler to compile one or more source files, resulting in a destination code module/file that is more suitable for generating the best memory arrangement by link 306. For example, if the linker determines that the space available for modifying the target code module has increased (eg, because the target code module subsequently positioned in the memory space with reference to the modified target code module in the current build will not Reappearing in the updated build), the linker can send a feedback signal 514 to the compiler to inform the compiler that the upper limit of the size of the modified destination code module has increased. This in turn allows the compiler to avoid splitting of the modified destination code module. In some embodiments, the process of FIG. 5 can be implemented as a two-pass process in which the linker generates a feedback signal based on the result of the first pass (ie, a first compilation and link). The feedback signal 514 causes the compiler to recompile one or more source files, resulting in a modified destination file that is more suitable for the optimal memory arrangement produced by the linker. In some embodiments, the feedback signal 514 may even include information about which of the target module portions (eg, which functions) are included in each of the destination code modules.

圖6顯示一類似於結合圖3所述過程之軟體更新過程之再一實施例之方塊圖。圖6之過程與圖3之過程不同之處在於圖6實施例之編譯器303如結合圖4所述接收關於先前編譯之資訊413,且圖6實施例之編譯器303如結合圖5所述自鏈結器306接收回饋資訊514。此外,於此實施例中,鏈結器306直接自源儲存庫接收變化資訊615,例如關於先前鏈結器選項或諸如此類之資訊。Figure 6 shows a block diagram of yet another embodiment of a software update process similar to the process described in connection with Figure 3. The process of FIG. 6 differs from the process of FIG. 3 in that the compiler 303 of the embodiment of FIG. 6 receives information about the previous compilation 413 as described in connection with FIG. 4, and the compiler 303 of the embodiment of FIG. 6 is as described in connection with FIG. The feedback information 514 is received from the linker 306. Moreover, in this embodiment, the linker 306 receives the change information 615 directly from the source repository, such as information about previous linker options or the like.

此外,圖6之鏈結器306接收儲存於儲存庫310中之關於先前記憶體影像/構建之資訊616。相應地,如資料流箭頭617所指示,鏈結器306將關於經更新軟體之當前鏈結過程之資訊儲存於儲存庫中供將來使用。儲存及擷取儲存庫中之資訊可包含所產生影像檔案本身、關於目的碼模組在影像檔案中之佈置的佈置資訊、源-機器碼映射等。In addition, the linker 306 of FIG. 6 receives the information 616 about the previous memory image/construction stored in the repository 310. Accordingly, as indicated by data flow arrow 617, linker 306 stores information about the current chaining process of the updated software in a repository for future use. The information stored and retrieved in the repository may include the generated image file itself, layout information about the arrangement of the destination code module in the image file, source-machine code mapping, and the like.

應理解,可以不同方式組合上述實施例中由編譯器接收之不同類型的資訊,亦即在某些實施例中,編譯器可接收該資訊之一些或全部。It should be understood that different types of information received by the compiler in the above embodiments may be combined in different ways, i.e., in some embodiments, the compiler may receive some or all of the information.

圖7示意性地圖解說明在軟體更新之前及之後一快閃記憶體之記憶體佈置,其中該佈置藉由引入一溢出塊而得到最佳化。Figure 7 schematically illustrates the memory arrangement of a flash memory before and after software update, wherein the arrangement is optimized by introducing an overflow block.

圖7a圖解說明一快閃記憶體之一部分位址空間之結構。將位址空間701劃分為一定數量之頁面,分別標記為P1、P2、P3、P4、P5、P6、P7及P8。該等頁面具有一預定大小S;於一典型習用之快閃記憶體中,頁面大小為64千位元(kbyte);然而,亦可能使用其他大小。Figure 7a illustrates the structure of a portion of an address space of a flash memory. The address space 701 is divided into a number of pages, labeled P1, P2, P3, P4, P5, P6, P7, and P8, respectively. The pages have a predetermined size S; in a typical conventional flash memory, the page size is 64 kilobits (kbytes); however, other sizes may be used.

圖7b圖解說明一儲存於位址空間701中之程式碼版本V1(其一般由參考編號702代表)之記憶體佈置之實例。此實例中之程式碼版本包括五個分別標示為A、B、C、D及E之目的碼模組。該等目的碼模組具有不同大小且依序排列於位址空間701中。Figure 7b illustrates an example of a memory arrangement of a code version V1 (which is generally represented by reference numeral 702) stored in address space 701. The code version in this example includes five destination code modules labeled A, B, C, D, and E. The destination code modules have different sizes and are sequentially arranged in the address space 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之間發生改變而需要被重寫。Figure 7c illustrates an updated version of the code V2, which is generally designated 703. In this embodiment, it is assumed that the only change between versions V1 and V2 is to replace module A with module A', which assumes that module A' is larger than the previous module A, such as the additional memory space required for A'. 705 is explained. It is assumed that the remaining modules B, C, D, and E do not change, that is, coincide with the corresponding portion of the version V1. However, as illustrated by reference numeral 706 in Fig. 7c, when the updated version V2 is sequentially arranged, it is necessary to rewrite the entire contents of the memory pages P1 to P7. Pages P1, P2, and P3 need to be rewritten because the content of module A has changed to module A', and the remaining pages need to be changed between versions V1 and V2 due to the positions of modules B, C, D, and E. Was rewritten.

圖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)則無需被重寫。Figure 7d illustrates an optimal memory arrangement based on an updated program version V2 of an optimized compilation step, generally designated 704. In this embodiment, the compiler has generated the updated module based on strict size constraints (i.e., by using previously compiled information about the current version V1), thereby causing the compiler to generate the updated destination code module A'. 1 and make the B-E of the version V2 not larger than the corresponding destination code module A-E of the current version V1. Accordingly, the compiler has generated two destination code modules A' 1 and A' 2 in place of the single destination code module A' such that A' 1 has the same size as the original module A of version V1. Additional portions of object code modules A 'comprises from 2 to A' corresponding to an additional object code modules of the source, and A 'can not be placed in limited size of the object code modules A' 1. Therefore, the subsequent linker can separately place the module parts A' 1 and A' 2 to reduce the difference between the memory image generated in V2 and the current version V1. In the example of FIG. 7d, the link has an "overflow" object code modules A '2 is attached to the image memory. Therefore, when the memory is updated with the best updated version V2 to replace the previous version V1, that is, by reflashing the relevant page of the flash memory, as illustrated by reference numeral 708, only the rewriting is required. Pages P1, P2, and P7. The remaining pages (ie, pages P3, P4, P5, P6, and P8) do not need to be rewritten.

應理解,在某些情況下,編譯器可將「溢出」目的碼A'2 置於其他目的碼模組中之一個內。舉例而言,若亦更新其他目的碼模組中之一個,且作為更新之結果而減小其大小,則可將額外之目的碼A'2 置於彼另一經更新目的碼模組中而不違反其大小限制條件。It should be understood that in some cases, the compiler can "overflow" object code A '2 is placed in the other object code modules within a. For example, if one of the other destination code modules is also updated and the size is reduced as a result of the update, the additional destination code A' 2 may be placed in another updated destination code module instead of Violation of its size restrictions.

此外,若編譯器基於關於版本V1與V2之間的源碼之變化資訊及/或關於版本V1之編譯之資訊而產生與版本V1之原始目的碼模組A相似之目的碼模組A'1 ,則可進一步減少所產生影像中之差異。舉例而言,如圖7實例中之情形,若目的碼模組A跨越多於一個記憶體區段(圖7中之頁面P1與P2),則編譯器可能能夠將對目的碼模組A'1 之變化限定為僅侷限於部分目的碼模組,以使記憶體區段P1與P2不會全部受到自A更新至A'1 之影響。此外,減少A與A'1 之間的差異會進一步降低需改變其他參考A'1 之目的碼模組中之參考(此亦將導致其他目的碼模組中之變化)之危險。In addition, if the compiler generates the destination code module A' 1 similar to the original destination code module A of the version V1 based on the information about the change of the source code between the versions V1 and V2 and/or the information about the compilation of the version V1, The difference in the generated image can be further reduced. For example, as in the case of the example of FIG. 7, if the destination code module A spans more than one memory segment (pages P1 and P2 in FIG. 7), the compiler may be able to pair the destination code module A'. the variation is limited to a defined portion of the object code modules, so that the memory segments P1 and P2 will not all be updated from A to A Effect 'of 1. In addition, to reduce the A and A 'of the difference between 1 further reduce the need to change other reference A' of the reference object code module 1 in which (also goes to other causes variations in the object code module) of danger.

在下文中,將參照圖8闡述一經更新目的碼模組之分裂之實例。In the following, an example of splitting of an updated destination code module will be explained with reference to FIG.

圖8示意性地圖解說明促進鏈結器做出一最佳記憶體佈置之目的碼模組之產生。Figure 8 is a schematic illustration of the generation of a code module that facilitates the linker to make an optimal memory arrangement.

圖8a圖解說明由一編譯器303將一源碼模組「A.c」(其一般標示為801)之當前版本V1編譯為一目的碼模組「A.o」(其一般標示為802)之編譯。在此實施例中,假設源碼模組801定義三個函數f1()、f2()及f3()。相應地,目的碼模組802包括對應的三個目的模組部分,其每一個皆包括用於執行函數f1()、f2()及f3()中一對應函數之目的碼。函數f1()進一步相依於函數f2()及f3()。不同目的模組部分在目的碼模組內之放置由編譯器303在編譯期間決定。Figure 8a illustrates the compilation of a current version V1 of a source module "A.c" (which is generally designated 801) compiled by a compiler 303 into a destination code module "A.o" (generally designated 802). In this embodiment, it is assumed that the source code module 801 defines three functions f1(), f2(), and f3(). Correspondingly, the destination code module 802 includes corresponding three destination module portions, each of which includes an object code for performing a corresponding function in the functions f1(), f2(), and f3(). The function f1() further depends on the functions f2() and f3(). The placement of the different purpose module portions within the destination code module is determined by the compiler 303 during compilation.

圖8b圖解說明編譯器303對源碼模組「A.c」(標示為803)之經更新版本V2之編譯。在此實例中,假設經更新源碼模組與原始版本V1不同之處在於源碼現在界定函數f1()、f3()、g1()及g2()。此外,函數f1()現在相依於函數f3()、g1()及g2()。因此,與版本V1相比較,已移除對函數f2()之定義,已改變對函數f1()之定義,且已添加兩個新函數g1()及g2()。Figure 8b illustrates compilation of the updated version V2 of the source module "A.c" (labeled 803) by the compiler 303. In this example, assume that the updated source code module differs from the original version V1 in that the source code now defines the functions f1(), f3(), g1(), and g2(). In addition, the function f1() now depends on the functions f3(), g1(), and g2(). Thus, the definition of function f2() has been removed compared to version V1, the definition of function f1() has been changed, and two new functions g1() and g2() have been added.

編譯器303接收源碼803之經更新版本V2及在版本V1之先前編譯期間產生之目的碼802。或者或另外,編譯器303可接收關於目的模組部分在先前版本V1中之佈置的佈置資訊,而非接收整個目的檔案802。The compiler 303 receives the updated version V2 of the source code 803 and the object code 802 generated during the previous compilation of the version V1. Alternatively or additionally, the compiler 303 may receive placement information regarding the placement of the destination module portion in the previous version V1, rather than receiving the entire destination archive 802.

根據先前目的碼模組802,編譯器303決定經更新目的碼模組之最大大小及目的碼模組部分之目標佈置。相應地,在此特定實例中,編譯器可產生一不大於先前目的碼模組「A.o」之經更新目的碼模組「A'1 .o」(804)。此外,編譯器可將已存在於目的碼之先前版本中之函數f1()及f3()定位於相同位置,亦即與先前版本中目的碼模組內相同之相對位址。在此實例中,假設對應於函數g2()之目的碼模組部分不大於先前函數f2()。因此,編譯器可將新函數g2()置於與先前函數f2()相同之位置。最後,編譯器將函數g1()置於一單獨之「溢出」目的碼模組「A'2 .o」(標示為805)中。Based on the previous destination code module 802, the compiler 303 determines the maximum size of the updated destination code module and the target placement of the destination code module portion. Accordingly, in this particular example, the compiler can generate an updated destination code module "A' 1 .o" (804) that is no larger than the previous destination code module "Ao". In addition, the compiler can locate the functions f1() and f3() already present in the previous version of the destination code in the same location, ie the same relative address as in the destination code module in the previous version. In this example, it is assumed that the destination code module portion corresponding to the function g2() is not larger than the previous function f2(). Therefore, the compiler can place the new function g2() at the same position as the previous function f2(). Finally, the compiler places the function g1() in a separate "overflow" destination code module "A' 2 .o" (labeled 805).

因此,上述實例圖解說明編譯器303可產生一不大於先前版本之目的碼模組。在某些實施例中,編譯器甚至可經組態以產生一經更新目的檔案,以(例如)藉由適合裝填使其總大小保持不變。因此避免了在後續鏈結過程中之模組置換。Thus, the above example illustrates that compiler 303 can generate a destination code module that is no larger than the previous version. In some embodiments, the compiler may even be configured to generate an updated destination file to maintain its overall size, for example, by suitable loading. Therefore, module replacement in the subsequent link process is avoided.

此外,該實例顯示編譯器如何可將未改變及經修改之模組部分置於與在先前版本中相同之位置,而無論其在新的源檔案中之位置如何。In addition, this example shows how the compiler can place the unaltered and modified module portion in the same location as in the previous version, regardless of its location in the new source archive.

圖9顯示一目的碼產生過程之實施例之流程圖。Figure 9 shows a flow chart of an embodiment of a destination code generation process.

圖9a顯示一目的碼產生過程之一實施例之流程圖。該過程開始於步驟901,其中(例如)自源儲存庫301接收一欲編譯之源碼模組/檔案之經更新版本。在後續步驟902中,該過程在源碼模組中識別數個模組部分,例如函數、類定義等,並(例如)基於如上文闡述自源儲存庫接收之變化資訊304,或基於源碼之先前版本及對應目的碼之先前版本,決定各個模組部分之版本狀態。特定而言,該過程決定哪些模組部分已被修改、尚未變化、係新的或已被刪除。特定而言,與先前目的碼模組相比已被刪除之目的模組部分導致在經更新目的碼模組中產生可在定位所添加或經修改之目的模組部分時使用之空記憶體空間。在後續子過程903中,處理每一經標識模組部分,從而產生對應之目的模組部分。此子過程之一實施例將在下文中更詳細闡述。具體而言,子過程903進一步接收關於已因所刪除之目的模組部分而變得可用的記憶體槽之資訊907。Figure 9a shows a flow chart of one embodiment of a destination code generation process. The process begins in step 901 where an updated version of a source module/file to be compiled is received, for example, from source repository 301. In a subsequent step 902, the process identifies a number of module portions, such as functions, class definitions, etc., in the source code module, and is based, for example, on change information 304 received from the source repository as set forth above, or based on previous source code The version and the previous version of the corresponding destination code determine the version status of each module part. In particular, the process determines which module parts have been modified, have not changed, are new, or have been deleted. In particular, the portion of the target module that has been deleted compared to the previous destination code module results in an empty memory space that is used in the updated destination code module to locate the added or modified target module portion. . In a subsequent sub-process 903, each identified module portion is processed to produce a corresponding target module portion. One embodiment of this sub-process will be explained in more detail below. In particular, sub-process 903 further receives information 907 about memory slots that have become available due to the deleted target module portion.

在後續步驟904中,將所產生之目的模組部分組合為一經更新目的碼模組。在某些實施例中,該過程將未變化之目的模組部分定位在與先前版本中相同之記憶體位置上,從而進一步減少先前版本與經更新版本之間的差異。In a subsequent step 904, the generated destination module portions are combined into an updated destination code module. In some embodiments, the process positions the unaltered target module portion at the same memory location as in the previous version, further reducing the difference between the previous version and the updated version.

在步驟905中,將所產生目的碼模組之最終大小與對應目的碼模組先前版本(例如,如上文所述作為資料413自一目的碼儲存庫310獲得)之大小比較,並視需要與自鏈結器接收之任何大小限制條件/請求比較。若所產生之經更新目的碼模組滿足該(等)大小限制條件,則該過程終止。否則,若經更新目的碼模組過大,特定而言大於先前版本,則該過程將該目的碼模組分裂為兩個或更多個模組(步驟906)。上文中已參照圖7及8闡述此種分裂之一實例。In step 905, the final size of the generated destination code module is compared with the size of the previous version of the corresponding destination code module (eg, obtained as a data 413 from a destination code repository 310 as described above), and optionally Any size limit/request comparison received from the linker. The process terminates if the generated updated destination code module satisfies the (equal) size limit condition. Otherwise, if the updated destination code module is too large, in particular larger than the previous version, the process splits the destination code module into two or more modules (step 906). An example of such a split has been described above with reference to Figures 7 and 8.

若組合步驟904與後續之鏈結器過程及目的碼格式相容,則可如圖9b中圖解說明將其省略。If the combining step 904 is compatible with the subsequent linker process and destination code format, it may be omitted as illustrated in Figure 9b.

圖9b顯示一目的碼產生過程之替代實施例之流程圖。此過程類似於圖9a之過程。然而,在此實施例中,並不將所產生目的模組部分組合為一較大之目的碼模組。因此,該過程導致產生數個較小實體,該等實體可彼此獨立地由鏈結器重新定位,從而容許鏈結器在產生一最佳化記憶體影像時具有更大自由度。舉例而言,其可有益於將空記憶體槽之再使用延遲至鏈結時間,此乃因鏈結器可針對整個軟體應用程式而非針對一單個源碼模組實施一總體最佳化。Figure 9b shows a flow chart of an alternate embodiment of a destination code generation process. This process is similar to the process of Figure 9a. However, in this embodiment, the generated target module portions are not combined into a larger destination code module. Thus, the process results in the creation of several smaller entities that can be repositioned independently of each other by the linker, allowing the linker to have greater freedom in producing an optimized memory image. For example, it can be beneficial to delay the reuse of empty memory slots to link time, since the linker can implement an overall optimization for the entire software application rather than for a single source module.

圖10顯示圖9a及9b之目的模組部分產生子過程903之一實施例之流程圖。子過程903對所有經識別模組部分執行一循環。針對每一模組部分,該過程最初決定彼模組部分是否已在更新期間得到修改,該模組部分是否係一於更新期間引入之新模組部分,或該模組部分是否保持未被該更新改變。若該模組部分未改變,則該過程前進至步驟1002;若該模組部分經修改,則該過程前進至步驟1003;而當該模組部分係一新模組部分時,該過程前進至步驟1007。Figure 10 is a flow chart showing an embodiment of the module portion generation sub-process 903 of Figures 9a and 9b. Sub-process 903 performs a loop on all identified module portions. For each module part, the process initially determines whether the module part has been modified during the update, whether the module part is a new module part introduced during the update, or whether the module part remains unresolved Update changes. If the module portion is unchanged, the process proceeds to step 1002; if the module portion is modified, the process proceeds to step 1003; and when the module portion is a new module portion, the process proceeds to Step 1007.

在步驟1002中,該過程編譯該(等)未變化之模組部分。當編譯器使用與先前版本之編譯期間相同之編譯選項、最佳化步驟等時,該編譯導致產生一與此目的模組部分之先前版本極為相似或甚至完全一致之經更新目的模組部分。相應地,該過程可(例如)自儲存庫310接收關於編譯先前版本之資訊或甚至該目的碼本身之先前版本之資訊。In step 1002, the process compiles the (equal) unaltered module portion. When the compiler uses the same compilation options, optimization steps, etc. as during the compilation of the previous version, the compilation results in an updated target module portion that is very similar or even identical to the previous version of the target module portion. Accordingly, the process can, for example, receive information from the repository 310 about compiling the previous version of the information or even the previous version of the destination code itself.

在步驟1003中,該過程處理經修改之目的模組部分。具體而言,該過程編譯經修改目的模組部分,從而產生經修改目的碼。若一經修改目的模組部分之大小相比於先前版本已減小,則可使用填充填滿剩餘之記憶體空間,從而提供一與對應之先前版本具有同一大小之經修改目的模組部分。該填充可(例如)藉由僅將當前之記憶體內容留在經填充記憶體空間內而達成。In step 1003, the process processes the modified target module portion. Specifically, the process compiles the modified target module portion to produce a modified destination code. If the size of the modified module portion has been reduced compared to the previous version, the remaining memory space can be filled with padding to provide a modified target module portion of the same size as the corresponding previous version. This padding can be achieved, for example, by leaving only the current memory content in the padded memory space.

在步驟1004中,該過程決定經修改目的模組部分之大小是否已增加。若該大小尚未增加,則該過程繼續至步驟1009。否則,該過程在步驟1005繼續,其中將該模組部分一分為二:一部分安裝在既定記憶體槽內,而另一部分可在後續鏈結過程期間置於任何其他地方。因此,該過程產生一包含第二模組部分之溢出模組部分(步驟1006)。應注意,分裂一目的模組部分(例如一函數)可能需要引入額外之分支指令。於一實施例中,該過程實施一控制流分析以決定是否可避免引入額外之分支指令,且若不能避免,則標識一個或多個適合之分裂點。舉例而言,通常較佳應避開碼之繁忙(亦即頻繁執行)部分,諸如內部循環。為決定適合之分裂點,可利用習知之控制流分析技術。舉例而言,Alfred V.Aho、Ravi Sethi、Jeffrey D.Ullman之「Compilers:Principles,Techniques and Tools」(Addison-Wesley,1986)中第604頁即揭示一種用於偵測循環之演算法。In step 1004, the process determines if the size of the modified destination module portion has increased. If the size has not increased, the process continues to step 1009. Otherwise, the process continues at step 1005 where the module portion is split into two: one portion is installed in a predetermined memory slot and the other portion can be placed anywhere else during the subsequent chaining process. Thus, the process produces an overflow module portion that includes a second module portion (step 1006). It should be noted that splitting a target module portion (such as a function) may require the introduction of additional branch instructions. In one embodiment, the process implements a control flow analysis to determine if additional branch instructions can be avoided, and if not avoided, identify one or more suitable split points. For example, it is generally preferred to avoid the busy (ie, frequently executed) portions of the code, such as internal loops. To determine the appropriate split point, conventional control flow analysis techniques can be utilized. For example, Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, "Compilers: Principles, Techniques and Tools" (Addison-Wesley, 1986), page 604, discloses an algorithm for detecting loops.

在步驟1007中,該過程編譯新模組部分,亦即先前版本中未出現但於更新期間添加之模組部分。於一實施例中,該過程產生一大小受限之目的模組部分,以便若已偵測到任何(例如)因刪除另一目的模組部分而可用之記憶體槽其適合可用記憶體槽之其中一個。若所有部分皆適合此類記憶體槽(步驟1008),則該過程繼續至步驟1009。否則,該過程在步驟1006繼續,其中將不適合該等可用記憶體槽之模組部分定位於一溢出模組部分中。In step 1007, the process compiles a new module portion, that is, a portion of the module that was not present in the previous version but added during the update. In one embodiment, the process produces a portion of the target module that is limited in size so that any memory slot that is available, for example, to delete another portion of the module, is suitable for the available memory slot. One of the. If all of the portions are suitable for such a memory slot (step 1008), then the process continues to step 1009. Otherwise, the process continues at step 1006 where a portion of the module that is not suitable for the available memory slots is positioned in an overflow module portion.

圖11a-b顯示一軟體更新過程之進一步實施例之方塊圖。在圖11a之實施例中,由一編譯器模組1103及一鏈結器模組1106執行更新過程。特定而言,如本文所述,編譯模組1103自一源儲存庫1101接收經更新源碼1102,並產生經更新目的碼模組1105。相應地,編譯器進一步接收包含下述之一個或多個的資訊1104:關於源碼變化之變化資訊、關於編譯源碼之先前版本之編譯器資訊、關於先前目的碼之目的碼資訊等。基於所接收資訊,編譯器產生與目的碼之先前版本儘可能相似之經更新目的碼模組1105。將經更新目的碼轉接至鏈結器1106。Figures 11a-b show block diagrams of further embodiments of a software update process. In the embodiment of FIG. 11a, the update process is performed by a compiler module 1103 and a linker module 1106. In particular, as described herein, the compilation module 1103 receives the updated source code 1102 from a source repository 1101 and generates an updated destination code module 1105. Accordingly, the compiler further receives information 1104 containing one or more of the following: information about changes in source code changes, compiler information about previous versions of compiled source code, destination code information about previous destination codes, and the like. Based on the received information, the compiler generates an updated destination code module 1105 that is as similar as possible to the previous version of the destination code. The updated destination code is transferred to the linker 1106.

於圖11b之實施例中,由一編譯器模組1113、一後處理模組1123及一鏈結器模組1106執行更新過程。在此實施例中,編譯器1113可係一習用編譯器,其自儲存庫1101接收經更新源碼1102並產生經更新目的碼1115。後處理器1123如上文所述接收目的碼1115及額外資訊1104。後處理器1123將各別目的模組部分重新定位於由編譯器1113產生之目的碼模組中,以最小化經更新目的碼與該目的碼之先前版本之間的差異。因此,後處理器可如本文所述重新排列目的模組部分,分裂目的碼模組及/或目的模組部分,並產生溢出目的碼模組,從而產生被饋送至鏈結器1106之最佳經更新目的碼模組1125。In the embodiment of FIG. 11b, the update process is performed by a compiler module 1113, a post-processing module 1123, and a linker module 1106. In this embodiment, the compiler 1113 can be a conventional compiler that receives the updated source code 1102 from the repository 1101 and generates an updated destination code 1115. Post processor 1123 receives destination code 1115 and additional information 1104 as described above. The post processor 1123 repositions the respective destination module portions into the destination code module generated by the compiler 1113 to minimize the difference between the updated destination code and the previous version of the destination code. Therefore, the post processor can rearrange the destination module portion, split the destination code module and/or the destination module portion, and generate the overflow destination code module as described herein, thereby producing the best feed to the linker 1106. The destination code module 1125 is updated.

圖11b實施例之一優點係該後處理器可構建為一單獨之軟體組件,其可結合習用之編譯器及/或鏈結器來使用。因此,此實施例僅需要相對少之軟體設計,此乃因其容許再使用現有之軟體發展工具。One advantage of the embodiment of Figure 11b is that the post processor can be constructed as a separate software component that can be used in conjunction with conventional compilers and/or linkers. Therefore, this embodiment requires only a relatively small amount of software design, as it allows reuse of existing software development tools.

另一方面,圖11a之實施例具有下列優勢:編譯器1103可執行額外之最佳化步驟以進一步減少目的碼之經更新版本與先前版本之間的差異。舉例而言,編譯器可適於(例如)藉由使用相同之最佳化技術等產生與先前版本之目的碼相似之目的碼。On the other hand, the embodiment of Figure 11a has the advantage that the compiler 1103 can perform additional optimization steps to further reduce the difference between the updated version of the object code and the previous version. For example, the compiler can be adapted to generate a destination code similar to the previous version of the destination code, for example, by using the same optimization techniques or the like.

因此,在上文中已闡述一種在三角差動更新封裝之創建過程中整合編譯器之方法。從而藉由在軟體之後續版本中使用接近一致之記憶體佈置來避免無謂之變化。不同於鏈結器及鏈結器之後處理器(諸如三角差動檔案產生器),可賦予一編譯器在大小限制條件下產生碼及分裂不再適合其先前槽之模組部分的能力。Therefore, a method of integrating a compiler during the creation of a triangular differential update package has been described above. This avoids unnecessary changes by using a nearly uniform memory arrangement in subsequent versions of the software. Unlike linker and linker processors (such as triangular differential file generators), it is possible to give a compiler the ability to generate code and split the size of the module portion of its previous slot under size constraints.

應注意,本文主要參照快閃記憶體闡述上述實施例。然而,應瞭解,本文所述方法亦可結合其他類型之記憶體來實施,包括可以更小單元(例如按位元組(byte-wise)或甚至按位元(bitwise))寫入之記憶體類型。此外,本文所述方法亦可結合其他儲存媒體應用,諸如光碟、硬碟、軟碟、磁帶及/或其他類型之磁性或光學儲存媒體。舉例而言,本文所述方法亦可應用於諸如桌上型電腦等電腦之更新,其中該電腦在執行程式之前將來自一第二記憶體/儲存媒體之程式載入RAM。It should be noted that the above embodiments are described herein primarily with reference to flash memory. However, it should be understood that the methods described herein can also be implemented in conjunction with other types of memory, including memory that can be written in smaller units (eg, byte-wise or even bitwise). Types of. Moreover, the methods described herein can also be combined with other storage media applications, such as optical disks, hard drives, floppy disks, magnetic tape, and/or other types of magnetic or optical storage media. For example, the methods described herein can also be applied to computer updates such as desktop computers, where the computer loads a program from a second memory/storage medium into RAM prior to executing the program.

本發明可藉助包括數個相異元件之硬體及一經合適程式化之電腦來實施。在列舉數個構件之裝置請求項中,可藉由硬體(例如如本文所述之一經合適程式化之微處理器或電腦及或一個或多個通信介面)之一個且同一物項實施數個該等構件。在彼此不同之附屬專利申請項中引用特定方法或在不同實施例中闡述特定方法此一事實並不表示不能有利地使用該等方法之組合。The invention can be implemented by means of a hardware comprising a plurality of distinct components and a suitably programmed computer. In the device request for enumerating several components, one and the same item implementation number may be implemented by hardware (for example, a suitably programmed microprocessor or computer and one or more communication interfaces as described herein) One of these components. The mere fact that the particular method is recited in the <RTIgt;

應強調,術語「包括」在用於此說明書中時旨在指定所注明特徵、整數、步驟或組件之存在,而不排除一個或多個其他特徵、整數、步驟、組件或其組群之存在或添加。It should be emphasized that the term "comprising", when used in this specification, is intended to mean the existence of the specified feature, integer, step or component, and does not exclude one or more other features, integers, steps, components or groups thereof Exist or add.

101...行動終端101. . . Mobile terminal

102...軟體更新系統102. . . Software update system

103...通信介面103. . . Communication interface

104...介面電路104. . . Interface circuit

105...處理單元105. . . Processing unit

106...版本資料庫/儲存庫106. . . Version repository/repository

210...通信塊210. . . Communication block

211...處理單元211. . . Processing unit

212...記憶體單元212. . . Memory unit

301...源碼儲存庫301. . . Source repository

302...源碼模組302. . . Source module

303...編譯器303. . . translater

304...變化資訊304. . . Change information

305...目的碼模組305. . . Destination code module

306...鏈結器306. . . Chain cutter

307...絕對檔案/可執行程式/鏈結器輸出/二進製(經更新)影像307. . . Absolute File/Executable/Linker Output/Binary (Updated) Image

308...三角差動檔案產生模組308. . . Triangular differential file generation module

309...三角差動檔案309. . . Triangular differential file

310...儲存庫310. . . Repository

412...編譯資訊412. . . Compilation information

413...編譯資訊413. . . Compilation information

514...回饋資訊514. . . Feedback information

615...改變資訊615. . . Change information

616...資訊616. . . News

617...資料流箭頭617. . . Data flow arrow

701...位址空間701. . . Address space

702...程式碼版本V1702. . . Code version V1

703...經更新版本V2703. . . Updated version V2

704...最佳化記憶體佈置704. . . Optimized memory placement

705...額外記憶體空間705. . . Additional memory space

801...源碼模組「A.c」801. . . Source module "A.c"

802...目的碼模組「A.o」802. . . Destination code module "A.o"

803...源碼模組「A.c」803. . . Source module "A.c"

804...經更新目的碼模組「A'1 .o」804. . . Updated destination code module "A' 1 .o"

805...「溢出」目的碼模組「A'2 .o」805. . . "Overflow" destination code module "A' 2 .o"

1101...源儲存庫1101. . . Source repository

1102...經更新源碼1102. . . Updated source

1103...編譯模組1103. . . Compilation module

1104...資訊1104. . . News

1105...經更新目的碼模組1105. . . Updated destination code module

1106...鏈結模組1106. . . Link module

1113...編譯模組1113. . . Compilation module

1115...目的碼1115. . . Destination code

1123...後處理模組1123. . . Post processing module

1125...最佳化目的碼模組1125. . . Optimized destination code module

根據上文參照圖式所闡述之實施例,本發明之上述及其他態樣將更加明顯及清晰,圖式中:圖1示意性地顯示一種用於更新一行動終端中軟體之系統之實施例之方塊圖;圖2示意性地顯示一電子裝置(例如一行動終端)之方塊圖;圖3顯示一軟體更新過程之一實施例之方塊圖;圖4顯示一軟體更新過程之另一實施例之方塊圖;圖5顯示一軟體更新過程之再一實施例之方塊圖;圖6顯示一軟體更新過程之再一實施例之方塊圖;圖7示意性地圖解說明一快閃記憶體在軟體更新之前及之後的記憶體佈置,其中該步驟藉由引入一溢出塊而得到最佳化。The above and other aspects of the present invention will be more apparent and apparent from the embodiments described herein with reference to the accompanying drawings in which: FIG. 1 schematically shows an embodiment of a system for updating software in a mobile terminal. Figure 2 is a block diagram showing an electronic device (e.g., a mobile terminal); Figure 3 is a block diagram showing an embodiment of a software update process; and Figure 4 is a block diagram showing another embodiment of a software update process. FIG. 5 is a block diagram showing still another embodiment of a software update process; FIG. 6 is a block diagram showing still another embodiment of a software update process; and FIG. 7 is a schematic diagram illustrating a flash memory in software. The memory arrangement before and after the update, wherein the step is optimized by introducing an overflow block.

圖8示意性地圖解說明促進鏈結器做出一最佳記憶體佈置之目的碼模組之產生;圖9顯示一目的碼產生過程之實施例之流程圖;圖10顯示圖9之目的模組部分產生子過程之一實施例之流程圖;圖11a-b顯示一軟體更新過程之另一實施例之方塊圖。Figure 8 is a schematic diagram illustrating the generation of a destination code module that facilitates the linker to make an optimal memory arrangement; Figure 9 shows a flow diagram of an embodiment of a destination code generation process; Figure 10 shows the destination mode of Figure 9. The group portion produces a flowchart of one embodiment of a sub-process; Figures 11a-b show block diagrams of another embodiment of a software update process.

301...源碼儲存庫301. . . Source repository

302...源碼模組302. . . Source module

303...編譯器303. . . translater

304...變化資訊304. . . Change information

305...目的碼模組305. . . Destination code module

306...鏈結器306. . . Chain cutter

307...絕對檔案/可執行程式/鏈結器輸出/二進製(經更新)影像307. . . Absolute File/Executable/Linker Output/Binary (Updated) Image

308...三角差動檔案產生模組308. . . Triangular differential file generation module

309...三角差動檔案309. . . Triangular differential file

310...儲存庫310. . . Repository

412...編譯資訊412. . . Compilation information

413...編譯資訊413. . . Compilation information

514...回饋資訊514. . . Feedback information

615...改變資訊615. . . Change information

616...資訊616. . . News

617...資料流箭頭617. . . Data flow arrow

Claims (23)

一種用於產生一電腦程式之經更新目的(object)碼之方法,該經更新目的碼適合作為一鏈結器組件之輸入,以用於產生一欲載入一儲存媒體之經更新記憶體影像,該儲存媒體中已儲存有一與該電腦程式之當前版本相對應之當前記憶體影像,該方法包括:- 接收至少一個經更新輸入碼模組,自其產生經更新目的碼;- 處理至少該經更新輸入碼模組以產生至少一個適於由該鏈結器組件鏈結之經更新目的碼模組,以產生該經更新記憶體影像;及- 執行至少一個最佳化過程以減少該經更新目的碼模組與一組當前目的碼模組中一對應者之間的差異,該組當前目的碼模組與該電腦程式之當前版本相對應,其中在將該經更新目的碼模組饋送至該鏈結器組件之前,執行該最佳化過程,及其中該經更新輸入碼模組係至少一個由一編譯器(compliler)自至少一個對應之經更新源碼(source code)模組中產生之初步目的碼(preliminary object)模組。 An method for generating an updated object code of a computer program, the updated object code being suitable as an input to an linker component for generating an updated memory image to be loaded into a storage medium The storage medium has stored a current memory image corresponding to the current version of the computer program, the method comprising: - receiving at least one updated input code module, generating an updated destination code therefrom; - processing at least the Updating the input code module to generate at least one updated destination code module adapted to be linked by the linker component to generate the updated memory image; and - performing at least one optimization process to reduce the Updating a difference between the destination code module and a corresponding one of the current destination code modules, the current destination code module corresponding to the current version of the computer program, wherein the updated destination code module is fed Performing the optimization process before the linker component, and wherein the updated input code module is at least one updated by at least one corresponding source code from a compiler (compliler) (source code) The preliminary object module generated in the module. 如請求項1之方法,其中該至少一個經更新輸入碼模組係至少一個經更新源碼模組,且其中該方法進一步包括編譯該經更新源碼模組之步驟。 The method of claim 1, wherein the at least one updated input code module is at least one updated source code module, and wherein the method further comprises the step of compiling the updated source code module. 如請求項1之方法,進一步包括自該鏈結器組件接收控 制資料之步驟。 The method of claim 1, further comprising receiving control from the linker component The steps to make data. 如請求項3之方法,其中該控制資料包含對該經更新目的碼模組大小之大小限制條件。 The method of claim 3, wherein the control data includes a size limit condition for the size of the updated destination code module. 如請求項1之方法,進一步包括接收該組當前目的碼模組之步驟。 The method of claim 1, further comprising the step of receiving the current destination code module of the group. 如請求項1之方法,進一步包括接收指示該至少一個經更新輸入碼模組與至少一個對應之當前輸入碼模組之間之差異的變化資訊之步驟,該至少一個當前輸入碼模組與該組當前目的碼模組相對應。 The method of claim 1, further comprising the step of receiving change information indicating a difference between the at least one updated input code module and the at least one corresponding current input code module, the at least one current input code module and the The current destination code module of the group corresponds. 如請求項1之方法,進一步包括接收關於一先前處理步驟之處理資訊之步驟,該處理步驟產生來自至少一個對應之當前輸入碼模組的該組當前目的碼模組。 The method of claim 1, further comprising the step of receiving processing information regarding a previous processing step, the processing step generating the set of current destination code modules from the at least one corresponding current input code module. 如請求項7之方法,其中該處理資訊包含當前佈置資訊及關於一先前編譯(compilation)步驟的編譯器資訊之至少之一者,該當前佈置資訊係指示在該當前目的碼模組中的一組目的模組部分之一當前佈置。 The method of claim 7, wherein the processing information includes at least one of current placement information and compiler information about a previous compilation step, the current placement information indicating one of the current destination code modules One of the module parts of the group is currently arranged. 如請求項8之方法,其中該編譯器資訊包含至少一個源-機器碼(source-to-machine code)映射及指示在該先前編譯步驟期間應用哪些編譯器最佳化步驟之資訊。 The method of claim 8, wherein the compiler information includes at least one source-to-machine code map and information indicating which compiler optimization steps are applied during the previous compilation step. 如請求項1之方法,進一步包括儲存經更新處理資訊之步驟,該經更新處理資訊係關於用於產生該經更新目的碼模組以供用於一後續處理步驟之該處理步驟。 The method of claim 1, further comprising the step of storing updated processing information relating to the processing step for generating the updated destination code module for use in a subsequent processing step. 如請求項10之方法,其中該經更新處理資訊包含佈置資訊及關於一編譯步驟之編譯器資訊之至少之一者,其中 該佈置資訊係指示在該經更新目的碼模組中一組目的模組部分的一佈置。 The method of claim 10, wherein the updated processing information includes at least one of arrangement information and compiler information about a compilation step, wherein The placement information indicates an arrangement of a set of destination module portions in the updated destination code module. 如請求項11之方法,其中該編譯器資訊包含至少一個源-機器碼映射及指示在該編譯步驟期間應用哪些編譯器最佳化步驟之資訊。 The method of claim 11, wherein the compiler information includes at least one source-to-machine code map and information indicating which compiler optimization steps are applied during the compiling step. 如請求項1之方法,其中該經更新目的碼模組包括複數個目的模組部分。 The method of claim 1, wherein the updated destination code module comprises a plurality of destination module portions. 如請求項13之方法,其中該等目的模組部分之每一個係可在一記憶體影像中重新定位之一可重新定位實體。 The method of claim 13, wherein each of the target module portions is repositionable in a memory image to reposition the entity. 如請求項13之方法,其中該等目的模組部分之每一個包括一函數定義、一程序定義、一類(class)定義、一常數定義、一變數定義中之至少一個。 The method of claim 13, wherein each of the target module portions comprises at least one of a function definition, a program definition, a class definition, a constant definition, and a variable definition. 如請求項13之方法,其中該最佳化步驟包括決定在該經更新目的碼模組中該等目的模組部分之一順序。 The method of claim 13, wherein the optimizing step comprises determining an order of the ones of the target module portions in the updated destination code module. 如請求項13之方法,其中該最佳化步驟進一步包括將不包含於與一第一經更新目的碼模組相對應之一當前目的碼模組中之該等目的模組部分之至少一個置於與該第一經更新目的碼模組不同之一第二經更新目的碼模組中,以減少該第一經更新目的碼模組與該對應之當前目的碼模組之間的差異。 The method of claim 13, wherein the optimizing step further comprises: placing at least one of the target module portions not included in one of the current destination code modules corresponding to a first updated destination code module And in the second updated destination code module different from the first updated destination code module, to reduce a difference between the first updated destination code module and the corresponding current destination code module. 如請求項1之方法,進一步包括將至少該經更新目的碼模組饋送至用於鏈結至少該經更新目的碼模組之一鏈結器組件中,從而產生適合由一三角差動(delta)檔案產生器後續處理之該經更新記憶體影像。 The method of claim 1, further comprising feeding at least the updated destination code module to a linker component for linking at least the updated destination code module to generate a delta differential (delta) The updated memory image that is subsequently processed by the file generator. 如請求項1之方法,其中該電腦程式係適於由一行動終端執行之電腦程式。 The method of claim 1, wherein the computer program is adapted to be executed by a mobile terminal. 一種用於產生一電腦程式之經更新目的碼之資料處理系統,該經更新目的碼適合作為一鏈結器組件之輸入以用於產生一欲載入一記憶體中之經更新記憶體影像,其中該記憶體中已儲存有與該電腦程式之一當前版本相對應之一當前記憶體影像,該資料處理系統經適當程式化以執行如請求項1之方法的步驟。 A data processing system for generating an updated destination code of a computer program, the updated destination code being suitable for input as an linker component for generating an updated memory image to be loaded into a memory. One of the current memory images corresponding to the current version of one of the computer programs is stored in the memory, and the data processing system is appropriately programmed to perform the steps of the method of claim 1. 一種包括程式碼構件之非暫時性(non-transitory)電腦程式產品,當在一資料處理系統上執行該程式碼構件時,該程式碼構件適於使該資料處理系統執行如請求項1之方法。 A non-transitory computer program product comprising a code component, the code component being adapted to cause the data processing system to perform the method of claim 1 when the code component is executed on a data processing system . 如請求項21之非暫時性電腦程式產品,其中該電腦程式產品包括一編譯器。 The non-transitory computer program product of claim 21, wherein the computer program product comprises a compiler. 如請求項21之非暫時性電腦程式產品,其中該電腦程式產品包括一編譯器之一後處理器,該後處理器適於接收由該編譯器產生之目的碼及產生欲饋送至一鏈結器組件中之經修改目的碼。 The non-transitory computer program product of claim 21, wherein the computer program product comprises a post processor of a compiler, the post processor being adapted to receive the destination code generated by the compiler and to generate a feed to a link The modified destination code in the component.
TW095130535A 2005-08-18 2006-08-18 Object code generation for increased delta performance TWI439931B (en)

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 (en) 2014-06-01

Family

ID=35457808

Family Applications (1)

Application Number Title Priority Date Filing Date
TW095130535A TWI439931B (en) 2005-08-18 2006-08-18 Object code generation for increased delta performance

Country Status (4)

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

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
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
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
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. 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 (en) * 2013-02-05 2013-05-29 东莞宇龙通信科技有限公司 Method and system for obtaining difference upgrade patch
US9268552B1 (en) * 2013-06-18 2016-02-23 Ayla Networks, Inc. Patching improvement for executables in memory constrained devices
CN105094879A (en) * 2014-05-23 2015-11-25 西安中兴新软件有限责任公司 Software upgrading method and mobile terminal
CN103984582B (en) * 2014-06-04 2017-05-31 网易(杭州)网络有限公司 A kind of hot update method and device
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 (en) * 2015-04-27 2021-11-30 삼성전자 주식회사 Method for processing dynamic language and Electronic device using the same
WO2017158663A1 (en) * 2016-03-15 2017-09-21 パナソニックIpマネジメント株式会社 Data generation apparatus, incorporated terminal, firmware update system, and data generation method
CN111133412A (en) 2017-07-25 2020-05-08 奥罗拉实验室有限公司 Software incremental update and anomaly detection for building vehicle ECU software based on tool chain
CN109582310B (en) * 2018-11-30 2022-11-25 北京微播视界科技有限公司 Data processing method and device, electronic equipment and computer readable storage medium
CN113778515B (en) * 2021-11-09 2022-03-04 北京世纪好未来教育科技有限公司 Method and device for determining program package change information

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834171B2 (en) 1989-02-06 1998-12-09 株式会社日立製作所 Compilation method
DE59108978D1 (en) 1990-08-28 1998-06-10 Landis & Gyr Tech Innovat Method for changing a machine language version of a first program stored in a computer of a device into a machine language version of a second program derived from the first program by at least one change
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
WO2004095457A2 (en) * 2003-04-11 2004-11-04 Bitfone Coproration 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
EP1755034A1 (en) 2007-02-21
EP1755034B1 (en) 2017-01-18
US20090113386A1 (en) 2009-04-30
WO2007020082A1 (en) 2007-02-22

Similar Documents

Publication Publication Date Title
TWI439931B (en) Object code generation for increased delta performance
JP4903686B2 (en) Flash memory programming
US7739679B2 (en) Object ordering tool for facilitating generation of firmware update friendly binary image
US7007049B2 (en) Device memory management during electronic file updating
EP1956482B1 (en) Generating delta updates for a processing device
US20080098160A1 (en) Mobile device capable of multiple updates
KR101213275B1 (en) System and method for providing monolithic image for use in a wireless device
KR100871778B1 (en) Dynamic addressing da using a centralized da manager
CN101026825A (en) System and method for a patch minimization tool
US8001518B2 (en) Configuring a shared library to accommodate relocatable data in a pervasive device
EP1755039A1 (en) Feedback linker for increased delta performance
US7844734B2 (en) Dynamic addressing (DA) using a centralized DA manager
CN111176717A (en) Method and device for generating installation package and electronic equipment
CN108829465B (en) Local dynamic loading system and method based on direct read-write FLASH
CN1758220A (en) Method of updating software release
KR20010001869A (en) Program upgrading apparatus and method for a firmware board
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 (en) Dynamic Linking Method for Application Program
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
CN117707543A (en) Application installation package manufacturing and installation method, computing device and storage medium
CN116382701A (en) Program generating method and program local updating method for embedded system
CN115774561A (en) Application program upgrading method, electronic equipment, chip and readable storage medium

Legal Events

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