TW202338599A - 用於更新韌體的方法及資料結構產品 - Google Patents
用於更新韌體的方法及資料結構產品 Download PDFInfo
- Publication number
- TW202338599A TW202338599A TW111111868A TW111111868A TW202338599A TW 202338599 A TW202338599 A TW 202338599A TW 111111868 A TW111111868 A TW 111111868A TW 111111868 A TW111111868 A TW 111111868A TW 202338599 A TW202338599 A TW 202338599A
- Authority
- TW
- Taiwan
- Prior art keywords
- segment
- segments
- firmware
- block
- storage area
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000004044 response Effects 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 8
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 2
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一種用於更新目標裝置的韌體之方法,包含:於第一電子裝置,將韌體切分為複數個節段,再將該等節段分配為複數個區塊段;於第一電子裝置,藉由產生對應於該等區塊段的一系列區塊,並建立區塊與其前一區塊之間的鏈結,以產生韌體鏈,並將區塊段發佈到韌體鏈上;於目標裝置,從韌體鏈上取得該等節段,將該等節段更新至目標裝置的第一儲存區。
Description
本發明涉及韌體更新技術,特別涉及一種用於更新韌體的方法及資料結構產品。
第1圖繪示現行的線上韌體更新機制100之架構圖。如第1圖所示,現行的線上韌體更新機制100是由韌體開發者於開發端裝置101將開發完成的韌體上傳及/或發佈至伺服器102,以供各地的本地端裝置(例如第1圖中的本地端裝置103、本地端裝置104及本地端裝置105)透過網路下載該韌體。這種中心化的機制,會面臨網路安全性及穩定性的問題。舉例來說,當眾多本地端裝置同時進行韌體更新時,網路頻寬可能較吃緊,進而影響下載速度及穩定性。此外,一旦伺服器(例如第1圖中的伺服器102)故障或者受到網路攻擊,則會導致所有本地端裝置(例如第1圖中的本地端裝置103、本地端裝置104及本地端裝置105)皆無法進行韌體更新。更有甚者,網路穩定性的缺乏又可能造成韌體更新中斷,而必須不斷重新執行更新作業,導致電力消耗的增加。對於某些電池供電式裝置而言,其生命週期高度仰賴電池的使用時間。因此,長時間的韌體更新恐會嚴重影響到產品的壽命。
有鑑於上述問題,需要一種用於更新韌體的方法及資料結構產品,以解決現行的線上韌體更新機制的問題。
本揭露提供一種用於更新目標裝置的韌體之方法,包含:於第一電子裝置,將韌體切分為複數個節段,再將該等節段分配為複數個區塊段,該等區塊段的每一者包含一或多個節段及其對應的一或多筆節段元資料;於第一電子裝置,藉由產生對應於該等區塊段的一系列區塊,並建立區塊與其前一區塊之間的鏈結,以產生韌體鏈,並將區塊段發佈到韌體鏈上,其中區塊包含其中一區塊段及其對應的區塊元資料;於目標裝置,從韌體鏈上取得該等節段,將該等節段更新至目標裝置的第一儲存區。
在某些實施例中,上述方法更包含:於第一電子裝置,藉由對新版韌體與韌體進行比較,產生新區塊段,新區塊段包含一或多個更新節段及其對應的一或多個節段元資料;於第一電子裝置,藉由產生對應於新區塊段的新區塊,並建立新區塊與韌體鏈上的最末一區塊之間的鏈結,以將新區塊加入韌體鏈,並將新區塊段發佈到韌體鏈上,其中新區塊包含新區塊段及其對應的區塊元資料;於目標裝置,根據從新區塊發佈後的韌體鏈上取得的所有節段元資料,識別出新區塊發佈後的韌體鏈上的更新節段,將更新節段從韌體鏈上更新至目標裝置的第二儲存區,以及將所有節段中除了更新節段之外的其他節段從第一儲存區更新至該第二儲存區。
在某些實施例中,每一節段元資料包含其對應節段的節段編號及第一節段雜湊值。
在某些實施例中,根據從新區塊發佈後的韌體鏈上取得的所有節段元資料,識別出韌體鏈上的更新節段,包含:計算第一儲存區中的每一節段的第二節段雜湊值;對於每個節段編號所對應的節段,對於每個節段編號所對應的節段,將從韌體鏈上所取得該節段的第一節段雜湊值,與該節段的第二節段雜湊值進行比較;將韌體鏈上,具有不同的第一節段雜湊值與第二節段雜湊值的節段,判定為更新節段。
在某些實施例中,更新節段是對韌體的其中一節段進行修改所產生,或者是相對於韌體的節段所新增。
在某些實施例中,更包含:於目標裝置,響應於節段被更新至目標裝置的第一儲存區,將第一儲存區設置為作用中(active)狀態,以及將第二儲存區設置為非作用中(inactive)狀態;以及於目標裝置,響應於更新節段被更新至目標裝置的第二儲存區,以及所有節段中除了更新節段之外的其他節段被從第一儲存區更新至第二儲存區,將第一儲存區設置為非作用中狀態,以及將第二儲存區設置為作用中狀態。
在某些實施例中,節段元資料包含其對應節段的節段偏移、節段起始位址及節段結束位址。
在某些實施例中,區塊元資料包含其對應區塊的前一區塊的區塊雜湊值。
在某些實施例中,區塊元資料更包含共識機制運算資訊。
在某些實施例中,韌體鏈是儲存在含有複數個第二電子裝置的分散式網路架構中。
本揭露提供一種用於更新目標裝置的韌體之資料結構產品,包含韌體鏈,韌體鏈包含一系列區塊,及其中的區塊與前一區塊之間的鏈結。區塊包含其中一區塊段,及對應於區塊段的區塊元資料。每一區塊段包含韌體的一或多個節段,及其對應的一或多筆節段元資料。目標裝置從韌體鏈上取得韌體之節段,將節段更新至目標裝置的第一儲存區。
在某些實施例中,韌體鏈更包含新區塊,新區塊包含新區塊段及其對應的區塊元資料。新區塊段是藉由對新版韌體與韌體進行比較所產生。目標裝置根據從新區塊發佈後的韌體鏈上取得的所有節段元資料,識別出新區塊發佈後的韌體鏈上的更新節段,將更新節段更新至目標裝置的第二儲存區,以及將所有節段中除了更新節段之外的其他節段從第一儲存區更新至第二儲存區。
本揭露所提供用於更新韌體的方法及資料結構產品,採用韌體節段化、韌體鏈資料結構及雙區儲存等機制,可實現線上韌體更新的去中心化,避免中心化的線上韌體更新機制的網路安全性、穩定性及高耗電等問題。
以下敘述列舉本發明的多種實施例,但並非意圖限制本發明內容。實際的發明範圍,是由申請專利範圍所界定。
在以下所列舉的各實施例中,將以相同的標號代表相同或相似的元件或組件。
在本說明書中以及申請專利範圍中的序號,例如「第一」、「第二」等等,僅係為了方便說明,彼此之間並沒有順序上的先後關係。
第2圖是根據本發明之實施例所繪示一種去中心化的線上韌體更新機制200之架構圖。如第2圖所示,線上韌體更新機制200是由韌體開發者於開發端裝置201將開發完成的韌體上傳及/或發佈至含有多個互相連接的節點(或伺服器)的分散式網路架構102,以供各地的本地端裝置(例如第2圖中的本地端裝置203、本地端裝置204及本地端裝置205)透過網路下載該韌體。去中心化的線上韌體更新機制200,可避免前述中心化的線上韌體更新機制100的網路安全性、穩定性及高耗電等問題。
大體而言,本發明之實施例可包含韌體節段化、韌體鏈資料結構及雙區(dual bank)儲存等機制,以實現線上韌體更新的去中心化,並且確保韌體資料不可被竄改。韌體節段化是關於將韌體切分為固定大小的節段,以及更新節段的產生。韌體鏈資料結構是關於韌體發佈於網路端時,所採用類似於區塊鏈的資料結構。雙區儲存是關於本地端裝置使用兩個儲存區交替地儲存最新韌體,以及判斷韌體的每一節段應從本地端的某一儲存區或從網路端的韌體鏈所取得。
第3圖是根據本發明之實施例所繪示一種用於更新初版韌體的方法300之流程圖。如第3圖所示,方法300包含操作301-303。
於操作301,於第一電子裝置,將韌體切分為複數個節段,再將該等節段分配為複數個區塊段。每個區塊段包含一或多個節段,及分別對應於這些節段的節段元資料。然後,進入操作302。
此處所述第一電子裝置,是指韌體開發者進行韌體的程式設計時所使用的裝置,例如第2圖中的開發端裝置201。第一電子裝置通常可包含處理器及儲存媒體。處理器可以是任何一種用於執行指令的裝置,例如中央處理器(CPU)、微處理器(microprocessor)、控制器、微控制器(microcontroller)或狀態機(state machine)。儲存媒體可以是隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、電子抹除式可複寫唯讀記憶體(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快閃記憶體或其它記憶體技術、唯讀記憶光碟(Compact Disc Read-Only Memory, CD-ROM)、數位多功能光碟(Digital Versatile Disc,DVD)或其它光碟儲存裝置、磁片、磁碟或其它磁儲存裝置,或可用於儲存所需的資訊並且可被處理器存取的其它任何儲存媒體。
第4A圖是根據本發明之實施例所繪示第3圖中的操作301的範例之示意圖。如第4A圖所示,於操作301,韌體401被切分為節段#1、截段#2、節段#3…節段#M等M個節段402,每個節段具有相同的大小(例如4B,但本發明並不限定於此);M個節段402又被分配為N個區塊段403。在第4A圖的範例中,節段#1、節段#2、節段#3與節段#4被分給區塊段#1。
第4B圖展示第4A圖中的區塊段#1的範例之示意圖。如第4B圖所示,區塊段#1包含節段#1、節段#2、節段#3與節段#4,以及分別對應於節段#1、節段#2、節段#3與節段#4的節段元資料411-414。
在某些實施例中,節段元資料(例如第4B圖中的節段元資料411-414)包含其對應節段(例如第4B圖中的節段#1、節段#2、節段#3與節段#4)的節段編號及節段雜湊(Hash)值。節段編號是用以作為該節段的識別符(ID)。節段雜湊值是透過特定的函式/演算法(稱為雜湊函式/演算法)對節段進行編碼所產生的數值,作為節段的指紋,用以確認節段的資料是否有被修改。雜湊函式/演算法可以是SHA系列(例如SHA0、SHA1、SHA256、SHA512、SHA3)、MD系列(例如MD2、MD4、MD5)、BLAKE系列(例如BLAKE、BLAKE2),或者其他雜湊函式/演算法,本發明並不限定於此。
在某些實施例中,節段元資料(例如第4B圖中的節段元資料411-414)更包含節段偏移、節段起始位址及節段結束位址。節段偏移是用以指示該節段在韌體鏈上的偏移位置。節段起始位址及節段結束位址是用以標記節段在記憶體中的實際位置。這種設計,有利於在循序的區塊鏈中描述新增的韌體變化。
回到第3圖,於操作302,於第一電子裝置,藉由產生對應於該等區塊段的一系列區塊,並建立各區塊與其前一區塊之間的鏈結,以產生韌體鏈並將該等區塊段發佈到韌體鏈上。其中區塊包含其中一區塊段,及對應於該區塊段的區塊元資料。然後,進入操作303。
第5圖是根據本發明之實施例所繪示於第3圖中的操作302所產生的韌體鏈500的範例之示意圖。如第5圖所示,韌體鏈500包含一系列區塊(即區塊#1、區塊#2…區塊#N),分別對應第4A圖中的N個區塊段403(即區塊段#1、區塊段#2…區塊段#N)。每一區塊包含其對應的區塊段,及對應於該區塊段的區塊元資料(例如區塊#1包含區塊段#1及區塊段#1的區塊元資料511、區塊#2包含區塊段#2及區塊段#2的區塊元資料512、區塊#N包含區塊段#N及區塊段#N的區塊元資料513)。除了區塊#1之外的其他各區塊,與其前一區塊之間存在鏈結,例如區塊#2與其前一區塊(即區塊#1)之間的存在鏈結501。鏈結是指向下一個區塊的指標(pointer),例如鏈結501是指向區塊#2的指標。
在某些實施例中,區塊元資料包含其對應區塊的前一區塊的區塊雜湊值,以確保資料不可竄改。例如區塊元資料512包含區塊#2的前一區塊(即區塊#1)的區塊雜湊值。區塊雜湊值是透過特定的函式/演算法(稱為雜湊函式/演算法)對區塊進行編碼所產生的數值,作為區塊的指紋,用以確認節段的資料是否有被修改。雜湊函式/演算法可以是SHA系列(例如SHA0、SHA1、SHA256、SHA512、SHA3)、MD系列(例如MD2、MD4、MD5)、BLAKE系列(例如BLAKE、BLAKE2),或者其他雜湊函式/演算法,本發明並不限定於此。
在某些實施例中,區塊元資料可更包含共識機制運算資訊,例如該區塊所對應工作量證明(Proof-of-Work;PoW)演算法的難度目標,以及用於工作量證明演算法的窮舉猜測值(Nonce)參數,又或者是其他共識機制演算法(如持有量證明(Proof-of-Stake;PoS)、股份授權證明(Delegated-Proof-of-Stake;DPoS)、容量證明(Proof-of-Capacity;PoC)…等)所需之參數。
在某些實施例中,韌體鏈500是儲存在含有複數個節點(或伺服器)的分散式網路架構中,例如第2圖中所示的分散式網路架構202。分散式網路架構可經由網路連接至前述第一電子裝置,使得韌體開發者得以將韌體鏈500上傳至分散式網路架構中的節點(或伺服器)。各節點(或伺服器)通常可包含處理器及儲存媒體。處理器可以是任何一種用於執行指令的裝置,例如中央處理器(CPU)、微處理器(microprocessor)、控制器、微控制器(microcontroller)或狀態機(state machine)。儲存媒體可以是隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、電子抹除式可複寫唯讀記憶體(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快閃記憶體或其它記憶體技術、唯讀記憶光碟(Compact Disc Read-Only Memory, CD-ROM)、數位多功能光碟(Digital Versatile Disc,DVD)或其它光碟儲存裝置、磁片、磁碟或其它磁儲存裝置,或可用於儲存所需的資訊並且可被處理器存取的其它任何儲存媒體。
回到第3圖,於操作303,於目標裝置,從韌體鏈上取得該等節段,將該等節段更新至目標裝置的第一儲存區。
此處所述目標裝置,是指儲存並運行韌體的本地端裝置,例如第2圖中所示的本地端裝置203-205。類似於第一電子裝置,目標裝置通常可包含處理器及儲存媒體。處理器可以是任何一種用於執行指令的裝置,例如中央處理器(CPU)、微處理器(microprocessor)、控制器、微控制器(microcontroller)或狀態機(state machine)。儲存媒體可以是隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、電子抹除式可複寫唯讀記憶體(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、快閃記憶體或其它記憶體技術、唯讀記憶光碟(Compact Disc Read-Only Memory, CD-ROM)、數位多功能光碟(Digital Versatile Disc,DVD)或其它光碟儲存裝置、磁片、磁碟或其它磁儲存裝置,或可用於儲存所需的資訊並且可被處理器存取的其它任何儲存媒體。第一儲存區,以及下文中將述及的第二儲存區,皆為該儲存媒體所提供儲存空間的一部分。
在一實施例中,目標裝置(例如第2圖中的本地端裝置203-205)可透過網路與儲存韌體鏈(例如第5圖中的韌體鏈500)的分散式網路架構(例如第2圖中的分散式網路架構202)通訊,以從韌體鏈上取得韌體的節段(例如第4A圖中的M個節段402)。網路可以是,例如區域網路、廣域網路、虛擬私人網路、網際網路、內部網路(intranet)、商際網路(extranet )、公用交換電話網路、紅外線網路、無線網路及其任何組合。
第6圖是根據本發明之實施例所繪示一種用於更新非初版韌體的方法600之流程圖。如第6圖所示,方法600包含操作601-603。
於操作601,於第一電子裝置,藉由對新版韌體與已發布韌體進行比較,產生新區塊段,新區塊段包含一或多個更新節段其對應的節段元資料。然後,進入操作602。
在某些實施例中,更新節段可包含新版韌體相對於已發佈韌體而言有修改或新增的節段。換句話說,更新節段是對已發佈韌體的其中一節段進行修改所產生,或者是相對於已發佈韌體的所有節段所新增。
第7A圖是根據本發明之實施例所繪示第6圖中的操作601的範例之示意圖。在第7A圖所示範例中,更新節段701(即新版韌體的M+1個節段700當中的節段#3)是對第4圖中的韌體401之M個節段402中的節段#3進行修改所產生,而更新節段702(即節段#M+1)則是相對於M個節段402所新增。至於其他節段(即節段#1、節段#2、節段#4、節段#5…節段#M),則維持不變。更新節段701及更新節段702用以形成新區塊段703(即區塊段#N+1)。
第7B圖展示第7A圖中的新區塊段703的範例之示意圖。如第7B圖所示,新區塊段703(即區塊段#N+1)包含更新節段701及其對應的節段元資料711,以及更新節段702及其對應的節段元資料712。
回到第6圖,於操作602,於第一電子裝置,藉由產生對應於新區塊段的新區塊,並建立新區塊與韌體鏈上的最末一區塊之間的鏈結,以將新區塊加入韌體鏈,並將新區塊段發佈到韌體鏈上,其中新區塊包含新區塊段及其對應的區塊元資料。然後,進入操作603。
第8圖是根據本發明之實施例所繪示於第6圖中的操作602將新區塊801加入第5圖中的韌體鏈500後所產生的韌體鏈800的範例之示意圖。如第8圖所示,韌體鏈800包含新區塊801(即區塊#N+1),以及新區塊801與其前一區塊(即韌體鏈500中的區塊#N)之間的鏈結802,鏈結802是指向新區塊801(即區塊#N+1)的指標。新區塊801(即區塊#N+1)包含第7A圖及第7B圖中的新區塊段703(即區塊段#N+1)及其對應的區塊元資料803。
如前所述,在某些實施例中,區塊元資料803可包含新區塊801(即區塊#N+1)的前一區塊(即韌體鏈500中的區塊#N)的區塊雜湊值。在某些實施例中,區塊元資料803可更包含共識機制運算資訊,例如該區塊所對應工作量證明演算法的難度目標,以及用於工作量證明演算法的窮舉猜測值參數。在某些實施例中,韌體鏈800是儲存在含有複數個節點(或伺服器)的分散式網路架構中,例如第2圖中所示的分散式網路架構202。
回到第6圖,於操作603,於目標裝置,根據從新區塊發佈後的韌體鏈上取得的所有節段元資料,識別出新區塊發佈後的韌體鏈上的更新節段,將這些更新節段從韌體鏈上更新至目標裝置的第二儲存區,以及將所有節段中除了更新節段之外的其他節段從第一儲存區更新到第二儲存區。
第9圖是根據本發明之實施例所繪示於第6圖中的操作603識別更新節段的方法900之流程圖。如第9圖所示,方法900可包含步驟901-903。
於步驟901,計算第一儲存區中的韌體的節段之第二節段雜湊值。然後,進入步驟902。
於步驟902,對於每個節段編號所對應的節段,將從韌體鏈上所取得該節段的第一節段雜湊值,與該節段的第二節段雜湊值進行比較。然後,進入步驟903。
於步驟903,將韌體鏈上,具有不同的第一節段雜湊值與第二節段雜湊值的節段,判定為更新節段。
在上述範例中,目前儲存於第一儲存區的節段#3是第4A圖及第7A圖中的M個節段402當中的節段#3,不同於韌體鏈800上的M+1個節段700當中的節段#3。因此,節段#3的第一節段雜湊值與第二節段雜湊值不同,目標裝置會將節段#3判定為更新節段。同理,由於第一儲存區中並不存在節段#M+1,節段#M+1的第一節段雜湊值與第二節段雜湊值不同,目標裝置會將節段#M+1判定為更新節段。
第10圖是根據本發明之實施例所繪示於第6圖中的操作603的範例之示意圖。在本範例中,是假設目標裝置1000已識別出更新節段701(即節段#3)及更新節段702(即節段#M+1)。如第10圖所示,目標裝置會將更新節段701(即節段#3)及更新節段702(即節段#M+1)從韌體鏈800上更新至第二儲存區1002,以及將其他節段(即節段#1、節段#2、節段#4、節段#5…節段#M)從第一儲存區1001更新至第二儲存區1002。應注意的是,雖然在第10圖中,更新節段701(即節段#3)是繪製於節段#2與節段#4之間,更新節段702(即節段#M+1)是繪製於節段#M+1之後,但本發明並不限定更新節段在第二儲存區1002中的位置。舉例來說,更新節段701(即節段#3)及更新節段702(即節段#M+1)可以都在節段#2與節段#4之間,或者可以都在節段#M+1之後。
在某些實施例中,響應於韌體之節段被更新至目標裝置的第一儲存區,目標裝置會將第一儲存區設置為作用中(active)狀態,而將第二儲存區設置為非作用中(inactive)狀態。反之,響應於韌體之更新節段被更新至目標裝置的第二儲存區,以及其他節段被從第一儲存區更新至第二儲存區,目標裝置會將第二儲存區設置為作用中狀態,而將第一儲存區設置為非作用中狀態。當目標裝置執行韌體時,會載入作用中狀態的儲存區中的韌體之節段。
本揭露亦提供一種用於更新韌體的資料結構產品,包含上文中敘述的韌體鏈,例如第5圖中的韌體鏈500及第8圖中的韌體鏈800。
本揭露所提供用於更新韌體的方法及資料結構產品,採用韌體節段化、韌體鏈資料結構及雙區儲存等機制,可實現線上韌體更新的去中心化,避免中心化的線上韌體更新機制的網路安全性、穩定性及高耗電等問題。
以上段落採用多種態樣作敘述。顯然地,本文之教示可以多種方式實現,而在範例中所揭露之任何特定架構或功能僅是一種代表性的情況。根據本文之教示,任何熟知此技藝之人士應理解,可獨立實作本文所揭露之各個態樣,或者合併實作兩種以上之態樣。
雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露,任何熟習此技藝者,在不脫離本揭露之精神和範圍內,當可作些許之更動與潤飾,因此發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:線上韌體更新機制
101:開發端裝置
102:伺服器
103-105:本地端裝置
200:線上韌體更新機制
201:開發端裝置
202:分散式網路架構
203-205:本地端裝置
300:方法
301-303:操作
401:韌體
402:M個節段
403:N個區塊段
411-414:節段元資料
500:韌體鏈
501:鏈結
511-513:區塊元資料
600:方法
601-603:操作
700:M+1個節段
701-702:更新節段
703:新區塊段
711-712:節段元資料
800:韌體鏈
801:新區塊
802:鏈結
803:區塊元資料
900:方法
901-903:步驟
1000:目標裝置
1001:第一儲存區
1002:第二儲存區
本揭露將可從以下示範的實施例之敘述搭配附帶的圖式更佳地理解。此外,應被理解的係,在本揭露之流程圖中,各區塊的執行順序可被改變,且/或某些區塊可被改變、刪減或合併。第1圖繪示現行的線上韌體更新機制之架構圖。
第2圖是根據本發明之實施例所繪示一種去中心化的線上韌體更新機制之架構圖。
第3圖是根據本發明之實施例所繪示一種用於更新初版韌體的方法之流程圖。
第4A圖是根據本發明之實施例所繪示韌體節段化操作的範例之示意圖。
第4B圖展示區塊段的範例之示意圖。
第5圖是根據本發明之實施例所繪示韌體鏈的範例之示意圖。
第6圖是根據本發明之實施例所繪示一種用於更新非初版韌體的方法之流程圖。
第7A圖是根據本發明之實施例所繪示產生新區塊段之操作的範例之示意圖。
第7B圖展示新區塊段的範例之示意圖。
第8圖是根據本發明之實施例所繪示加入新區塊後的韌體鏈的範例之示意圖。
第9圖是根據本發明之實施例所繪示識別更新節段的方法之流程圖。
第10圖是根據本發明之實施例所繪示從韌體鏈取得更新節段而從本地端的某一儲存區取得其他節段之操作的範例之示意圖。
300:方法
301-303:操作
Claims (12)
- 一種用於更新一目標裝置的一韌體之方法,包括: 於一第一電子裝置,將該韌體切分為複數個節段,再將該等節段分配為複數個區塊段,該等區塊段的每一者包括該等節段中的一或多者及對應於該一或多個節段的一或多筆節段元資料; 於該第一電子裝置,藉由產生對應於該等區塊段的一系列區塊,並建立該系列區塊中的一區塊與該區塊的前一區塊之間的一鏈結,以產生一韌體鏈,並將該等區塊段發佈到該韌體鏈上,其中該區塊包括該等區塊段的其中一者及對應於該區塊段的一區塊元資料;以及 於該目標裝置,從該韌體鏈上取得該等節段,將該等節段更新至該目標裝置的一第一儲存區。
- 如請求項1之方法,更包括: 於該第一電子裝置,藉由對一新版韌體與該韌體進行比較,產生一新區塊段,該新區塊段包括一或多個更新節段及對應於該一或多個更新節段的一或多個該節段元資料; 於該第一電子裝置,藉由產生對應於該新區塊段的一新區塊,並建立該新區塊與該韌體鏈上的最末一區塊之間的該鏈結,以將該新區塊加入該韌體鏈,並將該新區塊段發佈到該韌體鏈上,其中該新區塊包括該新區塊段及對應於該新區塊段的該區塊元資料;以及 於該目標裝置,根據從新區塊發佈後的該韌體鏈上取得的所有節段元資料,識別出新區塊發佈後的該韌體鏈上的該一或多個更新節段,將該一或多個更新節段從該韌體鏈上更新至該目標裝置的一第二儲存區,以及將該所有節段中除了該一或多個更新節段之外的其他節段從該第一儲存區更新至該第二儲存區。
- 如請求項2之方法,其中該等節段元資料的每一者,包括對應於該節段元資料的該節段的一節段編號及一第一節段雜湊值。
- 如請求項3之方法,其中根據從新區塊發佈後的該韌體鏈上取得的該所有節段元資料,識別出該韌體鏈上的該一或多個更新節段,包括: 計算該第一儲存區中的該等節段的每一者的一第二節段雜湊值; 對於該等節段編號的每一者所對應的該節段,將從該韌體鏈上所取得該節段的該第一節段雜湊值,與該節段的該第二節段雜湊值進行比較;以及 將該韌體鏈上,具有不同的該第一節段雜湊值與該第二節段雜湊值的該節段,判定為該一或多個更新節段。
- 如請求項2之方法,其中該更新節段是對該韌體的該等節段的其中一者進行修改所產生,或者是相對於該韌體的該等節段所新增。
- 如請求項2之方法,更包括: 於該目標裝置,響應於該等節段被更新至該目標裝置的該第一儲存區,將該第一儲存區設置為作用中(active)狀態,以及將該第二儲存區設置為非作用中(inactive)狀態;以及 於該目標裝置,響應於該一或多個更新節段被更新至該目標裝置的該第二儲存區,以及該所有節段中除了該一或多個更新節段之外的其他節段被從該第一儲存區更新至該第二儲存區,將該第一儲存區設置為非作用中狀態,以及將該第二儲存區設置為作用中狀態。
- 一種資料結構產品,用於更新一目標裝置的一韌體,包括: 一韌體鏈,該韌體鏈包括一系列區塊,及該系列區塊中的一區塊與該區塊的前一區塊之間的一鏈結; 其中該區塊包括複數個區塊段的其中一者,及對應於該區塊段的一區塊元資料;及 其中該等區塊段的每一者包括該韌體的複數個節段中的一或多者,及對應於該一或多個節段的一或多筆節段元資料;以及 其中該目標裝置從該韌體鏈上取得該等節段,將該等節段更新至該目標裝置的一第一儲存區。
- 如請求項7之資料結構產品,其中該韌體鏈更包括一新區塊,該新區塊包括一新區塊段及對應於該新區塊段的一區塊元資料;及 其中該新區塊段包括一或多個更新節段及對應於該一或多個更新節段的一或多個該節段元資料;及 其中該新區塊段是藉由對一新版韌體與該韌體進行比較所產生;以及 其中該目標裝置根據從新區塊發佈後的該韌體鏈上取得的所有節段元資料,識別出新區塊發佈後的該韌體鏈上的該一或多個更新節段,將該一或多個更新節段更新至該目標裝置的一第二儲存區,以及將該所有節段中除了該一或多個更新節段之外的其他節段從該第一儲存區更新至該第二儲存區。
- 如請求項8之資料結構產品,其中該等節段元資料的每一者,包括對應於該節段元資料的該節段的一節段編號及一第一節段雜湊值。
- 如請求項9之資料結構產品,其中該目標裝置執行以下操作以識別出該韌體鏈上的該一或多個更新節段: 計算該第一儲存區中的該等節段的複數個第二節段雜湊值; 對於該等節段編號的每一者所對應的該節段,將從該韌體鏈上所取得該節段的該第一節段雜湊值,與該節段的該第二節段雜湊值進行比較; 將該韌體鏈上,具有不同的該第一節段雜湊值與該第二節段雜湊值的該節段,判定為該一或多個更新節段。
- 如請求項8之資料結構產品,其中該更新節段是對該韌體的該等節段的其中一者進行修改所產生,或者是相對於該韌體的該等節段所新增。
- 如請求項8之資料結構產品,其中該目標裝置響應於該等節段被更新至該目標裝置的該第一儲存區,將該第一儲存區設置為作用中狀態,以及將該第二儲存區設置為非作用中狀態;以及 其中該目標裝置響應於該一或多個更新節段被更新至該目標裝置的一第二儲存區,以及該所有節段中除了該一或多個更新節段之外的其他節段被從該第一儲存區更新至該第二儲存區,將該第一儲存區設置為非作用中狀態,以及將該第二儲存區設置為作用中狀態。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111111868A TWI823311B (zh) | 2022-03-29 | 2022-03-29 | 用於更新韌體的方法及資料結構產品 |
US17/854,463 US20230315424A1 (en) | 2022-03-29 | 2022-06-30 | Method and data structure for updating firmware |
CN202210777692.5A CN116931981A (zh) | 2022-03-29 | 2022-07-04 | 用于更新一目标装置的一固件的方法及数据结构产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111111868A TWI823311B (zh) | 2022-03-29 | 2022-03-29 | 用於更新韌體的方法及資料結構產品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202338599A true TW202338599A (zh) | 2023-10-01 |
TWI823311B TWI823311B (zh) | 2023-11-21 |
Family
ID=88194194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111111868A TWI823311B (zh) | 2022-03-29 | 2022-03-29 | 用於更新韌體的方法及資料結構產品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230315424A1 (zh) |
CN (1) | CN116931981A (zh) |
TW (1) | TWI823311B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101992680B1 (ko) * | 2013-02-05 | 2019-06-25 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 화상형성장치, 추적장치, 관리장치 및 화상형성장치의 펌웨어 업데이트 방법 |
WO2019161138A1 (en) * | 2018-02-16 | 2019-08-22 | Reneo, Inc. | Scalable life-cycle maintenance of hardware |
KR102111449B1 (ko) * | 2018-10-23 | 2020-05-15 | 주식회사 시옷 | 저전력 무선네트워크를 이용한 펌웨어 업데이트 방법 |
US10789062B1 (en) * | 2019-04-18 | 2020-09-29 | Dell Products, L.P. | System and method for dynamic data deduplication for firmware updates |
CN111831308A (zh) * | 2020-04-15 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 快充设备的固件更新方法、程序、快充设备及存储介质 |
US11861349B2 (en) * | 2021-10-07 | 2024-01-02 | Dell Products L.P. | Modular firmware updates in an information handling system |
-
2022
- 2022-03-29 TW TW111111868A patent/TWI823311B/zh active
- 2022-06-30 US US17/854,463 patent/US20230315424A1/en active Pending
- 2022-07-04 CN CN202210777692.5A patent/CN116931981A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230315424A1 (en) | 2023-10-05 |
CN116931981A (zh) | 2023-10-24 |
TWI823311B (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535969B (zh) | 基于区块链网络的数据存储方法、装置、存储介质和设备 | |
US12026044B2 (en) | Creating and using virtual memory blocks in a storage network | |
CN108848184B (zh) | 一种基于信任机制的区块链节点同步方法及装置 | |
US10656936B2 (en) | Systems and methods for software integrity validation using blockchain | |
JP5802263B2 (ja) | 記憶装置の間で移動されるトラックのエクステントへの書込み動作の管理方法、システム、及びコンピュータ・プログラム | |
AU2012398262B2 (en) | Partition extension method and apparatus | |
US7590632B1 (en) | Method for serializer maintenance and coalescing | |
US8943220B2 (en) | Continuous deployment of applications | |
CN110572287B (zh) | 数据容灾方法、装置、计算机设备和存储介质 | |
TW201823988A (zh) | 區塊資料校驗方法和裝置 | |
JP5644777B2 (ja) | ファイル群整合性検証システム、ファイル群整合性検証方法およびファイル群整合性検証用プログラム | |
JP2006079161A (ja) | フェイルオーバ方法及び計算機システム | |
JPWO2012101933A1 (ja) | 運用管理装置、運用管理方法、及びプログラム | |
CN105744001B (zh) | 分布式缓存系统扩容方法、数据访问方法及装置和系统 | |
WO2022174537A1 (zh) | 一种条带数据存储结构及其构建、修复和更新方法 | |
CN110309173B (zh) | 合约数据的记录方法、装置及区块链节点、存储介质 | |
TWI823311B (zh) | 用於更新韌體的方法及資料結構產品 | |
CN102646127A (zh) | 分布式文件系统副本选择方法和装置 | |
US12124423B2 (en) | Optimizing the operation of a microservice cluster | |
Perez-Miguel et al. | Modeling the availability of Cassandra | |
US11921572B1 (en) | Degradation assessment for a 5-dimensional twin framework | |
KR102697183B1 (ko) | 가상 네트워크 관리 장치 및 방법 | |
JP2009282604A (ja) | 重複データ排除システム、重複データ排除方法及び重複データ排除プログラム | |
US20170316037A1 (en) | Storing data in a dispersed storage network with consistency | |
KR102406242B1 (ko) | 특허 중개 과정에서의 특허 명세서 관리용 블록체인 기반 패치 관리 장치 |