TWI823599B - 韌體更新方法、電子裝置及伺服器 - Google Patents
韌體更新方法、電子裝置及伺服器 Download PDFInfo
- Publication number
- TWI823599B TWI823599B TW111137928A TW111137928A TWI823599B TW I823599 B TWI823599 B TW I823599B TW 111137928 A TW111137928 A TW 111137928A TW 111137928 A TW111137928 A TW 111137928A TW I823599 B TWI823599 B TW I823599B
- Authority
- TW
- Taiwan
- Prior art keywords
- update
- value
- update file
- volatile memory
- electronic device
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000015654 memory Effects 0.000 claims abstract description 188
- 238000012795 verification Methods 0.000 claims description 74
- 238000004422 calculation algorithm Methods 0.000 claims description 25
- 230000010485 coping Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 235000019820 disodium diphosphate Nutrition 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
一種韌體更新方法,適用於一電子裝置,並包括:連線至一伺服器;下載伺服器所儲存的一更新檔案;儲存更新檔案於一揮發性記憶體中;以及將揮發性記憶體所儲存的更新檔案複製到一非揮發性記憶體的一特定記憶區塊中,用以取代特定記憶區塊原本所儲存的韌體。
Description
本發明是關於一種韌體更新方法,特別是關於一種接續式的韌體更新方法。
習知的電子裝置在更新韌體時,通常先下載伺服器提供的新韌體,再將新韌體儲存一非揮發性記憶體中。由於非揮發性記憶體同時儲存新舊韌體,故減少非揮發性記憶體的可使記憶空間。另外,下載失敗時,需重新下載整個韌體,大幅增加下載時間。
本發明之一實施例提供一種韌體更新方法,適用於一電子裝置,並包括:連線至一伺服器;下載伺服器所儲存的一更新檔案;儲存更新檔案於一揮發性記憶體中;以及將揮發性記憶體所儲存的更新檔案複製到一非揮發性記憶體的一特定記憶區塊中,用以取代特定記憶區塊原本所儲存的韌體。
本發明之另一實施例提供一種韌體更新方法,適用於一伺服器,並包括:將一韌體檔案切分成複數更新檔案;讀取一下載值;根據下載值,選擇更新檔案之一者;以及輸出選擇的更新檔案予一電子裝置。
本發明之另一實施例提供一種電子裝置,包括一記憶裝置、一揮發性記憶體、一非揮發性記憶體、一網路介面以及一處理電路。記憶裝置用以儲存一更新程式碼。非揮發性記憶體具有一特定記憶區塊,用以儲存一特定韌體。網路介面用以連接至一網際網路。處理電路執行更新程式碼,用以透過網路介面,連線至一伺服器。處理電路透過網路介面,下載伺服器所儲存的一更新檔案,並將更新檔案儲存於揮發性記憶體中。在完整下載更新檔案後,處理電路將揮發性記憶體所儲存的更新檔案複製到特定記憶區塊,直接取代特定韌體。
本發明之另一實施例提供一種伺服器,耦接一電子裝置,並包括一處理電路、一第一記憶裝置以及一第二記憶裝置。處理電路切分一韌體檔案,用以產生複數更新檔案,並根據一下載值,選擇更新檔案之一者,並輸出選擇的更新檔案予電子裝置。第一記憶裝置儲存更新檔案。第二記憶裝置儲存下載值。當下載值不等於一預設值時,處理電路輸出第一更新檔案予電子裝置。當下載值等於預設值時,處理電路輸出第二更新檔案予電子裝置。
本發明之韌體更新方法可經由本發明之更新系統來實作,其為可執行特定功能之硬體或韌體,亦可以透過程式碼方式收錄於一紀錄媒體中,並結合特定硬體來實作。當程式碼被電子裝置、處理器、電腦或機器載入且執行時,電子裝置、處理器、電腦或機器變成用以實行本發明之電子裝置、伺服器或更新系統。
為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出實施例,並配合所附圖式,做詳細之說明。本發明說明書提供不同的實施例來說明本發明不同實施方式的技術特徵。其中,實施例中的各元件之配置係為說明之用,並非用以限制本發明。另外,實施例中圖式標號之部分重覆,係為了簡化說明,並非意指不同實施例之間的關聯性。
第1A圖為本發明之更新系統的示意圖。更新系統100包括一電子裝置110以及一伺服器120。電子裝置110透過一網際網路130,與伺服器120進行資料傳輸,用以更新本身的韌體檔案O_FF。本發明並不限定電子裝置110如何連接網際網路130。在一可能實施例中,電子裝置110透過一網路線140連接網際網路130。在另一可能實施例中,電子裝置110利用一無線方式(如WiFi)連接網際網路130。
電子裝置110至少具有一非揮發性記憶體111,用以儲存一韌體檔案O_FF。在一可能實施例中,非揮發性記憶體111係為一快閃記憶體(flash)。當電子裝置110透過網際網路130連線至伺服器120時,電子裝置110下載伺服器120所儲存的韌體檔案N_FF,並利用韌體檔案N_FF取代韌體檔案O_FF。在本實施例中,韌體檔案N_FF直接被儲存在原本儲存韌體檔案O_FF的記憶區塊中。由於韌體檔案N_FF不需被儲存在非揮發性記憶體111的另一記憶區塊中(不同於儲存韌體檔案O_FF的記憶區塊)中,故可增加非揮發性記憶體111的可使用記憶空間。
在接收到韌體檔案N_FF後,電子裝置110將韌體檔案N_FF燒錄至非揮發性記憶體111中,並記錄一燒錄進度。在一可能實施例中,伺服器120將韌體檔案N_FF切分成更新檔案P_1~P_3。電子裝置110依序下載更新檔案P_1~P_3,並依序將更新檔案P_1~P_3燒錄在非揮發性記憶體111中。在此例中,每當電子裝置110將一更新檔案燒錄至非揮發性記憶體111後,電子裝置110調整一更新值,並繼續將另一更新檔案燒錄至非揮發性記憶體111,直到所有更新檔案都被燒錄至非揮發性記憶體111。然而,當電子裝置110發現燒錄至非揮發性記憶體111的一更新檔案有誤時,電子裝置110根據更新值,重新燒錄相對應的更新檔案,用以確保非揮發性記憶體111的更新檔案的正確性。
舉例而言,當電子裝置110將更新檔案P_1燒錄至非揮發性記憶體111後,電子裝置110驗證非揮發性記憶體111所儲存的更新檔案P_1是否有錯誤存在。如果更新檔案P_1的資料正確。電子裝置110設定一更新值等於1。由於更新值等於1,故電子裝置110將更新檔案P_2燒錄至非揮發性記憶體111,並驗證更新檔案P_2。如果更新檔案P_2的資料正確,電子裝置110設定更新值等於2,並根據更新值(2)燒錄更新檔案P_3至非揮發性記憶體111。然而,如果更新檔案P_2的資料有誤,電子裝置110根據更新值(1),重新燒錄更新檔案P_2至非揮發性記憶體111中,並再次驗證更新檔案P_2。如果更新檔案P_2的資料正確,電子裝置110設定更新值等於3,並根據更新值(3),將更新檔案P_3燒錄至非揮發性記憶體111。
由於電子裝置110對非揮發性記憶體111裡的更新檔案進行驗證,故可確保資料的正確性。再者,當錯誤發生於某一更新檔案(如P_2)時,電子裝置110只需重新燒錄相對應的更新檔案(如P_2)予非揮發性記憶體111,而不需要重新燒錄沒有錯誤的更新檔案(如P_1),故可減少電子裝置110寫入資料至非揮發性記憶體111的時間。
在另一可能實施例中,電子裝置110記錄一下載進度。因此,當電子裝置110與伺服器120之間的連線斷線時(如因電子裝置110或伺服器120斷電造成斷線),雖然電子裝置110與伺服器120之間的資料傳輸被中斷,但當電子裝置110重新連線至伺服器120時,電子裝置110可根據一下載進度,從中斷點開始下載。因此,電子裝置110不需重新下載已下載過的資料,故可減少電子裝置110下載韌體檔案N_FF的時間。
舉例而言,電子裝置110下載伺服器120所儲存的更新檔案P_1,並將更新檔案P_1暫存於一揮發性記憶體(未顯示)中。在完整下載更新檔案P_1後,電子裝置110更新一下載值,如設定下載值等於1。接著,電子裝置110根據下載值(1),下載伺服器120所儲存的更新檔案P_2,並將更新檔案P_2暫存於揮發性記憶體中。在完整下載更新檔案P_2後,電子裝置110更新下載值為2。然而,在下載更新檔案P_2時,如果電子裝置110與伺服器120斷線,由於電子裝置110未接收到完整的更新檔案P_2,故電子裝置110與伺服器120重新連線後,電子裝置110根據下載值(1),得知更新檔案P_1已完整下載過。因此,電子裝置110重新下載伺服器120的更新檔案P_2。在完整下載更新檔案P_2後,電子裝置110更新下載值為2,並根據下載值(2),下載伺服器120的更新檔案P_3,直到下載完所有的更新檔案。由於電子裝置110在下載失敗後,只需從中斷點開始重新下載,故可減少下載時間。
伺服器120可能透過一網路線150連接網際網路130。在另一可能實施例中,伺服器120以無線方式連接網際網路130。在本實施例中,伺服器120具有一非揮發性記憶體121,用以儲存一韌體檔案N_FF。在此例中,伺服器120將韌體檔案N_FF切分成更新檔案P_1~P_3。本發明並不限定更新檔案的數量。在其它實施例中,伺服器120將韌體檔案N_FF切分成更多或更少的更新檔案。
在一可能實施例中,每當伺服器120完整輸出一更新檔案後,伺服器120調整一下載值。伺服器120根據下載值,選擇輸出相對應的更新檔案。舉例而言,當伺服器120接收到電子裝置110的一要求請求時,伺服器120輸出更新檔案P_1予電子裝置110。在完整輸出更新檔案P_1後,伺服器120設定下載值為1。接著,伺服器120根據下載值(1),輸出更新檔案P_2予電子裝置110。在完整輸出更新檔案P_2後,伺服器120設定下載值為2。然而,在輸出更新檔案P_2時,如果發生一中斷事件(如電子裝置110斷電),伺服器120將在電子裝置110重新連線時,根據下載值(1),選擇更新檔案P_2予電子裝置110。由於伺服器120不需重新提供已輸出成功的更新檔案(如P_1),故可加快伺服器120輸出更新檔案的速度。
在其它實施例中,伺服器120接收電子裝置110提供的一下載值,並根據下載值提供相對應的更新檔案。在此例中,每當電子裝置110接收一完整的更新檔案後,電子裝置110調整一下載值,並提供該下載值予伺服器120。在一些實施例中,每當電子裝置110接收一完整的更新檔案後,電子裝置110通知伺服器120,使得伺服器120調整一下載值。
另外,伺服器120更包括一非揮發性記憶體122,用以儲存驗證值H_1~H_3。在此例中,伺服器120利用同一演算法,分別計算處理更新檔案P_1~P_3,用以產生驗證值H_1~H_3。在本實施例中,每一驗證值對應一更新檔案。本發明並不限定伺服器120如何產生驗證值H_1~H_3。在一可能實施例中,伺服器120利用一雜湊演算法(Hash Algorithm)處理更新檔案P_1~P_3。在此例中,驗證值H_1~H_3又稱為雜湊值(Hash Value)或雜湊碼 (Hash Code)。
在輸出每一更新檔案予電子裝置110時,伺服器120一併輸出相對應的驗證值。在此例中,電子裝置110利用同一演算法(相同於伺服器120處理更新檔案P_1~P_3的演算法),計算處理每一更新檔案,用以產生多個計算值。電子裝置110比較每一計算值與相對應的驗證值,用以驗證更新檔案是否存在錯誤。舉例而言,電子裝置110利用相同的演算法(相同於伺服器120產生驗證值H_1的演算法),計算更新檔案P_1,用以產生一計算值。電子裝置110將計算值與驗證值H_1作比較。當計算值相同於驗證值H_1時,表示電子裝置110接收到的更新檔案P_1正確。然而,當計算值不同於驗證值H_1時,表示更新檔案P_1具有錯誤。因此,電子裝置110要求伺服器120重新提供更新檔案P_1。
在其它實施例中,在將更新檔案P_1寫入非揮發性記憶體111後,電子裝置110利用相同的演算法,計算非揮發性記憶體111所儲存的更新檔案P_1,用以產生一計算值。在此例中,電子裝置110將計算值與驗證值H_1作比較。當計算值相同於驗證值H_1時,表示燒錄於非揮發性記憶體111的更新檔案P_1的資料正確。然而,當計算值不同於驗證值H_1時,表示燒錄於非揮發性記憶體111的更新檔案P_1存在錯誤。因此,電子裝置110重新燒錄更新檔案P_1至非揮發性記憶體111。
第1B圖為本發明之更新系統的狀態示意圖。在狀態101下,伺服器120準備一更新檔案(如P_1)。在狀態102下,電子裝置110執行一更新程式碼,用以下載伺服器120的更新檔案。在狀態103下,電子裝置110將更新檔案儲存於一揮發性記憶體中。在狀態104下,電子裝置110將揮發性記憶體所儲存的更新檔案燒錄在一非揮發性記憶體的一特定記憶區塊中。在狀態105下,電子裝置110將一下載進度上傳予伺服器120。在狀態106下,伺服器120根據下載進度,選擇更新檔案供電子裝置110下載。
在另一可能實施例中,在狀態101下,伺服器120更提供一驗證值。在此例中,在狀態102下,電子裝置110利用一演算法處理更新檔案,用以產生一計算值,再比較計算值與驗證值。當計算值相同於驗證值時,表示更新檔案正確。因此,在狀態103下,電子裝置110將更新檔案與驗證值一併儲存於揮發性記憶體111中。在其它實施例中,當計算值不同於驗證值時,表示更新檔案具有錯誤。因此,回到狀態101,重新下載更新檔案。
第1C圖為本發明之更新系統的流程示意圖。首先,伺服器120準備更新檔案(步驟S161)。在一可能實施例中,伺服器120將一韌體檔案N_FF切分成更新檔案P_1~P_3。接著,電子裝置110執行一更新程式碼,用以連線伺服器120(步驟S162)。完成連線後,伺服器120讀取一下載值(步驟S163)。
伺服器120根據下載值,選擇一相對應的更新檔案,並利用一演算法,計算並處理相對應的更新檔案,用以產生一驗證值(步驟S164)。電子裝置110下載伺服器120所選擇的更新檔案及相對應的驗證值(步驟S165)。在一可能實施例中,電子裝置110將下載的更新檔案儲存於一揮發性記憶體中。
接著,電子裝置110驗證更新檔案是否存在錯誤(步驟S166)。在一可能實施例中,電子裝置110利用同一演算法(相同於伺服器120產生驗證值的演算法),計算更新檔案,用以產生一第一計算值。電子裝置110判斷第一計算值是否相同於伺服器120提供的驗證值。當第一計算值不同於驗證值時,表示更新檔案具有錯誤,故執行步驟S162,重新連線伺服器120。
當第一計算值相同於驗證值時,表示揮發性記憶體所儲存的更新檔案不具有錯誤,故電子裝置110將更新檔案燒錄於一非揮發性記憶體中(步驟S167)。電子裝置110判斷燒錄在非揮發性記憶體的更新檔案是否具有錯誤(步驟S168)。在一可能實施例中,電子裝置110利用同一演算法(相同於伺服器120產生驗證值的演算法),計算儲存於非揮發性記憶體的更新檔案,用以產生一第二計算值。在此例中,電子裝置110判斷第二計算值是否相同於伺服器120提供的驗證值。當第二計算值相同於驗證值時,表示更新檔案已成功地燒錄於非揮發性記憶體中,故執行步驟S169,發出一成功通知。然而,當第二計算值不同於驗證值時,表示燒錄於非揮發性記憶體的更新檔案具有錯誤,故發出一燒錄失敗通知(步驟S170),再執行步驟S162,重新連線伺服器120。
第2A圖為本發明之電子裝置的示意圖。電子裝置200包括一記憶裝置210、一處理電路220、一揮發性記憶體230、一非揮發性記憶體240以及一網路介面250。本發明並不限定電子裝置200的種類。在一可能實施例中,電子裝置200係為一微控制電路(MCU)。
記憶裝置210儲存一更新程式碼UAPP。更新程式碼UAPP係用以進行空中下載(over-the-air;OTA)更新操作。本發明並不限定記憶裝置210的種類。在一可能實施例中,記憶裝置210係為一非揮發性記憶體。
處理電路220執行更新程式碼UAPP,並透過網路介面250連線至一外部伺服器,用以下載一韌體檔案N_FF。本發明並不限定網路介面250的種類。在一可能實施例中,網路介面250具有一連接埠,用以連接一網路線。在另一可能實施例中,網路介面250係為一無線網路介面。
處理電路220將外部伺服器的韌體檔案N_FF儲存於揮發性記憶體230中。在完整下載韌體檔案N_FF後,處理電路220將揮發性記憶體230所儲存的韌體檔案N_FF複製到非揮發性記憶體240的一特定記憶區塊241中,用以取代特定記憶區塊241所儲存的特定韌體O_FF。在一可能實施例中,揮發性記憶體230所儲存的韌體檔案N_FF稱為一新韌體,而非揮發性記憶體240所儲存的韌體檔案O_FF稱為一舊韌體。由於韌體檔案N_FF直接取代韌體檔案O_FF,故非揮發性記憶體240不需同時儲存新舊韌體,因此,增加非揮發性記憶體240的可使用記憶空間。在一可能實施例中,非揮發性記憶體240係為一快閃記憶體。
在本實施例中,韌體檔案N_FF係由更新檔案P_1~P_3所構成。在一可能實施例中,每當處理電路220下載一更新檔案,並將更新檔案完整地儲存於揮發性記憶體230後,處理電路220便將揮發性記憶體230的更新檔案複製到特定記憶區塊241。舉例而言,在處理電路220下載並將更新檔案P_1完整地儲存於揮發性記憶體230後,處理電路220便將揮發性記憶體230的更新檔案P_1複製到特定記憶區塊241。然後,處理電路220下載並將更新檔案P_2完整地儲存於揮發性記憶體230後,處理電路220將揮發性記憶體230的更新檔案P_2複製到特定記憶區塊241。最後,處理電路220下載並將更新檔案P_3完整地儲存於揮發性記憶體230後,處理電路220將揮發性記憶體230的更新檔案P_3複製到特定記憶區塊241。
在另一可能實施例中,處理電路220下載來自伺服器120的所有更新檔案,並將該等更新檔案儲存於揮發性記憶體230後,處理電路220才將揮發性記憶體230的所有更新檔案複製到特定記憶區塊241。舉例而言,處理電路220依序下載並儲存更新檔案P_1~P_3於揮發性記憶體230中。在此例中,在下載完成更新檔案P_1~P_3後,處理電路220將揮發性記憶體230的更新檔案P_1~P_3複製到特定記憶區塊241。
在其它實施例中,處理電路220更下載對應於更新檔案P_1~P_3的驗證值H_1~H_3。在此例中,驗證值H_1~H_3也是儲存於揮發性記憶體230,但並非用以限制本發明。在其它實施例中,驗證值H_1~H_3可能儲存於另一揮發性記憶體或是一非揮發性記憶體中。
在一些實施例中,電子裝置110更包括一記憶裝置260。記憶裝置260儲存一下載值BP1。處理電路220根據下載值BP1,選擇並下載外部伺服器的更新檔案P_1~P_3。舉例而言,當下載值BP1等於一初始值,如0時,處理電路220選擇下載外部伺服器的更新檔案P_1,並儲存更新檔案P_1於揮發性記憶體230中。在完整儲存更新檔案P_1後,處理電路220設定下載值BP1等於一第一數值,如1。接著,處理電路220根據下載值BP1,選擇下載外部伺服器的更新檔案P_2,並儲存更新檔案P_2於揮發性記憶體230中。在完整儲存更新檔案P_2後,處理電路220設定下載值BP1等於一第二數值,如2。然而,在儲存更新檔案P_2於揮發性記憶體230的過程中,如果發生一中斷事件,如外部伺服器突然斷線,處理電路220重新執行更新程式碼UAPP。在連線外部伺服器後,處理電路220根據下載值BP1(如1),重新下載外部伺服器的更新檔案P_2。由於處理電路220不需重複下載更新檔案P_1,故可減少處理電路220的下載時間。
在另一可能實施例中,記憶裝置260更儲存一更新值BP2。處理電路220根據更新值BP2,選擇揮發性記憶體230所儲存的更新檔案,並將選擇的更新檔案寫入非揮發性記憶體240中。舉例而言,當更新值BP2等於一初始值,如0時,處理電路220選擇揮發性記憶體230所儲存的更新檔案P_1,並將更新檔案P_1寫入非揮發性記憶體240的特定記憶區塊241中。在更新檔案P_1完整地寫入特定記憶區塊241後,處理電路220利用一演算法,計算並處理特定記憶區塊241的更新檔案P_1,用以產生一第一計算值。處理電路220比較第一計算值與更新檔案P_1所對應的驗證值H_1。當第一計算值相同於驗證值H_1時,表示特定記憶區塊241所儲存的更新檔案P_1正確。因此,處理電路220設定更新值BP2等於一第一數值,如1。
接著,處理電路220根據更新值BP2,選擇揮發性記憶體230所儲存的更新檔案P_2,並將更新檔案P_2寫入特定記憶區塊241中。在更新檔案P_2完整地寫入特定記憶區塊241後,處理電路220利用同一演算法,計算並處理特定記憶區塊241的更新檔案P_2,用以產生一第二計算值。處理電路220比較第二計算值與更新檔案P_2所對應的驗證值H_2。當第二計算值相同於驗證值H_2時,表示特定記憶區塊241所儲存的更新檔案P_2正確。因此,處理電路220設定更新值BP2等於一第二數值,如2。然而,如果第二計算值不同於驗證值H_2時,表示特定記憶區塊241所儲存的更新檔案P_2具有錯誤。因此,處理電路220不調整更新值BP2。由於更新值BP2等於第一數值,故處理電路220重新選擇揮發性記憶體230所儲存的更新檔案P_2,並將更新檔案P_2再次寫入特定記憶區塊241中。在更新檔案P_2完整地寫入特定記憶區塊241後,處理電路220利用同一演算法,計算並處理特定記憶區塊241的更新檔案P_2,用以產生一第三計算值。處理電路220比較第三計算值與驗證值H_2。當第三計算值相同於驗證值H_2,表示特定記憶區塊241所儲存的更新檔案P_2正確。因此,處理電路220設定更新值BP2等於第二數值,如2。由於處理電路220不需重複下載更新檔案P_1,故可減少處理電路220的下載時間。
第2B圖為本發明之電子裝置的韌體更新方法的流程示意圖。在一可能實施例中,韌體更新方法可以透過程式碼存在。當程式碼被機器載入且執行時,機器變成用以實行本發明之電子裝置。
首先,連線至一伺服器(步驟S201)。在一可能實施例中,電子裝置具有一網路介面。該網路介面利用一網路線或是利用一無線方式,連線一網際網路,並透過網際網路與一伺服器進行連線。在一可能實施例中,電子裝置具有一更新程式碼。在執行更新程式後,網路介面與網際網路進行連線。
下載伺服器所儲存的一韌體檔案(步驟S202),並儲存韌體檔案於一揮發性記憶體中(步驟S203)。接著,將揮發性記憶體所儲存的韌體檔案燒錄到一非揮發性記憶體的一特定記憶區塊中,用以取代特定記憶區塊原本所儲存的韌體(步驟S204)。在一些實施例中,儲存於揮發性記憶體所儲存的韌體檔案係為一新韌體,而原本儲存於特定記憶區塊的韌體係為一舊韌體。在此例中,非揮發性記憶體並不需要同時儲存新舊韌體,故可增加非揮發性記憶體的可使用記憶空間。再者,由於電子裝置不需先將新韌體燒錄非揮
發性記憶體的一記憶空間(或稱第一記憶空間),再將新韌體複製到另一記憶空間(即第二記憶空間),用以取代原本的舊韌體,故可加快電子裝置的更新速度。
在一些實施例中,伺服器將韌體檔案切分成複數更新檔案,如第2A圖的更新檔案P_1~P_3。在此例中,步驟S202先下載更新檔案P_1,並將更新檔案P_1儲存於揮發性記憶體中(步驟S203)。步驟S204將揮發性記憶體所儲存的更新檔案P_1複製到特定記憶區塊中。然後,回到步驟S202,繼續下載更新檔案P_2。步驟S203將更新檔案P_2儲存於揮發性記憶體中。步驟S204將揮發性記憶體所儲存的更新檔案P_2複製到特定記憶區塊中,並回到步驟S202,直到所有的更新檔案都存入非揮發性記憶體的特定記憶區塊中。
在另一可能實施例中,步驟S202先下載更新檔案P_1,並將更新檔案P_1儲存於揮發性記憶體中(步驟S203)。然後,回到步驟S202,繼續下載更新檔案P_2。步驟S203將更新檔案P_2儲存於揮發性記憶體中,再回到步驟S202,下載更新檔案P_3。步驟S203將更新檔案P_3儲存於揮發性記憶體中。在此例中,步驟S204將揮發性記憶體的更新檔案P_1~P_3寫入非揮發性記憶體中。
在其它實施例中,步驟S203更驗證揮發性記憶體的更新檔案是否存在錯誤。如果更新檔案正確,步驟S204將更新檔案寫入非揮發性記憶體中。如果更新檔案具有錯誤,則回到步驟S202,重新下載對應的更新檔案。在一可能實施例中,每當驗證成功時(即更新檔案不具有錯誤),調整一下載值。在此例中,步驟S202根據下載值,下載對應的更新檔。舉例而言,下載值可能等於一初始值。因此,步驟S202下載更新檔案P_1。步驟S203儲存更新檔案P_1,並驗證更新檔案P_1是否存在錯誤。如果更新檔案P_1不存在錯誤,步驟S203設定下載值等於一第一數值。此時,步驟S202根據下載值,下載更新檔案P_2。然而,如果更新檔案P_1存在錯誤,步驟S203維持下載值等於初始值。因此,步驟S202重新下載更新檔案P_1。
在另一可能實施例中,步驟S204驗證特定記憶區塊裡的更新檔案是否存在錯誤,並根據驗證結果,調整一更新值。舉例而言,在更新檔案P_1寫入特定記憶區塊後,步驟S204判斷更新檔案P_1是否存在錯誤。如果更新檔案P_1不存在錯誤,步驟S204調整(如增加)一更新值,用以準備寫入更新檔案P_2至特定記憶區塊中。然而,如果更新檔案P_1存在錯誤,步驟S204不調整更新值。在此例中,步驟S204根據更新值,再次寫入更新檔案P_1至特定記憶區塊。
本發明並不限定步驟S203及S204如何判斷更新檔案是否存在錯誤。在一可能實施例中,步驟S202除了下載更新檔案,更下載相對應的驗證值。在此例中,步驟S203及S204利用同一演算法,計算並處理更新檔案(如P_1),用以產生一計算值,再將計算值與更新檔案(如P_1)所對應的驗證值(如H_1)進行比對。如果計算值相同於驗證值,表示更新檔案不存在錯誤。然而,如果計算值不同於驗證值,表示更新檔案存在錯誤。在此例中,驗證值係由伺服器所提供。伺服器利用同一演算法,計算處理不同的更新檔案,用以產生不同的驗證值,再供電子裝置進行驗證。
第3A圖為本發明之伺服器的示意圖。伺服器300包括記憶裝置310、一處理電路320及一儲存電路330。儲存電路330具有記憶裝置331~333。記憶裝置331儲存一切分程式碼SAPP。記憶裝置332儲存一韌體檔案N_FF。記憶裝置333儲存一下載值BP1。本發明並不限定記憶裝置331~333的種類。在一可能實施例中,記憶裝置331~333均為非揮發性記憶體。在另一可能實施例中,記憶裝置331~333之至少一者係為揮發性記憶體。
處理電路320執行切分程式碼SAPP,用以將韌體檔案N_FF切分成更新檔案P_1~P_3,並透過網路介面340,輸出更新檔案P_1~P_3予一外部電子裝置。由於網路介面340的特性相似於第2A圖的網路介面250的特性,故不再贅述。
在本實施例中,更新檔案P_1~P_3係儲存於記憶裝置332中。處理電路320讀取下載值BP1,並根據下載值BP1,選擇更新檔案P_1~P_3之一者。在一可能實施例中,處理電路320將選擇的更新檔案(如P_1)寫入記憶裝置310中。
舉例而言,當下載值BP1等於一初始值時,處理電路320將更新檔案P_1暫存於記憶裝置310中。當下載值BP1等於一第一數值時,處理電路320將更新檔案P_2儲存於記憶裝置310中。當下載值BP1等於一第二數值時,處理電路320將更新檔案P_3儲存於記憶裝置310中。
在一可能實施例中,下載值BP1係由處理電路320設定。舉例而言,當更新檔案P_1尚未完整地輸出時,處理電路320不調整下載值BP1。此時,下載值BP1可能等於一初始值,如0。在完整地輸出更新檔案P_1後,處理電路320設定下載值BP1等於一第一數值。處理電路320根據下載值BP1選擇更新檔案P_2,並將更新檔案P_2暫存於記憶裝置310中。待完整地輸出更新檔案P_2後,處理電路320設定下載值BP1等於一第二數值。
在一可能實施例中,當一外部電子裝置(未顯示)完整地接收到一更新檔案後,外部電子裝置提供一完成信號。處理電路320根據完成信號,調整下載值BP1。在其它實施例中,當一外部電子裝置完整地接收到一更新檔案後,外部電子裝置調整一下載值,並提供調整後的下載值予處理電路320。在此例中,處理電路320將來自外部電子裝置的下載值儲存於記憶裝置333中。
在一些實施例中,處理電路320利用一演算法,計算並處理更新檔案P_1~P_3,用以產生驗證值H_1~H_3。驗證值H_1~H_3分別對應更新檔案P_1~P_3。當處理電路320將更新檔案P_1暫存於記憶裝置310時,處理電路320利用一查找表,得知更新檔案P_1對應驗證值H_1。因此,處理電路320一併將驗證值H_1先暫存於記憶裝置310中,然後再透過網路介面340,輸出更新檔案P_1及驗證值H_1予一外部電子裝置。在外部電子裝置下載更新檔案P_1及驗證值H_1後,外部電子裝置利用同一演算法計算並處理更新檔案P_1,用以產生一計算值。外部電子裝置根據計算值及驗證值H_1,得知下載過程是否發生錯誤。當計算值不同於驗證值H_1時,表示下載的更新檔案P_1具有錯誤。因此,外部電子裝置不發出完成信號,故處理電路320重新提供更新檔案P_1予外部電子裝置。
在一些實施例中,驗證值H_1~H_3被記錄在一驗證表格334中。在此例中,驗證表格334儲存於記憶裝置330中。在另一可能實施例中,記憶裝置330更儲存一裝置表格335。裝置表格335儲存複數外部電子裝置的更新狀態。假設,伺服器300可連接兩外部電子裝置。在此例中,符號D_1代表第一外部電子裝置的更新狀態,如第一外部電子裝置的舊韌體已更新成新韌體,符號D_2代表第二外部電子裝置的更新狀態,如第二外部電子裝置的舊韌體尚未更新成新韌體。
第3B圖為本發明之伺服器的韌體更新方法的流程示意圖。在一可能實施例中,韌體更新方法可以透過程式碼存在。當程式碼被機器載入且執行時,機器變成用以實行本發明之伺服器。首先,將一韌體檔案切分成複數更新檔案(步驟S301)。然後,讀取一下載值(步驟S302)。在一可能實施例中,下載值係由伺服器設定。
接著,根據下載值,選擇一相對應更新檔案(步驟S303)。在一可能實施例中,不同的下載值對應不同的更新檔案。以第3A圖為例,當下載值BP1等於一初始值時,選擇更新檔案P_1。當下載值BP1等於一第一數值時,選擇更新檔案P_2。下載值BP1等於一第二數值時,選擇更新檔案P_3。
然後,輸出選擇的更新檔案予電子裝置(步驟S304)。在一可能實施例中,在完整地輸出選擇的更新檔案後,步驟S304更調整下載值。舉例而言,步驟S304可能逐漸增加下載值。然後,回到步驟S302,讀取新的下載值,並根據下載值,選擇相對應的更新檔案。
在其它實施例中,步驟S303更選擇一驗證值。步驟S304輸出選擇的更新檔案時,一併輸出選擇的驗證值。在一可能實施例中,伺服器利用一演算法處理該等更新檔案,用以產生複數驗證值。每一驗證值對應一更新檔案。在此例中,外部電子裝置根據伺服器提供的驗證值,得知下載過程是否發生錯誤。當下載過程發生錯誤時,外部電子裝置不回覆一完成信號。因此,步驟S304不調整下載值。在此例中,步驟S303選擇同一更新檔案。
以第3A圖為例,當下載值BP1等於一初始值時,步驟S303選擇更新檔案P_1,步驟S304輸出更新檔案P_1予外部電子裝置。在接收更新檔案P_1的過程中,當一中斷事件發生時,如外部電子裝置斷電,外部電子裝置無法提供一完成信號。因此,步驟S304不調整下載值BP1。由於下載值BP1仍等於初始值,故步驟S303再次選擇更新檔案P_1。因此,步驟S304再次輸出更新檔案P_1予外部電子裝置。當外部電子裝置完整地接收到更新檔案P_1後,外部電子裝置回覆一完成信號。因此,步驟S304設定下載值BP1等於一第一數值。由於下載值BP1等於第一數值,故步驟S303選擇更新檔案P_2。步驟S304輸出更新檔案P_2予外部電子裝置。
在另一可能實施例中,當下載值BP1等於一初始值時,步驟S303選擇更新檔案P_1及驗證值H_1,步驟S304輸出更新檔案P_1及驗證值H_1予外部電子裝置。在接收更新檔案P_1的過程中,當一中斷事件發生時,如外部電子裝置與伺服器之間的連線斷線,外部電子裝置接收到不完整的更新檔案P_1。此時,外部電子裝置利用一演算法(相同於伺服器產生驗證值H_1的演算法),處理更新檔案P_1,用以產生一計算值。外部電子裝置判斷計算值是否相同於驗證值H_1。當計算值不同於驗證值H_1時,表示更新檔案P_1具有錯誤。因此,外部電子裝置不回覆一完成信號,故步驟S304不調整下載值BP1。在此例中,由於下載值BP1仍等於初始值,故步驟S303再次選擇更新檔案P_1。因此,步驟S304再次輸出更新檔案P_1予外部電子裝置。當外部電子裝置完整地接收到更新檔案P_1後,外部電子裝置再次計算更新檔案P_1,用以產生新的計算值。當新的計算值等於驗證值H_1時,表示更新檔案P_1正確。因此,外部電子裝置回覆一完成信號。在此例中,步驟S304調整下載值BP1,並執行步驟S302,讀取新的下載值BP1。因此,步驟S303根據新的下載值BP1,選擇另一更新檔案。
由於伺服器根據下載值,選擇合適的更新檔案予外部電子裝置,故可避免多次重複輸出同一更新檔案。因此,提高伺服器的效率。再者,伺服器提供相對應的驗證值,供外部電子裝置進行驗證,故可避免外部電子裝置儲存錯誤的更新檔案。
本發明之韌體更新方法,或特定型態或其部份,可以以程式碼的型態存在。程式碼可儲存於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限於外在形式之電腦程式產品,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之電子裝置或是伺服器。程式碼也可透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之電子裝置或是伺服器。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應用特定邏輯電路之獨特裝置。
除非另作定義,在此所有詞彙(包含技術與科學詞彙)均屬本發明所屬技術領域中具有通常知識者之一般理解。此外,除非明白表示,詞彙於一般字典中之定義應解釋為與其相關技術領域之文章中意義一致,而不應解釋為理想狀態或過分正式之語態。雖然“第一”、“第二”等術語可用於描述各種元件,但這些元件不應受這些術語的限制。這些術語只是用以區分一個元件和另一個元件。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾。舉例來說,本發明實施例所述之系統、裝置或是方法可以硬體、軟體或硬體以及軟體的組合的實體實施例加以實現。因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:更新系統
110、200:電子裝置
120、300:伺服器
130:網際網路
140、150:網路線
111、121、122、240:非揮發性記憶體
P_1~P_3:更新檔案
N_FF、O_FF:韌體檔案
H_1~H_3:驗證值
101~106:狀態
S161~S170、S201~S204、S301~S304:步驟
210、260、310、331~333:記憶裝置
220、320:處理電路
230:揮發性記憶體
250、340:網路介面
UAPP:更新程式碼
BP1:下載值
BP2:更新值
330:儲存電路
SAPP:切分程式碼
334:驗證表格
335:裝置表格
D_1、D_2:更新狀態
第1A圖為本發明之更新系統的示意圖。
第1B圖為本發明之更新系統的狀態示意圖。
第1C圖為本發明之更新系統的流程示意圖。
第2A圖為本發明之電子裝置的示意圖。
第2B圖為本發明之電子裝置的韌體更新方法的流程示意圖。
第3A圖為本發明之伺服器的示意圖。
第3B圖為本發明之伺服器的韌體更新方法的流程示意圖。
100:更新系統
110:電子裝置
120:伺服器
130:網際網路
140、150:網路線
111、121、122:非揮發性記憶體
P_1~P_3:更新檔案
N_FF、O_FF:韌體檔案
H_1~H_3:驗證值
Claims (6)
- 一種韌體更新方法,適用於一電子裝置,並包括:連線至一伺服器;讀取一下載值;根據該下載值,下載該伺服器所儲存的一第一更新檔案或是一第二更新檔案;當該下載值不等於一第一預設值時,下載該第一更新檔案,並儲存該第一更新檔案於一揮發性記憶體中;當該下載值等於該第一預設值時,下載該第二更新檔案,並儲存該第二更新檔案於該揮發性記憶體中;以及將該揮發性記憶體所儲存的該第一或第二更新檔案複製到一非揮發性記憶體的一特定記憶區塊中,用以取代該特定記憶區塊原本所儲存的韌體。
- 如請求項1之韌體更新方法,更包括:在複製該第一更新檔案到該特定記憶區塊後,讀取一更新值;判斷該更新值是否等於一第二預設值;當該更新值不等於該第二預設值時,重新複製該第一更新檔案到該特定記憶區塊;當該更新值等於該第二預設值時,複製該第二更新檔案到該特定記憶區塊。
- 如請求項1之韌體更新方法,更包括:下載該伺服器所儲存的一第一驗證值;儲存該第一驗證值於該揮發性記憶體中; 利用一演算法處理該揮發性記憶體儲存的該第一更新檔案,用以產生一第一計算值;判斷該第一計算值是否相同於該第一驗證值;當該第一計算值不同於該第一驗證值時,重新下載該伺服器所儲存的該第一更新檔案。
- 一種電子裝置,包括:一第一記憶裝置,用以儲存一更新程式碼;一第二記憶裝置,儲存一下載值;一揮發性記憶體;一非揮發性記憶體,具有一特定記憶區塊,用以儲存一特定韌體;一網路介面,用以連接至一網際網路;以及一處理電路,執行該更新程式碼,用以透過該網路介面,連線至一伺服器;其中:該處理電路根據該下載值,並透過該網路介面,下載該伺服器所儲存的一第一更新檔案或一第二更新檔案,當該下載值不等於一第一預設值時,該處理電路下載該第一更新檔案,並將該第一更新檔案儲存於該揮發性記憶體中,當該下載值等於該第一預設值時,該處理電路下載該第二更新檔案,並將該第二更新檔案儲存於該揮發性記憶體中;在完整下載該第一或第二更新檔案後,該處理電路將該揮發性記憶體所儲存的該第一或第二更新檔案複製到該特定記憶區塊,直接取代該特定韌體。
- 如請求項4之電子裝置,其中該處理電路讀取一更 新值,當該更新值不等於一第二預設值時,該處理電路將該揮發性記憶體所儲存的該第一更新檔案複製到該特定記憶區塊,當該更新值等於該第二預設值時,該處理電路將該揮發性記憶體所儲存的該第二更新檔案複製到該特定記憶區塊。
- 一種伺服器,耦接複數電子裝置,並包括:一處理電路,切分一韌體檔案,用以產生複數更新檔案,並根據一下載值,選擇該等更新檔案之一者,並輸出選擇的更新檔案予該等電子裝置中之一特定電子裝置;以及一儲存電路,儲存一裝置表格,並包括:一第一記憶裝置,儲存該等更新檔案;以及一第二記憶裝置,儲存該下載值;其中當該下載值不等於一預設值時,該處理電路選擇並輸出該等更新檔案之一者予該特定電子裝置,當該下載值等於該預設值時,該處理電路選擇並輸出該等更新檔案之另一者予該特定電子裝置;其中該裝置表格儲存該等電子裝置的更新狀態。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111137928A TWI823599B (zh) | 2022-10-06 | 2022-10-06 | 韌體更新方法、電子裝置及伺服器 |
CN202310786758.1A CN117850824A (zh) | 2022-10-06 | 2023-06-29 | 固件更新方法、电子装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111137928A TWI823599B (zh) | 2022-10-06 | 2022-10-06 | 韌體更新方法、電子裝置及伺服器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI823599B true TWI823599B (zh) | 2023-11-21 |
TW202416114A TW202416114A (zh) | 2024-04-16 |
Family
ID=89722816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111137928A TWI823599B (zh) | 2022-10-06 | 2022-10-06 | 韌體更新方法、電子裝置及伺服器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117850824A (zh) |
TW (1) | TWI823599B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201508641A (zh) * | 2013-08-29 | 2015-03-01 | Aic Inc | 伺服器的基本輸入輸出系統更新方法 |
TW201612747A (en) * | 2014-09-18 | 2016-04-01 | Wistron Neweb Corp | Method of module version upgrading and terminal device |
US20180173516A1 (en) * | 2016-12-21 | 2018-06-21 | Quanta Computer Inc. | System and method for remotely updating firmware |
CN112579125A (zh) * | 2020-12-10 | 2021-03-30 | 四川虹微技术有限公司 | 一种固件升级方法、装置、电子设备和存储介质 |
US20220229654A1 (en) * | 2019-05-24 | 2022-07-21 | Assa Abloy Ab | Enabling upgrading firmware of a target device |
CN114911500A (zh) * | 2022-05-17 | 2022-08-16 | 北京驭光科技发展有限公司 | 终端升级方法、终端及系统 |
CN114995845A (zh) * | 2021-03-01 | 2022-09-02 | 晶晨半导体(上海)股份有限公司 | Ota升级方法和设备 |
-
2022
- 2022-10-06 TW TW111137928A patent/TWI823599B/zh active
-
2023
- 2023-06-29 CN CN202310786758.1A patent/CN117850824A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201508641A (zh) * | 2013-08-29 | 2015-03-01 | Aic Inc | 伺服器的基本輸入輸出系統更新方法 |
TW201612747A (en) * | 2014-09-18 | 2016-04-01 | Wistron Neweb Corp | Method of module version upgrading and terminal device |
US20180173516A1 (en) * | 2016-12-21 | 2018-06-21 | Quanta Computer Inc. | System and method for remotely updating firmware |
US20220229654A1 (en) * | 2019-05-24 | 2022-07-21 | Assa Abloy Ab | Enabling upgrading firmware of a target device |
CN112579125A (zh) * | 2020-12-10 | 2021-03-30 | 四川虹微技术有限公司 | 一种固件升级方法、装置、电子设备和存储介质 |
CN114995845A (zh) * | 2021-03-01 | 2022-09-02 | 晶晨半导体(上海)股份有限公司 | Ota升级方法和设备 |
CN114911500A (zh) * | 2022-05-17 | 2022-08-16 | 北京驭光科技发展有限公司 | 终端升级方法、终端及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117850824A (zh) | 2024-04-09 |
TW202416114A (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10936417B2 (en) | Multi-stage slice recovery in a dispersed storage network | |
US10042707B2 (en) | Recovering affinity with imposter slices | |
US10303570B2 (en) | Method and apparatus for managing data recovery of distributed storage system | |
US8001104B2 (en) | Method, system and program for storing and using metadata in multiple storage locations | |
JP4690076B2 (ja) | 項目収束(すなわち、データ収束)を施行するための競合解決を伝播するシステムおよび方法 | |
WO2019047480A1 (zh) | 程序更新方法、计算机可读存储介质、终端设备及装置 | |
US7133984B1 (en) | Method and system for migrating data | |
KR20120063455A (ko) | 펌웨어 업데이트 장치 및 방법 | |
JP2010033287A (ja) | ストレージサブシステム及びこれを用いたデータ検証方法 | |
TWI778811B (zh) | 升級方法,電腦系統和遠端升級設備 | |
KR20080080399A (ko) | 계층적이고 세그먼트화된 순환 중복 검사(crc)에 의한원격 파일 수리 | |
US8938662B2 (en) | Hamming radius separated deduplication links | |
JP2002023966A (ja) | 転送データを冗長化したディスクシステム | |
US20230306041A1 (en) | Asynchronous Data Replication in a Storage Network | |
TWI823599B (zh) | 韌體更新方法、電子裝置及伺服器 | |
US10664346B2 (en) | Parity log with by-pass | |
CN110287164B (zh) | 一种数据恢复方法、装置及计算机设备 | |
CN115955488A (zh) | 基于副本冗余的分布式存储副本跨机房放置方法与装置 | |
JP2001142650A (ja) | アレイディスク制御方法及び装置 | |
CN114443060A (zh) | 一种操作系统部署方法及系统 | |
US10706169B1 (en) | Quarantining storage objects using a quarantine list | |
CN111124510A (zh) | 一种bios可选双镜像启动方法和设备 | |
US10942665B2 (en) | Efficient move and copy | |
US20110154167A1 (en) | Optimizing raid migration performance | |
CN113553090B (zh) | 客户端应用程序的更新控制方法及装置 |