TWI814634B - 資料儲存裝置與韌體更新方法 - Google Patents

資料儲存裝置與韌體更新方法 Download PDF

Info

Publication number
TWI814634B
TWI814634B TW111142227A TW111142227A TWI814634B TW I814634 B TWI814634 B TW I814634B TW 111142227 A TW111142227 A TW 111142227A TW 111142227 A TW111142227 A TW 111142227A TW I814634 B TWI814634 B TW I814634B
Authority
TW
Taiwan
Prior art keywords
firmware
data storage
storage device
version number
value
Prior art date
Application number
TW111142227A
Other languages
English (en)
Other versions
TW202420071A (zh
Inventor
王德凱
Original Assignee
慧榮科技股份有限公司
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 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Priority to TW111142227A priority Critical patent/TWI814634B/zh
Priority to CN202211446655.2A priority patent/CN117992082A/zh
Priority to US18/218,600 priority patent/US20240152347A1/en
Application granted granted Critical
Publication of TWI814634B publication Critical patent/TWI814634B/zh
Publication of TW202420071A publication Critical patent/TW202420071A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一種資料儲存裝置包括一記憶體裝置與一記憶體控制器。記憶體控制器執行第一韌體,於第一韌體之運行中鎖定指標設定為第一數值,並且依序接收第一韌體更新指令與第二韌體更新指令。響應於第一韌體更新指令,記憶體控制器接收第二韌體之檔案。若第二韌體之版本號碼為特殊版本號碼,記憶體控制器將鎖定指標設定為第二數值。響應於第二韌體更新指令,記憶體控制器接收第三韌體之檔案。若鎖定指標是否被設定為第二數值,記憶體控制器執行一韌體更新程序,以第三韌體替換該第一韌體。

Description

資料儲存裝置與韌體更新方法
本發明係關於一種韌體更新方法,特別是一種可保護性地更新資料儲存裝置之韌體的韌體更新方法。
隨著資料儲存裝置的科技在近幾年快速地成長,許多資料儲存裝置,如符合安全數位(Secure Digital,縮寫為SD)/多媒體卡(Multi Media Card,縮寫為MMC)規格、複合式快閃記憶體(Compact flash,縮寫為CF)規格、記憶條(Memory Stick,縮寫為MS)規格與極數位(Extreme Digital,縮寫為XD)規格的記憶卡、固態硬碟、嵌入式多媒體記憶卡(embedded Multi Media Card,縮寫為eMMC)以及通用快閃記憶體儲存(Universal Flash Storage,縮寫為UFS)已經廣泛地被應用在多種用途上。
一般而言,對於相同的資料儲存裝置,可依照不同的需求開發出不同用途的韌體,例如,偵錯用的韌體、驗證用的韌體、以及於資料儲存裝置可實際作為產品進行量產時所需的韌體。不同用途的韌體通常會給予不同的標籤作為區隔,代表這些韌體具有不同的屬性。
為了避免產品使用者不當地更新資料儲存裝置的韌體,資料儲存裝置通常會設置保護機制,禁止正在運作中的韌體被更新為不同屬性的韌體或者 版本較舊的韌體。然而,實際應用上依舊存在需要將正在運作中的韌體替換為不同屬性的韌體的需求。例如,於資料儲存裝置的開發過程中,若發生錯誤,會需要將正在運作中的韌體,其可能是為產品量產所設計的韌體,更新為偵錯用的韌體,以便進行偵錯。而在保護機制的限制下,僅能透過繁瑣的方式將正在運作中的韌體替換為不同屬性的韌體。例如,以燒錄的方式將韌體寫入,讓不同屬性的韌體覆蓋原始的韌體。
為了使資料儲存裝置的韌體更新更具彈性,且同時顧及保護機制的必要性,需要一種新穎的韌體更新機制。
本發明之一目的在於提供一種可保護性地更新資料儲存裝置之韌體的韌體更新方法,資料儲存裝置的韌體更新更具彈性,且同時顧及保護機制的必要性。
根據本發明之一實施例,一種資料儲存裝置包括一記憶體裝置與一記憶體控制器。記憶體控制器耦接記憶體裝置,用以存取記憶體裝置,記憶體控制器執行第一韌體,於第一韌體之運行中維護一鎖定指標並將鎖定指標設定為第一數值,並且依序接收第一韌體更新指令與第二韌體更新指令。響應於第一韌體更新指令,記憶體控制器接收第二韌體之檔案,並且判斷第二韌體之版本號碼是否為特殊版本號碼,當第二韌體之版本號碼為特殊版本號碼時,記憶體控制器將鎖定指標設定為第二數值。響應於第二韌體更新指令,記憶體控制器接收第三韌體之檔案,並且判斷鎖定指標是否被設定為第二數值,當鎖定指標被設定為第二數值時,記憶體控制器執行一韌體更新程序,並且於韌體更新程序中以第三韌體替換該第一韌體。
根據本發明之一實施例,一種韌體更新方法,用以保護性地更新資 料儲存裝置之韌體,包括:於資料儲存裝置上電後執行第一韌體;以及依序接收第一韌體更新指令與第二韌體更新指令。執行第一韌體之步驟更包括:於第一韌體之運行中維護一鎖定指標並將鎖定指標設定為第一數值。響應於第一韌體更新指令之接收,韌體更新方法更包括:接收第二韌體之檔案,並且判斷第二韌體之版本號碼是否為特殊版本號碼;以及當該第二韌體之版本號碼為特殊版本號碼時,將鎖定指標設定為第二數值。響應於第二韌體更新指令之接收,韌體更新方法更包括:接收第三韌體之檔案;判斷鎖定指標是否被設定為第二數值;以及當鎖定指標被設定為第二數值時,執行一韌體更新程序,並且於韌體更新程序中以第三韌體替換第一韌體。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:記憶體介面
116:緩衝記憶體
118:主機介面
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的方塊圖範例。
第2圖係顯示根據本發明之一實施例所述之可保護性地更新資料儲存裝置之韌體的韌體更新方法流程圖範例。
第3圖係顯示根據本發明之一實施例所述之可保護性地更新資料儲存裝置之韌體的韌體更新方法流程圖範例。
第4圖係顯示根據本發明之一實施例所述之於主機裝置與資料儲存裝置之間透過主機介面傳遞韌體更新指令以及對應之韌體檔案之範例訊息流。
第5圖係顯示根據本發明之一實施例所述之詳細的韌體更新方法流程圖範例。
第6圖係顯示根據本發明之另一實施例所述之詳細的韌體更新方法流程圖範例。
在下文中,描述了許多具體細節以提供對本發明實施例的透徹理解。然而,本領域技術人員仍將理解如何在缺少一個或多個具體細節或依賴於其他方法、元件或材料的情況下實施本發明。在其他情況下,未詳細示出或描述公知的結構、材料或操作,以避免模糊本發明的主要概念。
在整個說明書中對「一實施例」或「一範例」的引用意味著結合該實施例或範例所描述的特定特徵、結構或特性係包括於本發明之多個實施例的至少一個實施例中。因此,貫穿本說明書在各個地方出現的短語「於本發明之一實施例中」、「根據本發明之一實施例」、「於一範例中」或「根據本發明之一範例」不一定都指到相同的實施例或範例。此外,特定特徵、結構或特性可以在一個或多個實施例或範例中以任何合適的組合和/或子組合進行結合。
此外,為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出本發明之具體實施例,並配合所附圖式,作詳細說明如下。目的在於說明本發明之精神而非用以限定本發明之保護範圍,應理解下列實施例可經由軟體、硬體、韌體、或上述任意組合來實現。
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的方塊圖範例。資料儲存裝置100可包括一記憶體裝置120與一記憶體控制器110。記憶體控制器110用以存取(Access)記憶體裝置120及控制記憶體裝置120之運作。記憶體裝置120可為一非揮發性(non-volatile,縮寫為NV)記憶體裝置(例如,一快閃記憶體(flash memory)),並且可包括一或多個記憶元件(例如,一或多個快閃記憶體晶粒、一或多個快閃記憶體晶片、或其他類似元件)。
資料儲存裝置100可耦接至一主機裝置130。主機裝置130可至少包括一處理器、一電源電路、以及至少一隨機存取記憶體(Random Access Memory,縮寫為RAM),例如至少一動態隨機存取記憶體(Dynamic RAM,縮寫為 DRAM)、至少一靜態隨機存取記憶體(Static RAM,縮寫為SRAM)等(以上未示於第1圖)。處理器與隨機存取記憶體可透過一匯流排彼此相互連接,並且可耦接至電源電路以取得電源。處理器可控制主機裝置130之運作。電源電路可將電源供應至處理器、隨機存取記憶體以及資料儲存裝置100,例如輸出一或多個驅動電壓至資料儲存裝置100。資料儲存裝置100可自主機裝置130取得所述驅動電壓作為資料儲存裝置100的電源,並且為主機裝置130提供儲存空間。
根據本發明之一實施例,記憶體控制器110可包括一微處理器112、一唯讀記憶體(Read Only Memory,縮寫為ROM)112M、一記憶體介面114、一緩衝記憶體116、與一主機介面118。唯讀記憶體112M係用以儲存程式碼112C。而微處理器112則用來執行程式碼112C以控制對記憶體裝置120之存取操作。程式碼112C可包括一或多個程式模組,例如啟動載入(boot loader)程式碼。當資料儲存裝置100自主機裝置130取得電源時,微處理器112可藉由執行程式碼112C執行資料儲存裝置100之一初始化程序。於初始化程序中,微處理器112可自記憶體裝置120載入一組系統內編程(In-System Programming,縮寫為ISP)程式碼(未示於第1圖)。微處理器112可執行該組系統內編程程式碼,使得資料儲存裝置100可具備各種功能。根據本發明之一實施例,該組系統內編程程式碼可包括,但不限於:一或多個與記憶體存取(例如,讀取、寫入與抹除)相關的程式模組,例如一讀取操作模組、一查找表格模組、一損耗均衡(wear leveling)模組、一讀取刷新(read refresh)模組、一讀取回收(read reclaim)模組、一垃圾回收模組、一非預期斷電恢復(Sudden Power Off Recovery,縮寫為SPOR)模組、以及一不可更正錯誤更正碼(Uncorrectable Error Correction Code,縮寫為UECC)模組,其分別被提供用以執行對應之讀取、查找表格、損耗均衡、讀取刷新、讀取回收、垃圾回收、非預期斷電恢復以及對偵測到的UECC錯誤進行錯誤處理等操作。
記憶體介面114包含了一編碼器132以及一解碼器134,其中編碼器 132用來對需被寫入記憶體裝置120的資料進行編碼,例如執行錯誤更正碼(ECC)編碼,而解碼器134用來對從記憶體裝置120所讀出的資料進行解碼。
於典型狀況下,記憶體裝置120包含了多個記憶元件,例如多個快閃記憶體晶粒或多個快閃記憶體晶片,各記憶元件可包含複數個記憶體區塊(Block)。記憶體控制器110對記憶體裝置120進行抹除資料運作係以區塊為單位來進行。另外,一記憶體區塊可記錄(包含)特定數量的資料頁(Page),例如,實體資料頁,其中記憶體控制器110對記憶體裝置120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用記憶體介面114來控制記憶體裝置120之存取運作(尤其是對至少一記憶體區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用主機介面118來與主機裝置130溝通。
在一實施例中,記憶體控制器110透過主機介面118並使用一標準通訊協定與主機裝置130溝通。舉例而言,上述之標準通訊協定包含(但不限於):通用序列匯流排(Universal Serial Bus,縮寫為USB)標準、SD介面標準、超高速一代(Ultra High Speed-I,縮寫為UHS-I)介面標準、超高速二代(Ultra High Speed-II,縮寫為UHS-II)介面標準、CF介面標準、MMC介面標準、eMMC介面標準、UFS介面標準、高技術組態(Advanced Technology Attachment,縮寫為ATA)標準、序列高技術組態(Serial ATA,縮寫為SATA)標準、快捷外設互聯標準(Peripheral Component Interconnect Express,縮寫為PCI-E)標準、並列先進附件(Parallel Advanced Technology Attachment,縮寫為PATA)標準等。
在一實施例中,緩衝記憶體116係以隨機存取記憶體來實施。例如,緩衝記憶體116可以是靜態隨機存取記憶體,但本發明亦不限於此。於其他實施例中,緩衝記憶體116可以是動態隨機存取記憶體。
在一實施例中,資料儲存裝置100可以是可攜式記憶體裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡),且主機裝置130為一可與資料儲存裝置連接的電子裝置,例如手機、筆記型電腦、桌上型電腦...等等。而在另一實施例中,資料儲存裝置100可以是固態硬碟或符合UFS或eMMC規格之嵌入式儲存裝置,並且可被設置在一電子裝置中,例如設置在手機、筆記型電腦、桌上型電腦之中,而此時主機裝置130可以是該電子裝置的一處理器。
主機裝置130可對資料儲存裝置100發出指令,例如,讀取指令或寫入指令,用以存取記憶體裝置120所儲存之資料,或者主機裝置130可對資料儲存裝置100發出指令以進一步控制、管理資料儲存裝置100。
如上所述,資料儲存裝置100通常會設置保護機制,禁止正在運作中的韌體被更新為不同屬性的韌體或者版本較舊的韌體。然而,保護機制將限制韌體更新的彈性。為了使資料儲存裝置的韌體更新更具彈性,且同時顧及保護機制的必要性,需要一種新穎的韌體更新方法,用以保護性地更新資料儲存裝置100之韌體。
第2圖係顯示根據本發明之一實施例所述之可保護性地更新資料儲存裝置之韌體的韌體更新方法流程圖範例。本發明所提出之韌體更新方法可包括由記憶體控制器110(例如,記憶體控制器110之微處理器112)執行的以下步驟:
步驟S202:於資料儲存裝置上電後執行第一韌體。根據本發明之一實施例,記憶體控制器110可於第一韌體之運行中維護一鎖定指標,並將鎖定指標設定為第一數值,代表目前資料儲存裝置的韌體更新狀態被設定為鎖定狀態。一般而言,鎖定狀態為預設的狀態。鎖定指標之設定值可被儲存於記憶體裝置120,使得資料儲存裝置100於重新啟動前的所設定的數值可被保留。
步驟S204:接收一韌體更新指令,並且響應於韌體更新指令之接收,接收一第二韌體之檔案。
步驟S206:判斷第二韌體之一版本號碼是否為一特殊版本號碼。當第二韌體之版本號碼為特殊版本號碼時,執行步驟S208。當第二韌體之版本號碼並非為特殊版本號碼時,執行步驟S210。
步驟S208:將鎖定指標設定(修改)為不同於第一數值之第二數值,代表目前資料儲存裝置的韌體更新狀態被設定為未鎖定狀態(即,解鎖狀態)。
步驟S210:判斷鎖定指標是否被設定為第二數值。當鎖定指標被設定為第二數值時,執行步驟S212。當鎖定指標未被設定為第二數值時,執行步驟S214。
步驟S212:執行未鎖定的韌體更新程序。
步驟S214:執行鎖定的韌體更新程序。
根據本發明之一實施例,當第二韌體之版本號碼被設定為特殊版本號碼時,第二韌體為一橋接韌體,並且於本發明之一實施例中,橋接韌體之檔案可僅包括特殊版本號碼之資訊與虛設(dummy)資料。換言之,於本發明之一實施例中,橋接韌體可以是一虛設的韌體,其並不包括真實的韌體程式碼,橋接韌體所帶的有效資訊可僅包含特殊版本號碼。根據本發明之一實施例,特殊版本號碼可以是一特定字串、或者是具有一特定圖樣的二進制(binary)資料。
此外,根據本發明之一實施例,於響應於第二韌體之版本號碼為特殊版本號碼之判斷(或者,也可等同於響應於橋接韌體的接收),記憶體控制器110可將第一韌體之一狀態自一一般狀態修改為一橋接狀態,其中一般狀態係對應於前述鎖定狀態,代表目前資料儲存裝置的韌體更新狀態被設定為鎖定狀態,橋接狀態係對應於前述未鎖定狀態(即,解鎖狀態),代表目前資料儲存裝置的韌體更新狀態被設定為未鎖定狀態(解鎖狀態)。
第2圖顯示出本發明所提出之的韌體更新方法中利用橋接韌體切換資料儲存裝置的韌體更新狀態的概念流程,並藉此區分出鎖定的韌體更新程序 與未鎖定的韌體更新程序兩種不同的韌體更新操作(以下將做更詳細的介紹)。而於本發明之實施例中,資料儲存裝置100可於第一韌體之運行中依序接收至少兩個韌體更新指令,其中的第一韌體更新指令用於利用橋接韌體改變資料儲存裝置的韌體更新狀態,第二個韌體更新指令用於實際執行對應的韌體更新操作。
第3圖係顯示根據本發明之一實施例所述之可保護性地更新資料儲存裝置之韌體的韌體更新方法流程圖範例。本發明所提出之韌體更新方法可包括由記憶體控制器110(例如,記憶體控制器110之微處理器112)執行的以下步驟:
步驟S302:於資料儲存裝置上電後執行第一韌體。同樣地,根據本發明之一實施例,記憶體控制器110可於第一韌體之運行中維護一鎖定指標,並將鎖定指標設定為第一數值,代表目前資料儲存裝置的韌體更新狀態被設定為鎖定狀態,其中鎖定狀態為預設的狀態,並且鎖定指標之設定值可被儲存於記憶體裝置120。
步驟S304:接收一韌體更新指令,並且響應於韌體更新指令之接收,接收對應的韌體檔案。此時,韌體更新指令可以是第一韌體更新指令,接收之韌體檔案可以是第二韌體之檔案。
步驟S306:判斷接收到的韌體之一版本號碼是否為一特殊版本號碼。當接收到的韌體之版本號碼為特殊版本號碼時,執行步驟S308。當接收到的韌體之版本號碼並非為特殊版本號碼時,執行步驟S310。
步驟S308:將鎖定指標設定(修改)為不同於第一數值之第二數值,代表目前資料儲存裝置的韌體更新狀態被設定為未鎖定狀態(即,解鎖狀態)。於修改鎖定指標後,對應於第一韌體更新指令的操作已完成,微處理器112可返回步驟S302,繼續執行第一韌體。
於第一韌體之運行中,記憶體控制器110可再次接收韌體更新指令,即,進入步驟S304,並且響應於韌體更新指令之接收,接收對應的韌體檔案。 此時,韌體更新指令可以是第二韌體更新指令,接收之韌體檔案可以是第三韌體之檔案,並且第三韌體與第二韌體不同。
於正確的韌體更新操作中,第三韌體會是實際要被主機裝置130更新至資料儲存裝置100之韌體,因此,第三韌體的版本號碼並不會被設定為特殊版本號碼,而是正常的版本號碼,於步驟S306中的判斷結果為否,執行步驟S310。
步驟S310:判斷鎖定指標是否被設定為第二數值。當鎖定指標被設定為第二數值時,執行步驟S312。當鎖定指標未被設定為第二數值時,執行步驟S314。
步驟S312:執行未鎖定的韌體更新程序,並且於未鎖定的韌體更新程序中直接以第三韌體替換第一韌體。
步驟S314:執行鎖定的韌體更新程序。於鎖定的韌體更新程序中,記憶體控制器110將會進一步檢查該第三韌體之版本號碼以判斷第三韌體是否符合一既定規則。當第三韌體符合既定規則時,記憶體控制器110才會以第三韌體替換第一韌體,當第三韌體不符合既定規則時,記憶體控制器110不以第三韌體替換第一韌體。即,當判斷當第三韌體不符合既定規則時,第一韌體不會被更新。
根據本發明之一實施例,韌體更新指令可以是UFS所定義的現場韌體更新(field firmware update,縮寫FFU)指令,並且可由寫入緩衝指令(write buffer command)實施。例如,於本發明之一實施例中,寫入緩衝指令之一模式(Mode)欄位可被設定為一特定數值,例如,0xE,代表此寫入緩衝指令是用於執行FFU。
此外,根據本發明之一實施例,主機裝置130可透過主機介面118將寫入緩衝指令(即,前述之韌體更新指令)以及對應之韌體檔案傳送給記憶體控制器110。
第4圖係顯示根據本發明之一實施例所述之於主機裝置130與資料儲 存裝置100之間透過主機介面118傳遞韌體更新指令以及對應之韌體檔案之範例訊息流。主機裝置130透過主機介面118傳遞寫入緩衝指令給資料儲存裝置100,其中寫入緩衝指令的模式欄位被設定為特定數值(例如,0xE),代表此寫入緩衝指令是用於執行FFU。響應於用於FFU之寫入緩衝指令的接收,資料儲存裝置100透過主機介面118回傳準備發送(Ready to Transfer)的UFS通訊協定資訊單元(UFS Protocol Information Unit,縮寫UPIU)給主機裝置130,爾後主機裝置130可開始傳送資料輸出(DATA OUT)的UPIU給資料儲存裝置100,用以將欲更新的韌體檔案提供給資料儲存裝置100。需注意的是,若無法僅利用一個UFS通訊協定資訊單元將完整的韌體檔案傳送給資料儲存裝置100,資料儲存裝置100可於成功接收到資料輸出(DATA OUT)的UPIU後,再回應回傳準備發送(Ready to Transfer)的UPIU。因此,準備發送(Ready to Transfer)的UPIU與資料輸出(DATA OUT)的UPIU的訊息傳送實際上可被執行多次,並且於第4圖中以虛線框起的循環(loop)作為反覆被進行的示意。於資料儲存裝置100接收完韌體檔案的最後一部分後,將回傳回應(Response)的UPIU給主機裝置130。
根據本發明之一實施例,前述於鎖定的韌體更新程序中所使用的既定規則可以是用於替換的韌體(即,新的韌體)與要被替換的韌體(即,運行中的韌體)必須為具有相同標籤(即,相同屬性)的韌體。根據本發明之另一實施例,前述於鎖定的韌體更新程序中所使用的既定規則可以是用於替換的韌體(即,新的韌體)與要被替換的韌體(即,運行中的韌體)必須為具有相同標籤(即,相同屬性)的韌體,且新的韌體之版本必須晚於運行中的韌體之版本(例如,具有數值較大的版本編號)。
另一方面,根據本發明之一實施例,於前述未鎖定的韌體更新程序中,韌體的更新無須再考量前述既定規則。因此,用於替換的韌體(即,新的韌體)與要被替換的韌體(即,運行中的韌體)可以是具不同標籤(即,不同屬性)的韌 體,也可以是具有相同標籤(即,相同屬性)的韌體。此外,新的韌體之版本無須晚於運行中的韌體之版本(例如,兩者可以是不同版本的韌體,且新的韌體之版本可早於、等於或晚於運行中的韌體之版本)。
第5圖係顯示根據本發明之一實施例所述之詳細的韌體更新方法流程圖範例。本發明所提出之韌體更新方法可包括由記憶體控制器110(例如,記憶體控制器110之微處理器112)執行的以下步驟:
步驟S502:於資料儲存裝置上電後執行第一韌體。同樣地,記憶體控制器110可於第一韌體之運行中維護一鎖定指標,並且鎖定指標可被預設為第一數值,代表目前資料儲存裝置的韌體更新狀態被設定為鎖定狀態。步驟S502之執行代表目前微處理器112運行在第一韌體的主迴圈中。當微處理器112接收到任一指令,可跳出主迴圈,執行對應的操作。
步驟S504:判斷接收到的指令是否為一韌體更新指令。當微處理器112接收到韌體更新指令,可進入步驟S506,執行對應的操作。若接收到的指令並非韌體更新指令,可返回步驟S502繼續運行在第一韌體的主迴圈中。
步驟S506:開始現場韌體更新(FFU)程序,並且響應於韌體更新指令之接收,接收對應的韌體檔案。
步驟S508:判斷接收到的韌體之版本號碼是否為特殊版本號碼,以判斷接收到的韌體是否為橋接韌體。當接收到的韌體之版本號碼為特殊版本號碼時,執行步驟S510。當接收到的韌體之版本號碼並非為特殊版本號碼時,執行步驟S512。
步驟S510:將鎖定指標設定(修改)為不同於第一數值之第二數值,代表目前資料儲存裝置的韌體更新狀態被設定為未鎖定狀態(即,解鎖狀態)。即,資料儲存裝置的韌體更新保護機制已被解鎖。於修改鎖定指標後,對應於此韌體更新指令的操作已完成,微處理器112可返回步驟S502,繼續運行在第一韌體 的主迴圈中等待下一個韌體更新指令。
步驟S512:判斷鎖定指標是否被設定為第二數值。當鎖定指標被設定為第二數值時,執行步驟S518,意味著資料儲存裝置的韌體更新保護機制已被解鎖,微處理器112可執行未鎖定的韌體更新程序。當鎖定指標未被設定為第二數值時,執行步驟S514,意味著資料儲存裝置的韌體更新保護機制仍在運作,微處理器112必須執行鎖定的韌體更新程序。而在橋接韌體所對應的FFU程序結束且返回步驟S502後,於微處理器112接收到下一個實際用於執行韌體更新的韌體更新指令時,步驟S508的判斷結果為否,因此流程會進入步驟S512。
步驟S514:比對接收到的韌體之版本號碼與第一韌體之版本號碼,以便於步驟S516中進一步判斷接收到的韌體是否符合前述既定規則。
步驟S516:判斷接收到的韌體是否符合既定規則。若符合既定規則,執行步驟S518,意味著執行微處理器112可以接收到的韌體替換運行中的第一韌體。若不符合既定規則,執行步驟S520,意味著執行微處理器112不允許以接收到的韌體替換運行中的第一韌體。
步驟S518:以接收到的韌體替換第一韌體。更新韌體的操作除了將接收到的韌體程式碼寫入資料儲存裝置100內之外,還可包含設定對應之參數,使得下次重新啟動時,微處理器112會執行新的韌體程式碼。此外,於更新韌體的操作完成後,資料儲存裝置100可以軟體或硬體控制的方式使資料儲存裝置100重新啟動。
步驟S520:傳送回應訊息給主機裝置。當判斷接收到的韌體不符合既定規則時,微處理器112不允許以接收到的韌體替換運行中的第一韌體,因此微處理器112可回傳更新失敗的回應訊息給主機裝置,以通知韌體更新失敗的結果。另一方面,當微處理器112於步驟S518中執行完韌體更新後進入步驟S520,則可回傳更新成功的回應訊息給主機裝置,以通知韌體更新成功的結果。
於本發明之一實施例中,為了避免資料儲存裝置100在橋接韌體所對應的FFU程序結束後始終未能接收到下一個實際用於執行韌體更新的韌體更新指令,記憶體控制器110可更紀錄資料儲存裝置100之一重置次數,並且於每次上電後,判斷重置次數是否大於一臨界值。當目前的重置次數大於臨界值時,記憶體控制器110可藉由將第一韌體之狀態設定為一般狀態,並且將鎖定指標設定回第一數值,使資料儲存裝置的韌體更新狀態被恢復為預設的鎖定狀態。
第6圖係顯示根據本發明之另一實施例所述之詳細的韌體更新方法流程圖範例。本發明所提出之韌體更新方法可包括由記憶體控制器110(例如,記憶體控制器110之微處理器112)執行的以下步驟:
步驟S602:於資料儲存裝置上電後執行第一韌體。同樣地,記憶體控制器110可於第一韌體之運行中維護一鎖定指標,並且鎖定指標可預設為第一數值,代表目前資料儲存裝置的韌體更新狀態被設定為鎖定狀態。步驟S602之執行代表目前微處理器112運行在第一韌體的主迴圈中。當微處理器112接收到任一指令,可跳出主迴圈,執行對應的操作。
步驟S624:判斷目前第一韌體之一狀態是否被設定為一橋接狀態。若是,執行步驟S626。若否,執行步驟S604。
步驟S626:目前資料儲存裝置的重置次數是否大於臨界值。若是,執行行步驟S628。若否,執行步驟S604。
步驟S628:將第一韌體之狀態設定為一般狀態,並且將鎖定指標設定回第一數值,使資料儲存裝置的韌體更新狀態被恢復為預設的鎖定狀態。接著,微處理器112可返回步驟S602繼續運行在第一韌體的主迴圈中。需注意的是,於本發明之一實施例中,微處理器112可於適當的時機將其所記錄的資料儲存裝置的重置次數歸零。例如,微處理器112可於步驟S628中將重置次數歸零。
步驟S604:判斷接收到的指令是否接收一韌體更新指令。當微處理 器112接收到韌體更新指令,可進入步驟S606,執行對應的操作。若接收到的指令並非韌體更新指令,可返回步驟S602繼續運行在第一韌體的主迴圈中。
步驟S606:開始現場韌體更新(FFU)程序,並且響應於韌體更新指令之接收,接收對應的韌體檔案。
步驟S608:判斷接收到的韌體之版本號碼是否為特殊版本號碼,以判斷接收到的韌體是否為橋接韌體。當接收到的韌體之版本號碼為特殊版本號碼時,執行步驟S610。當接收到的韌體之版本號碼並非為特殊版本號碼時,執行步驟S612。
步驟S610:將鎖定指標設定(修改)為不同於第一數值之第二數值,代表目前資料儲存裝置的韌體更新狀態被設定為未鎖定狀態(即,解鎖狀態)。即,資料儲存裝置的韌體更新保護機制已被解鎖。
步驟S622:將第一韌體之狀態設定為橋接狀態。於修改鎖定指標且設定橋接狀態後,對應於此韌體更新指令的操作已完成,微處理器112可返回步驟S602,繼續運行在第一韌體的主迴圈中等待下一個韌體更新指令。
步驟S612:判斷鎖定指標是否被設定為第二數值。當鎖定指標被設定為第二數值時,執行步驟S618,意味著資料儲存裝置的韌體更新保護機制已被解鎖,微處理器112可執行未鎖定的韌體更新程序。當鎖定指標未被設定為第二數值時,執行步驟S614,意味著資料儲存裝置的韌體更新保護機制仍在運作,微處理器112必須執行鎖定的韌體更新程序。而在橋接韌體所對應的FFU程序結束且返回步驟S602後,於微處理器112接收到下一個實際用於執行韌體更新的韌體更新指令時,步驟S608的判斷結果為否,因此流程會進入步驟S612。
步驟S614:比對接收到的韌體之版本號碼與第一韌體之版本號碼,以於步驟S616中進一步判斷接收到的韌體是否符合前述既定規則。
步驟S616:判斷接收到的韌體是否符合前述既定規則。若符合既定 規則,執行步驟S618,意味著執行微處理器112可以接收到的韌體替換運行中的第一韌體。若不符合既定規則,執行步驟S620,意味著執行微處理器112不允許以接收到的韌體替換運行中的第一韌體。
步驟S618:以接收到的韌體替換第一韌體。更新韌體的操作除了將接收到的韌體程式碼寫入資料儲存裝置100內之外,還可包含設定對應之參數,使得下次重新啟動時,微處理器112會執行新的韌體程式碼。此外,於更新韌體的操作完成後,資料儲存裝置100可以軟體或硬體控制的方式使資料儲存裝置100重新啟動。
步驟S620:傳送回應訊息給主機裝置。當判斷接收到的韌體不符合既定規則時,微處理器112不允許以接收到的韌體替換運行中的第一韌體,因此微處理器112可回傳更新失敗的回應訊息給主機裝置,以通知韌體更新失敗的結果。另一方面,當微處理器112於步驟S618中執行完韌體更新後進入步驟S620,則可回傳更新成功的回應訊息給主機裝置,以通知韌體更新成功的結果。
於本發明之實施例中,利用橋接韌體切換資料儲存裝置的韌體更新狀態,以解鎖保護機制的限制。由於橋接韌體為特殊設計的韌體,其具有韌體檔案的型態,因此,主機裝置僅需透過既有的韌體更新指令便可簡單地解鎖保護機制的限制。而於本發明之實施例中,資料儲存裝置100可於原韌體之運行中依序接收至少兩個韌體更新指令,其中的第一韌體更新指令用於利用橋接韌體改變資料儲存裝置的韌體更新狀態限制,第二個韌體更新指令用於實際執行對應的韌體更新操作。當資料儲存裝置100響應於第二個韌體更新指令執行對應的韌體更新操作,以新的韌體替換原韌體後,由於新的韌體仍會將其所維護的鎖定指標預設為鎖定狀態,因此,於韌體更新操作後,保護機制會再度被致能,因此資料儲存裝置的韌體更新狀態可再度被恢復為鎖定狀態。如此一來,資料儲存裝置的韌體更新相較於既有技術更具彈性,且同時也顧及保護機制的必要 性,達到了保護性地更新資料儲存裝置之韌體的結果。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:記憶體介面
116:緩衝記憶體
118:主機介面
120:記憶體裝置
130:主機裝置
132:編碼器
134:解碼器

Claims (12)

  1. 一種資料儲存裝置,包括:一記憶體裝置;以及一記憶體控制器,耦接該記憶體裝置,用以存取該記憶體裝置,該記憶體控制器執行一第一韌體,於該第一韌體之運行中維護一鎖定指標並將該鎖定指標設定為一第一數值,並且依序接收一第一韌體更新指令與一第二韌體更新指令,其中響應於該第一韌體更新指令,該記憶體控制器接收一第二韌體之檔案,並且判斷該第二韌體之一版本號碼是否為一特殊版本號碼,當該第二韌體之該版本號碼為該特殊版本號碼時,該記憶體控制器將該鎖定指標設定為一第二數值,以及響應於該第二韌體更新指令,該記憶體控制器接收一第三韌體之檔案,並且判斷該鎖定指標是否被設定為該第二數值,當該鎖定指標被設定為該第二數值時,該記憶體控制器執行一韌體更新程序,並且於該韌體更新程序中以該第三韌體替換該第一韌體,其中當該第二韌體之該版本號碼被設定為該特殊版本號碼時,該第二韌體為一橋接韌體,並且該記憶體控制器更響應於該第二韌體之該版本號碼為該特殊版本號碼之判斷,將該第一韌體之一狀態自一一般狀態修改為一橋接狀態。
  2. 如申請專利範圍第1項所述之資料儲存裝置,其中當該第二韌體為一橋接韌體時,該第二韌體之檔案包括該特殊版本號碼之資訊與虛設(dummy)資料。
  3. 如申請專利範圍第1項所述之資料儲存裝置,其中該記憶體控制器 更紀錄一重置次數,並且判斷該重置次數是否大於一臨界值,當該重置次數大於該臨界值時,該記憶體控制器將該第一韌體之該狀態設定為該一般狀態,並且將該鎖定指標設定為該第一數值。
  4. 如申請專利範圍第1項所述之資料儲存裝置,其中該第一韌體與該第三韌體為不同屬性或者相同屬性但不同版本的韌體。
  5. 如申請專利範圍第4項所述之資料儲存裝置,其中當該第一韌體與該第三韌體為相同屬性但不同版本的韌體時,該第三韌體之版本早於該第一韌體之版本。
  6. 如申請專利範圍第1項所述之資料儲存裝置,其中該第一韌體更新指令、該第二韌體更新指令、該第二韌體之檔案與該第三韌體之檔案係透過一主機介面接收自一主機裝置。
  7. 一種韌體更新方法,適用於一資料儲存裝置,用以保護性地更新該資料儲存裝置之韌體,包括:於該資料儲存裝置上電後執行一第一韌體;以及依序接收一第一韌體更新指令與一第二韌體更新指令,其中執行該第一韌體之步驟更包括:於該第一韌體之運行中維護一鎖定指標並將該鎖定指標設定為一第一數值,並且其中響應於該第一韌體更新指令之接收,該方法更包括:接收一第二韌體之檔案,並且判斷該第二韌體之一版本號碼是否為一 特殊版本號碼;以及當該第二韌體之該版本號碼為該特殊版本號碼時,將該鎖定指標設定為一第二數值,並且響應於該第二韌體更新指令之接收,該方法更包括:接收一第三韌體之檔案;判斷該鎖定指標是否被設定為該第二數值;以及當該鎖定指標被設定為該第二數值時,執行一韌體更新程序,並且於該韌體更新程序中以該第三韌體替換該第一韌體,其中當該第二韌體之該版本號碼被設定為該特殊版本號碼時,該第二韌體為一橋接韌體,並且響應於該第二韌體之該版本號碼為該特殊版本號碼之判斷,該方法更包括:將該第一韌體之一狀態自一一般狀態修改為一橋接狀態。
  8. 如申請專利範圍第7項所述之方法,其中當該第二韌體為一橋接韌體時,該第二韌體之檔案包括該特殊版本號碼之資訊與虛設(dummy)資料。
  9. 如申請專利範圍第7項所述之方法,更包括:紀錄該資料儲存裝置之一重置次數;以及判斷該重置次數是否大於一臨界值,其中當該重置次數大於該臨界值時,將該第一韌體之該狀態設定為該一般狀態,並且將該鎖定指標設定為該第一數值。
  10. 如申請專利範圍第7項所述之方法,其中該第一韌體與該第三韌體為不同屬性或者相同屬性但不同版本的韌體。
  11. 如申請專利範圍第10項所述之方法,其中當該第一韌體與該第三韌體為相同屬性但不同版本的韌體時,該第三韌體之版本早於該第一韌體之版本。
  12. 如申請專利範圍第7項所述之方法,其中該第一韌體更新指令、該第二韌體更新指令、該第二韌體之檔案與該第三韌體之檔案係由一主機裝置透過一主機介面傳送至該資料儲存裝置。
TW111142227A 2022-11-04 2022-11-04 資料儲存裝置與韌體更新方法 TWI814634B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW111142227A TWI814634B (zh) 2022-11-04 2022-11-04 資料儲存裝置與韌體更新方法
CN202211446655.2A CN117992082A (zh) 2022-11-04 2022-11-18 数据储存装置与固件更新方法
US18/218,600 US20240152347A1 (en) 2022-11-04 2023-07-06 Firmware updating method and data storage device utilizing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW111142227A TWI814634B (zh) 2022-11-04 2022-11-04 資料儲存裝置與韌體更新方法

Publications (2)

Publication Number Publication Date
TWI814634B true TWI814634B (zh) 2023-09-01
TW202420071A TW202420071A (zh) 2024-05-16

Family

ID=88965887

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111142227A TWI814634B (zh) 2022-11-04 2022-11-04 資料儲存裝置與韌體更新方法

Country Status (3)

Country Link
US (1) US20240152347A1 (zh)
CN (1) CN117992082A (zh)
TW (1) TWI814634B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200502760A (en) * 2003-07-10 2005-01-16 Benq Corp Device to be updated using a disk label to update firmware and method using a disk label to update firmware
TW200643796A (en) * 2005-06-08 2006-12-16 Winbond Electronics Corp Method for updating firmware of memory card
TW201207731A (en) * 2010-08-06 2012-02-16 Universal Scient Ind Shanghai Embedded system with plural firmware and firmware updating method thereof
CN113821238A (zh) * 2021-08-02 2021-12-21 惠州Tcl移动通信有限公司 智能穿戴设备外设固件更新方法、装置、移动终端及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200502760A (en) * 2003-07-10 2005-01-16 Benq Corp Device to be updated using a disk label to update firmware and method using a disk label to update firmware
TW200643796A (en) * 2005-06-08 2006-12-16 Winbond Electronics Corp Method for updating firmware of memory card
TW201207731A (en) * 2010-08-06 2012-02-16 Universal Scient Ind Shanghai Embedded system with plural firmware and firmware updating method thereof
CN113821238A (zh) * 2021-08-02 2021-12-21 惠州Tcl移动通信有限公司 智能穿戴设备外设固件更新方法、装置、移动终端及介质

Also Published As

Publication number Publication date
CN117992082A (zh) 2024-05-07
TW202420071A (zh) 2024-05-16
US20240152347A1 (en) 2024-05-09

Similar Documents

Publication Publication Date Title
TWI622923B (zh) 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置
US9201785B2 (en) Data writing method, memory controller and memory storage apparatus
TWI515735B (zh) 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置
TWI423026B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9519436B1 (en) Memory erasing method, memory controller, and memory storage apparatus
TW201305818A (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
TWI607309B (zh) 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US8812772B2 (en) Data merging method for non-volatile memory and controller and storage apparatus using the same
CN112148533A (zh) 将数据存储在存储器系统的mlc区域中的设备和方法
TW202040370A (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
TWI509615B (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
TWI806262B (zh) 橋接裝置與資料儲存系統
CN107045890B (zh) 数据保护方法、存储器控制电路单元及存储器存储装置
US8762685B2 (en) Data writing method, memory controller and memory storage apparatus
CN112051963B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
TWI814634B (zh) 資料儲存裝置與韌體更新方法
TWI812534B (zh) 資料儲存裝置與韌體更新方法
TWI436209B (zh) 記憶體管理表處理方法、記憶體控制器與記憶體儲存裝置
CN112732199B (zh) 数据存取方法、存储器控制电路单元及存储器存储装置
CN115202933A (zh) 映射表重建方法、存储器存储装置及存储器控制电路单元
KR20230034646A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
TW201638960A (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN112965670B (zh) 主机存储器缓冲区管理方法、存储装置与控制电路单元
TWI777087B (zh) 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
CN115145488A (zh) 部分抹除管理方法、存储装置及存储器控制电路