TWI775616B - 差分包產生方法,差分包產生設備,更新方法,及嵌入式系統 - Google Patents
差分包產生方法,差分包產生設備,更新方法,及嵌入式系統 Download PDFInfo
- Publication number
- TWI775616B TWI775616B TW110135671A TW110135671A TWI775616B TW I775616 B TWI775616 B TW I775616B TW 110135671 A TW110135671 A TW 110135671A TW 110135671 A TW110135671 A TW 110135671A TW I775616 B TWI775616 B TW I775616B
- Authority
- TW
- Taiwan
- Prior art keywords
- differential
- block
- sub
- blocks
- file
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Auxiliary Devices For And Details Of Packaging Control (AREA)
- Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
Abstract
本申請提出一種差分包產生方法,差分包產生設備,及應用該差分包的更新方法,使記憶體資源有限的嵌入式系統以分塊的方式執行差分升級。差分包是在上位設備中產生。所述上位設備首先對原檔案以及新檔案進行差分比對,產生全域差分資訊。接著根據該全域差分資訊,將該新檔案分割成多個子區塊,並決定所有子區塊的補丁參數。接著根據該補丁參數,將每個子區塊與該原檔案進行差分比對,產生對應每一子區塊的差分塊。最後,整合該差分塊,產生該差分包。本申請亦提出差分包產生設備,即該嵌入式系統的上位設備的實施例。
Description
本申請涉及嵌入式系統的韌體更新方法,尤其涉及一種可供記憶體資源有限的嵌入式系統以分塊方式進行升級的差分包。
傳統嵌入式系統一般都是計算能力和記憶體資源有限的設備。當其中的韌體需要升級時,可以採用整包升級法或差分升級法。整包升級法的好處是不需要舊的韌體資料,直接以新檔案覆蓋。差分升級又稱為增量升級(incremental upgrade),升級包中只攜帶了差異處的資料,至於與原檔案相同處的資料,仍然仰賴韌體提供,所以升級包的檔案大小可以顯著減少。差分包通常是由記憶體資源相對富裕的上位設備產生,再傳送至嵌入式系統中進行還原組成。上位設備通常是指嵌入式系統的生產設備,也可以是雲端伺服器,或桌上型電腦。而嵌入式系統可以是較低規格的小型程式控制設備,例如閘道設備,物聯網裝置,路由設備等。對於嵌入式系統而言,由於記憶體資源受限,差分包的還原組成程式較為困難。為了適應有限的記憶體容量,差分包可以切成多個小區塊,分批寫入。升級包以差分形式實現,目的在最佳化升級包大小。傳統方式是以資料移動和資料刪除的命令來減少必須攜帶的資料。然而,資料的添加是無法減除的。因此升級包的大小最佳化,主要受到資料添加的影響。當差分數據以多個小區塊分批寫入時,由於缺乏全域的資訊判斷,有機率導致韌體中的原檔案原本存在的有效資訊被覆蓋。為此,在產生差分包時,必須以資料添加的形式重複攜帶被覆蓋的有效資訊,使產生的差分包變大而失去最佳化的目的。
因此,一種適用於較低規格的嵌入式系統的最佳化差分包產生方法,是有待開發的。
為了在嵌入式系統的韌體中完整還原新檔案,本申請的實施例在上位設備端產生差分包時,考慮了原檔案和新檔案之間的資料差異特性,以及嵌入式系統的容量特徵,以最大化原檔案中有效資訊的再利用率,確保還原成功。
為瞭解決上述技術問題,本申請提出一種差分包產生方法,可使記憶體資源缺乏的嵌入式系統以分塊的方式執行差分升級。差分包是在上位設備中產生。所述上位設備首先對原檔案以及新檔案進行差分比對,產生全域差分資訊。該全域差分資訊包含該新檔案與該原檔案匹配部份的位址和長度。接著根據該全域差分資訊,將該新檔案分割成多個子區塊,並決定所有子區塊的補丁參數。接著根據該補丁參數,將每個子區塊與該原檔案進行差分比對,產生對應每一子區塊的差分塊。最後,整合該差分塊,產生該差分包。
若該新檔案與原檔案的大小不同,在將該新檔案分割之前,可將該原檔案及該新檔案中相對小的檔案結尾部補上固定資料,使該原檔案及該新檔案等長。
將每個子區塊與該原檔案進行差分比對時,如果比對結果一致,則標記該子區塊為無需更新。相對地,如果比對結果不一致,則標記該子區塊為待更新區塊。
更具體地,每個子區塊的補丁參數可包含差分起始位置,處理順序,以及處理方向。
在決定所有子區塊的補丁參數時,可根據原檔案中需被新增、刪除和保留的部份決定處理順序和處理方向。本申請實施例透過處理順序和處理方向的安排,可確保原檔案中需被保留的部份不被覆蓋。
在進一步實施例中,根據補丁參數,將每個子區塊與該原檔案進行差分比對時,可根據該子區塊的處理順序和所述處理方向,產生從所述差分起始位置起算的該差分塊。
藉此,在整合該差分塊,產生差分包時,可依照該處理順序,將每個子區塊對應產生的差分塊壓縮並合併,形成該差分包。
更進一步地,從每個子區塊產生對應的差分塊時,可將該子區塊更新至該原檔案的對應位置。當該原檔案被更新至與該新檔案完全一致時,判定該差分包產生完成。
在另一實施例中,每一差分塊中可包含至少下列其中之一:刪除資料的命令,或新增資料的命令,供該嵌入式系統更新時執行。所述刪除資料的命令還可包含欲刪除資料的起始位址和長度。所述新增資料的命令還可包含欲新增的資料的起始位址和所述欲新增的資料。
每一差分塊可進一步包含移動資料的命令,使該嵌入式系統更新時移動韌體中原有的資料。
本申請另提出差分包產生設備的實施例,即該嵌入式系統的上位設備的實施例。一種差分包產生設備,可用於產生最佳化的差分包,使嵌入式系統以分塊的方式讀取該差分包,將該嵌入式系統中的韌體中的原檔案升級為新檔案。在該差分包產生設備中,包含儲存裝置,存有程式,可用於執行前述各種差分包產生方法的實施例。記憶體連接該記憶體,用於載入所述程式。處理器,連接所述儲存裝置和記憶體,用於執行所述程式,以產生該差分包。
本申請進一步提出一種應用該差分包的更新方法,用於使嵌入式系統升級韌體。首先由待升級的嵌入式系統逐一載入該差分包中的每一該差分塊。接著使該韌體以分塊的方式依照對應的該補丁參數而升級。本申請實施例的特點,就是在產生差分包的時候,以順序和方向的安排調度,事先排除了分塊執行差分更新時可能遇到的各種衝突,使記憶體有限的嵌入式系統可以在不需要升級硬體(即,在原有的有限硬體資源)的前提下順利地以分塊的方式讀取差分包,進行差分升級。不但保留了差分升級的效率,也降低了硬體需求成本。
本申請也提供所述嵌入式系統的實施例。該嵌入式系統中包含儲存裝置,存有一韌體。嵌入式系統中包含一記憶體,用於接收並暫存所述實施例產生的一差分包。嵌入式系統中包含一處理器連接該記憶體和儲存裝置。其中,該處理器逐一載入該差分包中的該等差分塊,每一差分塊包含對應的補丁參數。其中每一補丁參數包含用於處理每一子區塊的起始位置,處理順序,以及處理方向。該處理器使該韌體分為多個子區塊,依照對應的該補丁參數進行韌體更新。
下面將結合本申請實施例中的圖式,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本申請保護的範圍。
圖1是本申請一實施例的差分包產生設備100和嵌入式系統110。差分包產生設備100一般可以是生產線上的設備,或是使用者自備的桌機,在此又可稱為上位設備。升級包120是在差分包產生設備100中產生,再透過網路或各種儲存媒體傳送給嵌入式系統110。差分包產生設備100中基本包含儲存裝置106,用於儲存程式108。所述程式108可被載入至記憶體104中,由處理器102執行後,依照本說明書實施例介紹的差分包產生方法,產生升級包120。嵌入式系統110可以是任何生活中常見的智慧家電,例如物聯網設備(例如:智能家電 ),路由設備或閘道設備。基本包含儲存裝置116,可儲存韌體118,使處理器112和記憶體114載入並執行韌體118中的功能,實現嵌入式系統110的基本運作。由於儲存裝置116通常是可重複讀寫的,因此服務商可以經常性的對售出的嵌入式系統110提供韌體118的升級包,即升級包120。在大部份的嵌入式系統110中,記憶體114是有限資源,因此要以升級包120升級韌體118,必須使用分塊載入的方式。然而如果升級包120是以差分包的形式存在,以分塊方式執行補丁升級會因缺乏全域資訊而造成有效資料被覆蓋,導致升級不正確。
針對現有技術的缺陷,本申請提出的差分包產生方法,充分利用上位設備分析原檔案和新檔案的差異資訊,以特定的順序分塊產生差分包。該差分包,又可稱為補丁包(patch file),其中組成格式,適合記憶體資源缺乏的嵌入式系統以分塊的方式升級韌體。本申請提出的方法,同時擁有傳統差分包輕省的優點,也兼具低硬體需求的優點。
圖2是原檔案和新檔案進行全域差分比對的實施例。原檔案202存放在記憶體或儲存裝置中,其中的內容位置可表示為分佈在位址A0至A6的區塊a、b、c、d、e,及f。當新檔案204出現,其中的區塊表示為a、c、h、i、d、e。當原檔案202和新檔案204進行全域差分比對(diff)後,得到的全域差分資訊206。一般diff比對的結果,可以最精簡的格式描述原檔案202和新檔案204之間的差異。舉例來說,diff比對的結果可指示位址A1有區塊b被刪除的情況(b--),位址A2開始有新增區塊h和j的情形(h++,j++),而位址A5有刪除區塊5的情形(f--)。在本實施例中,全域差分資訊206可用來描述原檔案202和新檔案204之間的匹配狀況。舉例來說,全域差分資訊206可以是一種映射表的形式,記錄了新檔案中每一子區塊在原檔案中出現的起始位址和長度。以圖2為例,可以透過一個全域差分資訊206瞭解新檔案中的區塊a、c、d、e是與原檔案匹配的,而且記錄了這些區塊在原檔案中對應的起始位置和長度。借由此資訊,可使後續步驟決定最最佳化的補丁參數,包含處理順序、起始位置和處理方向。依照該處理順序和處理方向,每個子區塊與原檔案進行差分比對,得到的結果簡稱差分塊。這些差分塊最後依照該處理順序逐個壓縮進一檔案中,就完成了差分包。對嵌入式系統而言,只要依序使用差分包中每一差分塊所記錄的資料對韌體中的原檔案進行補丁運算(patch),就可以在韌體中無縫還原新檔案。
圖3是本申請實施例的差分包產生方法的流程圖。實施具體步驟如下。
在步驟301中,對原檔案202(待升級檔案)以及新檔案204(目的檔案)整體做差分比對,得到全域差分資訊206,包含目的檔案資料在待升級檔案中匹配的位置和長度的映射表。一般差分比對可將兩個檔案的差異處,以特定格式記錄(例如diff檔),包含檔案中添加及刪減的片段和位址。本實施例的全域差分資訊206則是將目的檔案與待升級檔案中匹配的部份的位址和長度記錄為一個映射表,以利最佳化後續步驟。
在步驟303中,接著將新檔案204進行分塊,將該新檔案204分割成多個子區塊。若新檔案204與原檔案202的大小不同,在進行分塊之前,將兩檔案中相對小的那份的檔案結尾部補0xFF,使兩檔案等長。分塊的大小可以是固定大小,也可以是彈性決定的浮動值,以不超過嵌入式系統一次可處理的能力上限為原則。舉例來說,分塊可以是固定的位址分段(segment),例如4K,8K,16K位元區塊。分塊的大小也可以是由演算法視情況安排,例如將新檔案204中與原檔案202有差異的連續的多個差異片段配置為一子區塊。至於兩檔案中相同的片段,雖然不需要更新,但是通常會受到新增和刪除片段的影響而必須移動位置。因此也可以透過子區塊的形式,於後續步驟進行處理。
在步驟305中,開始一遞回執行程式,將新檔案204切割出來的每一子區塊與原檔案202進行逐個對比。因此步驟307至315以「該子區塊」形容每回合輪到的子區塊。
在步驟307中,判斷該子區塊與該原檔案202的對應位置內容進行一致性檢查。若內容一致,則在步驟309中標記該子區塊為無需更新,並直接跳至步驟317。相對的,內容不一致的子區塊則表示為待更新區塊。每一待更新區塊代表的是新檔案204中的對應片段。後續步驟311至315將會以每一待更新區塊為單位逐步進行差分包的產生。
在步驟311中、依據步驟301中得到的全域差分資訊206,試算出用於產生差分包的補丁參數,包含每個待更新區塊的差分起始位置、處理方向和處理順序。在決定所有子區塊的補丁參數時,可根據原檔案和新檔案中匹配的部份決定處理順序和處理方向。本申請實施例透過處理順序和處理方向的安排,可確保原檔案中需被保留的匹配部份不被覆蓋。
所述差分起始位置是指在原檔案中即將被待更新區塊進行差分更新的起始位址,每一個待更新區塊會在原檔案中有不同的差分起始位置。
所述每個待更新區塊的處理方向可以是正向,即從低位元元址往高位址進行差分比對,或反向,即從高位址往低位元元址進行差分比對。考慮到新檔案相對於原檔案改動,添加 ,刪除,由前兩個帶來資料的正向和反向移動。若是檔案資料正向或者反向差分,勢必會導致待升級中有效資訊被覆蓋,導致做出來的效果比較差。而本實施例充分利用已知的全域差分資訊206,來彈性決定每個待更新區塊的處理方向。舉例來說,由於補丁的程式中,目標韌體中同一位址的原資料可能需要先移動至目標位置,才能空出空間讓新資料寫入。因此在每個待更新區塊中,有些情況用正向更新可以滿足先移動後寫入的順序,有些情況則適合反向更新。這種彈性配置方式可以減少原資料的損失,進而減少在差分包中需要攜帶的資料量。
所述每個待更新區塊的處理順序,可以是指在產生差分包的程式中,所有待更新區塊被處理的先後順序。其決定的原則與處理方向類似,只是進一步考慮了全域的狀況,後續步驟詳述。
在步驟313中,按照設定的補丁參數,對原檔案和子區塊進行差分,產生差分塊,壓縮並附加至差分包。換句話說,多個待更新區塊依照處理順序和原檔案進行差分比對,會得到多個差分塊。將這些差分塊集合在一起,就是差分包。
在步驟315中,每產生一差分塊後,還可將原檔案對應位置的資料,更新為待更新區塊的內容。
在步驟317中,檢查被待更新區塊更新後的原檔案202和新檔案204是否一致。如果不是,則重複進行步驟305。如此迴圈地依序處理所有待更新區塊,直到原檔案與新檔案資料完全一致,即可在步驟319中確認差分包完成。
該差分包可以是壓縮的格式,例如zip。其中的內容格式,除了包含對應每個待更新區塊的差分塊,也可以包含對應每個待更新區塊的差分起始位置,以及處理方向。
所產生的差分包可以使嵌入式系統在執行差分升級的時候,能在容量有限的記憶體中,逐個使用每個差分塊對目標韌體進行補丁,從該嵌入式系統的韌體中的原檔案還原出新檔案。並且在更新程式中避免了傳統技術中會覆蓋原始有效資料的問題。
圖4是本申請新檔案切塊及決定補丁參數的實體說明。如步驟303所述,新檔案204被切成三個子區塊410,420及430。這些子區塊的補丁參數412,422和432,對應地根據原檔案202和新檔案204的全域差分資訊206而產生。從子區塊410可知,區塊a保持不變,而區塊b變成了c。換言之,區塊b被刪除了,而且不再被新檔案204中其他部份所需要。因此子區塊410的處理次數可以無後顧之憂的安排為1。由起始位置A1為出發點往右處理。為了表達方便,在本實施例中以數字1代表方向右,數字2代表方向左。在子區塊420中觀察原檔案202和新檔案204的變化,可發現區塊c變成了h,而區塊d變成了i。然而區塊d在此階段還不能刪除,因為新檔案204的其他部位需要d。因此子區塊420的處理順序往後延遲,先決定其他子區塊的補丁參數。接著在處理子區塊430時,觀察到區塊e變成d,而f變成e。這種情況適合以A6為起始位置往前更新,藉此原檔案202的區塊e可以先被移到f的位置,再把d填入e原本的位置。所以在本實施例中,補丁參數432的設定就是處理順序為2,處理方向為2(反向),而差分起始位置為A6。
一般差分比對時,兩個檔案之間的資料差異可以分為幾種情況:新增,刪除,或不變。資料的新增,使對應位置的原檔案必須整體向後移動。相對地,資料的刪除使對應位置的原始資料必須整體向前移動。至於不變的資料,在此又稱為原始有效資料,在差分升級時由於受到新增和刪除資料的影響,大部份的情況下會被移動位置。因此不變的資料又分為移動和不移動兩種狀況。
在本申請的實施例中,在試算該補丁參數時,可以考慮以下原則。首先優先處理刪除資料的區塊,空出韌體空間,以利安排後續資料的新增和移動。接著盡可能安排目標位置有空出空間的原始有效數優先據移動,依此遞回。關於移動,具體來說就是複製資料至新位置,再刪除舊位置資料。由於原始有效資料已經存在原有韌體中,所以這個步驟不需要由差分包提供資料,只需要原始有效資料的新舊位址資訊。例如,可在差分包中記錄移動命令,用於指示需移動的每一段原始有效資料的原起始位址,新起始位元元址,及需要移動的資料大小。
在計算該補丁參數中的處理方向、處理順序的程式中,考慮到嵌入式系統升級時是局限在有限的韌體空間中運作,預留越多空間可以提升處理效率,所以原則上演演算法會安排在完成刪除和移動資料的相關處理後,才將新增資料相關的區塊安排在處理順序中。
所述演算原則可以最大化原始有效資料的再利用率,消除資料丟失的問題。然而上述演算原則僅為眾多可能實施方式之一,實際程式的實現並不在本申請中加以限定。此外,在實現的過程可能會遇到許多例外狀況要處理,例如在試算該補丁參數中的處理方向、處理順序的程式中,可能會發生多個待處理區塊中彼此同時有移動、新增、刪除的交叉相關性,形成僵局deadlock的情況。舉例來說,有一種僵局的可能性是A和B要互換位置,但彼此都在等待對方移動,若無協力廠商介入,將永無解除的可能。因此本實施例在遇到類似的僵局的時候,可將衝突位置的資料附加至差分包中,解決交互相關的死結,藉此使補丁順利。
圖5a至5c是本申請的產生差分升級塊的實體說明。理解了補丁參數412,422和432的產生原則後,接下來如圖3步驟313至317所述,開始逐一將新檔案204中的每個子區塊與原檔案202進行差分比對,並將比對結果產生的子差分塊組合成差分包500。
圖5a顯示了由子區塊410產生子差分塊510的實施例。根據補丁參數412,子區塊410是第一個順位被處理。由子區塊410和原檔案202進行差分比對,得到的子差分塊510顯示了在起始位址為A1的地方,需要向右做一個刪除b(b--)和新增c(c++)的動作。然而從全域差分資訊206中可以知道,區塊c的資料已存在於原檔案中,不需要再重複攜帶添加資料。於是這個子差分塊510只需要帶指令,不需要帶資料,就能使原檔案的區塊b更新為c。具體來說,所帶的指令就是刪除b和移動c。子差分塊510的比對判定後就被壓縮進差分包500中。對第1圖中的嵌入式系統110而言,在執行更新的時候,就會依照子差分塊510的描述,在起始位址A1的地方做一個刪除b和移動c的動作。另一方面來說,由於指令明確描述了起始於位址A1的區塊b是被新區塊c覆蓋,因此未必需要先執行刪除的動作,也可以直接覆蓋。本申請的實現方式,可在產生差分包500的時候,透過事先取得的全域差分資訊206判斷起始於位元址A1所需要的區塊c本來就存在於原檔案202中的位址A2至A3,因此在組成子差分塊510時不需要攜帶區塊c的資料,使升級效率更高。
另一方面,如圖3的步驟315所述,在子差分塊510產生後,可進一步將子區塊410的變化更新至原檔案202中,使原檔案202變成更新的原檔案202a。如圖5a所示,其中起始於A1的區塊b變成了c。至於區塊a,原本就沒有改變。至此,原檔案202a和新檔案204中相同的區塊以灰網點表示。
圖5b顯示了由子區塊430產生子差分塊520的實施例。根據補丁參數432,子區塊430是第二個順位被處理的區塊。由子區塊430和原檔案202a進行差分比對,得到的子差分塊520顯示了在起始位址為A6的地方,需要向左做一個刪除f(f--)和新增e(e++)的動作。在起始位元址為A5的地方,需要向左做一個刪除e(e--)和新增d(d++)的動作。然而從全域差分資訊206中可以知道,區塊d和e的資料已存在於原檔案中,不需要再重複攜帶添加資料。於是這個子差分塊510只需要帶指令,不需要帶資料,就能使原檔案的區塊e和f更新為d和e。子差分塊520的比對判定後就被壓縮進差分包500中,附加於子差分塊510之後。對第1圖中的嵌入式系統110而言,在執行更新的時候,就會依照子差分塊520的描述,從右往左,先處理A6再處理A5。先在起始位址A6的地方做一個刪除f的動作,和從位址A4移動e的動作,然後在起始位址A5的地方做一個刪除e的動作,和從位址A3移動d的動作。同圖5a,刪除的動作,可以直接以新資料覆蓋來取代。在圖5b的情況中,區塊d和e僅為移動,而非新增。因此差分包500可以省去攜帶區塊d和e的必要性,使升級效率更高。
另一方面,如圖3的步驟315所述,在520產生後,可進一步將子區塊430的變化更新至原檔案202a中,使原檔案202a變成更新的原檔案202b。如圖5b所示,其中起始於A5的區塊e變成了d,起始於A6的區塊f變成了e。原檔案202b和新檔案204中相同的區塊以灰網點表示,在圖5b的情況可看出,已有三分之二完成更新。
圖5c顯示了由420產生530的實施例。根據補丁參數422,子區塊420是第三個順位被處理的區塊。由子區塊420和原檔案202b進行差分比對,得到的子差分塊530顯示了在起始位址為A2的地方,需要向右做一個刪除c(c--)和新增h(h++)的動作。在起始位元址為A3的地方,需要向右做一個刪除d(d--)和新增i(i++)的動作。從全域差分資訊206可知,區塊h和i都是新添加的資料,必須透過子差分塊530攜帶。於是這個子差分塊530就攜帶了區塊h和i的資料,被壓縮進差分包500中,附加於子差分塊510和520之後。對第1圖中的嵌入式系統110而言,在執行更新的時候,就會依照子差分塊530的描述,在起始位址A2的地方向右做一個刪除c和新增h的動作,然後在起始位址A3的地方往左做一個刪除d和新增i的動作。同圖5a和5b,刪除的動作,可以直接以新資料覆蓋來取代。
另一方面,如圖3的步驟315所述,在子差分塊530產生後,可進一步將子區塊420的內容更新至原檔案202b中,使原檔案202b變成更新的原檔案202c。如圖5c所示,其中起始於A2的區塊c變成了h,起始於A3的區塊d變成了i。原檔案202c和新檔案204中相同的區塊以灰網點表示,在圖5c的情況可看出,全部更新已經完成,差分包500已經準備好可以傳送給圖1的嵌入式系統110進行差分升級。
綜上所述,基於所述演算原則而編寫的計算程式,最後計算出來補丁參數,除了包含每個待更新區塊的起始位置,處理順序,處理方向,也可以包含用於移動原始有效資料的移動命令。在確保不丟失原始有效資料的前提下,產生最佳化的差分包,使硬體能力低的嵌入式系統,可以正確地將韌體中的原檔案以分塊差分的方式還原出新檔案。
在進一步的實施例中,提出一種更新方法,使嵌入式系統應用前述實施例所產生的最佳化的差分包,升級韌體。首先由待升級的嵌入式系統逐一載入該差分包中的每一該差分塊。接著使該韌體以分塊的方式依照對應的該補丁參數而升級。舉例來說,最佳化的差分包中已依照處理順序儲存有多個待升級檔案的子區塊。只要依照處理方向和起始位置逐塊進行差分寫入,就能正確的使韌體升級。詳細的流程與第5a至5c圖中所述更新原檔案202a、202b和202c的程式類似,不再重複說明。本申請所提出的差分包最佳化方法,可將必須攜帶的添加資料降至最低,尤其適合應用於低端硬體規格的電腦系統。
需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包含一系列要素的程式、方法、物品或者裝置不僅包含那些要素,而且還包含沒有明確列出的其他要素,或者是還包含為這種程式、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由陳述句“包含一個……”限定的要素,並不排除在包含該要素的程式、方法、物品或者裝置中還存在另外的相同要素。
上面結合圖式對本申請的實施例進行了描述,但是本申請並不局限於上述的具體實施方式,上述的具體實施方式僅僅是示意性的,而不是限制性的,本領域的普通技術人員在本申請的啟示下,在不脫離本申請宗旨和請求項所保護的範圍情況下,還可做出很多形式,均屬於本申請的保護之內。
100:差分包產生設備
102:處理器
104:記憶體
106:儲存裝置
108:程式
110:嵌入式系統
112:處理器
114:記憶體
116:儲存裝置
118:韌體
120:升級包
202:原檔案
204:新檔案
206:全域差分資訊
301-319:步驟
410:子區塊
420:子區塊
430:子區塊
412:補丁參數
422:補丁參數
432:補丁參數
500:差分包
510:子差分塊
520:子差分塊
530:子差分塊
202a:原檔案
202b:原檔案
202c:原檔案
此處所說明的圖式用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用於解釋本申請,並不構成對本申請的不當限定。在圖式中:
圖1是本申請一實施例的差分包產生設備和嵌入式系統。
圖2是原檔案和新檔案進行全域差分比對的實施例。
圖3是本申請實施例的差分包產生方法的流程圖。
圖4是本申請新檔案切塊及決定補丁參數的實體說明。
圖5a至5c是本申請的產生差分升級塊的實體說明。
301-319:步驟
Claims (10)
- 一種差分包產生方法,應用於一差分包產生設備以產生一差分包,差分包可供一嵌入式系統進行韌體更新,包含:對一原檔案及一新檔案進行差分比對,產生一全域差分資訊,包含該新檔案與該原檔案匹配部份的位址和長度;根據該全域差分資訊,將該新檔案分割成多個子區塊,並決定該等子區塊對應的多個補丁參數,其中,該全域差分資訊包括該原檔案和該新檔案之間的匹配狀況;根據該等補丁參數,將每個該子區塊與該原檔案進行差分比對,產生對應每一該子區塊的多個差分塊;以及整合該等差分塊,產生該差分包,使該嵌入式系統以分塊的方式順序讀取該差分包中的差分塊以更新韌體;其中,一個補丁參數包含用於處理對應的一個子區塊的一差分起始位置、一處理順序及一處理方向。
- 如請求項1所述的差分包產生方法,進一步包含:若該新檔案與該原檔案的大小不同,在將該新檔案分割之前,將該原檔案及該新檔案中相對小的檔案結尾部補上固定資料,使該原檔案及該新檔案等長。
- 如請求項1所述的差分包產生方法,進一步包含:將每個子區塊與該原檔案進行差分比對時,如果一子區塊的比對結果一致,則標記該子區塊為無需更新;及如果該子區塊的比對結果不一致,則標記該子區塊為待更新區塊。
- 如請求項1所述的差分包產生方法,其中在決定該補丁參數時,根據該原檔案中需被新增、刪除和保留的部份決定該子區塊的處理順序和處理方向。
- 如請求項1所述的差分包產生方法,其中根據該補丁參數,將該子區塊與該原檔案進行差分比對時,包含:根據該子區塊的處理順序和處理方向,產生從該子區塊的差分起始位置起算的一差分塊。
- 如請求項5所述的差分包產生方法,在整合該等差分塊,產生該差分包時,包含:依照每一子區塊的處理順序,將每個子區塊對應產生的差分塊壓縮並合併,形成該差分包。
- 如請求項1所述的差分包產生方法,從一子區塊產生對應的一差分塊後,將該子區塊更新至該原檔案的對應位置;及當該原檔案被更新至與該新檔案完全一致時,判定該差分包產生完成。
- 一種差分包產生設備,用於產生一差分包,使一嵌入式系統以分塊的方式讀取該差分包,將該嵌入式系統中的一韌體中的一原檔案升級為一新檔案,該差分包產生設備包含:一儲存裝置,存有一程式,用於執行如請求項1至7中的任一項所述的差分包產生方法;一記憶體,連接所述儲存裝置,用於載入所述程式;以及一處理器,連接該記憶體和儲存裝置,用於執行所述程式,以產生該差分包。
- 一種更新方法,係用於一嵌入式系統的韌體更新,包含: 接收如請求項1至7中的任一項所述的一差分包;及逐一載入該差分包中的該等差分塊,每一差分塊包含對應的補丁參數;使該韌體分為多個子區塊,依照對應的該補丁參數而升級;其中該補丁參數包含用於處理每一子區塊的起始位置,處理順序,以及處理方向。
- 一種嵌入式系統,包含:一儲存裝置,存有一韌體;一記憶體,用於接收並暫存如請求項1至7中的任一項所述的一差分包;一處理器,連接該記憶體和儲存裝置;其中:該處理器逐一載入該差分包中的該等差分塊,每一差分塊包含對應的補丁參數,其中該補丁參數包含用於處理每一子區塊的起始位置,處理順序,以及處理方向;以及該處理器使該韌體分為多個子區塊,依照對應的該補丁參數進行韌體更新。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111001554.X | 2021-08-30 | ||
CN202111001554.XA CN113721967B (zh) | 2021-08-30 | 2021-08-30 | 差分包生成方法,差分包生成设备,及升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI775616B true TWI775616B (zh) | 2022-08-21 |
TW202309741A TW202309741A (zh) | 2023-03-01 |
Family
ID=78678923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110135671A TWI775616B (zh) | 2021-08-30 | 2021-09-24 | 差分包產生方法,差分包產生設備,更新方法,及嵌入式系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230067872A1 (zh) |
CN (1) | CN113721967B (zh) |
TW (1) | TWI775616B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114567628B (zh) * | 2022-02-28 | 2024-03-08 | 中汽创智科技有限公司 | 一种ota升级方法和装置 |
CN116028095B (zh) * | 2022-06-30 | 2023-11-10 | 荣耀终端有限公司 | 差分文件的生成方法、还原方法及电子设备 |
CN116700739A (zh) * | 2022-09-21 | 2023-09-05 | 荣耀终端有限公司 | 差分升级方法、装置、电子设备及可读存储介质 |
CN116360836B (zh) * | 2023-05-30 | 2023-09-05 | 杭州华塑科技股份有限公司 | 数据更新方法、装置、存储介质和电子设备 |
CN118227186A (zh) * | 2024-05-27 | 2024-06-21 | 杭州海康威视数字技术股份有限公司 | 差分升级方法、装置、设备、存储介质及程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676506B2 (en) * | 2003-06-20 | 2010-03-09 | Innopath Software, Inc. | Differential file compression of software image versions |
US8554748B1 (en) * | 2005-11-30 | 2013-10-08 | Netapp, Inc. | Method and apparatus for differential file based update for embedded systems |
CN106648765A (zh) * | 2016-12-07 | 2017-05-10 | 京信通信***(中国)有限公司 | 嵌入式设备固件补丁包生成及固件差分升级方法和装置 |
CN111596945A (zh) * | 2020-04-03 | 2020-08-28 | 红石阳光(北京)科技股份有限公司 | 嵌入式***动态多分区固件的差分升级方法 |
CN112328293A (zh) * | 2020-11-05 | 2021-02-05 | 歌尔科技有限公司 | 一种嵌入式设备的差分升级方法及相关组件 |
TWI721003B (zh) * | 2015-09-17 | 2021-03-11 | 美商英特爾公司 | 記憶體裝置及用於記憶體管理的系統 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6952823B2 (en) * | 1998-09-01 | 2005-10-04 | Pkware, Inc. | Software patch generator using compression techniques |
US20040031027A1 (en) * | 2002-08-08 | 2004-02-12 | Hiltgen Daniel K. | System for updating diverse file versions |
RU2388045C2 (ru) * | 2006-06-19 | 2010-04-27 | Самсунг Электроникс Ко., Лтд. | Система и способ обновления программы для переносного устройства с поддержкой ота |
US8438558B1 (en) * | 2009-03-27 | 2013-05-07 | Google Inc. | System and method of updating programs and data |
US9418072B2 (en) * | 2013-03-04 | 2016-08-16 | Vmware, Inc. | Cross-file differential content synchronization |
CN104932909A (zh) * | 2014-03-17 | 2015-09-23 | 中兴通讯股份有限公司 | 一种终端软件升级方法及装置 |
US10481901B2 (en) * | 2017-04-24 | 2019-11-19 | Amzetta Technologies, Llc | System and method for performing firmware update by patching |
CN107273159A (zh) * | 2017-06-08 | 2017-10-20 | 深圳市华信天线技术有限公司 | 适于嵌入式***的差量式补丁升级方法及装置 |
CN108170460B (zh) * | 2017-12-15 | 2020-12-11 | 杭州中天微***有限公司 | 一种嵌入式***增量升级的方法及装置 |
CN108228224B (zh) * | 2017-12-21 | 2021-11-30 | 杭州中天微***有限公司 | 一种嵌入式***差分升级的方法及装置 |
CN109992292A (zh) * | 2018-01-03 | 2019-07-09 | 上海艾拉比智能科技有限公司 | 一种基于块回写的自适应双向差分算法 |
US10509642B2 (en) * | 2018-03-30 | 2019-12-17 | International Business Machines Corporation | Intelligent discovery and application of API changes for application migration |
KR102324263B1 (ko) * | 2018-09-12 | 2021-11-08 | 주식회사 엘지에너지솔루션 | 비휘발성 메모리 업데이트 장치 및 방법 |
EP3647944A1 (en) * | 2018-10-30 | 2020-05-06 | Shenzhen Goodix Technology Co., Ltd. | Memory optimized block-based differential update algorithm |
CN109542497A (zh) * | 2018-11-26 | 2019-03-29 | 上海艾拉比智能科技有限公司 | 一种小内存设备***升级的差分算法 |
CN110837393A (zh) * | 2019-11-14 | 2020-02-25 | 北京知道创宇信息技术股份有限公司 | 一种固件差分升级包的制作方法及装置、可读存储介质 |
CN112579141A (zh) * | 2020-12-23 | 2021-03-30 | 华立科技股份有限公司 | 一种嵌入式***的固件更新方法、装置、设备及存储介质 |
-
2021
- 2021-08-30 CN CN202111001554.XA patent/CN113721967B/zh active Active
- 2021-09-24 TW TW110135671A patent/TWI775616B/zh active
- 2021-12-28 US US17/563,256 patent/US20230067872A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676506B2 (en) * | 2003-06-20 | 2010-03-09 | Innopath Software, Inc. | Differential file compression of software image versions |
US8554748B1 (en) * | 2005-11-30 | 2013-10-08 | Netapp, Inc. | Method and apparatus for differential file based update for embedded systems |
TWI721003B (zh) * | 2015-09-17 | 2021-03-11 | 美商英特爾公司 | 記憶體裝置及用於記憶體管理的系統 |
CN106648765A (zh) * | 2016-12-07 | 2017-05-10 | 京信通信***(中国)有限公司 | 嵌入式设备固件补丁包生成及固件差分升级方法和装置 |
CN111596945A (zh) * | 2020-04-03 | 2020-08-28 | 红石阳光(北京)科技股份有限公司 | 嵌入式***动态多分区固件的差分升级方法 |
CN112328293A (zh) * | 2020-11-05 | 2021-02-05 | 歌尔科技有限公司 | 一种嵌入式设备的差分升级方法及相关组件 |
Also Published As
Publication number | Publication date |
---|---|
US20230067872A1 (en) | 2023-03-02 |
TW202309741A (zh) | 2023-03-01 |
CN113721967A (zh) | 2021-11-30 |
CN113721967B (zh) | 2024-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI775616B (zh) | 差分包產生方法,差分包產生設備,更新方法,及嵌入式系統 | |
US20210124573A1 (en) | Firmware upgrade method and apparatus, and terminal | |
JP6309103B2 (ja) | スナップショットおよびクローンの複製 | |
JP5342302B2 (ja) | ファームウェア更新システム、ファームウェア配信サーバ、及びプログラム | |
JP4825433B2 (ja) | 比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム | |
JP2016535380A (ja) | 順方向専用にページ化されたデータストレージ管理 | |
KR20060069361A (ko) | 저장기기에 저장된 콘텐츠의 버전을 갱신하는 방법 및시스템 | |
US20160132322A1 (en) | Method and system for updating firmware | |
CN113138945B (zh) | 一种数据缓存方法、装置、设备及介质 | |
CN110489150A (zh) | 一种虚拟机热升级方法、装置及其相关设备 | |
CN107203331A (zh) | 写数据的方法及装置 | |
US20080320062A1 (en) | Method of transferring file system, file system transference program, and file system transference device | |
US8180985B2 (en) | Storage switch, storage system, and data copying method using bitmaps representing different sized regions | |
CN103229150B (zh) | 数据控制方法及*** | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN111309424A (zh) | 一种页面还原方法及相关设备 | |
CN110941511B (zh) | 一种快照合并方法、装置、设备及存储介质 | |
CN105677579A (zh) | 缓存***中的数据访问方法和*** | |
US20200333970A1 (en) | Data de-duplication | |
WO2018014801A1 (zh) | 镜像文件的处理 | |
KR20190069134A (ko) | 응용 프로그램간 파일 공유 장치 및 방법 | |
JP2004206353A (ja) | ソフトウェアのインストール方法 | |
JP6506050B2 (ja) | 端末電子機器 | |
CN113553090B (zh) | 客户端应用程序的更新控制方法及装置 | |
KR20190056087A (ko) | 블록 삭제시의 데이터 입출력을 최소화하는 파일 관리 구조 제어 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |