TW202028981A - 資料儲存裝置及避免韌體失效之方法 - Google Patents
資料儲存裝置及避免韌體失效之方法 Download PDFInfo
- Publication number
- TW202028981A TW202028981A TW108101611A TW108101611A TW202028981A TW 202028981 A TW202028981 A TW 202028981A TW 108101611 A TW108101611 A TW 108101611A TW 108101611 A TW108101611 A TW 108101611A TW 202028981 A TW202028981 A TW 202028981A
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- code
- firmware
- string
- data storage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1417—Boot up procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0763—Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or 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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
Abstract
一種資料儲存裝置,其具有非揮發性記憶體以及微控制器。非揮發性記憶體具有第一區塊以及第二區塊,第一區塊儲存韌體程式碼。微控制器在執行韌體程式碼之前,將預定字串寫入第二區塊,判斷第二區塊中是否存在重複之預定字串,當第二區塊中不存在重複之預定字串時,允許執行韌體程式碼,並於韌體程式碼的執行過程中,因應前置程序成功執行完畢而將第二區塊中的預定字串抹除,以及當第二區塊中存在重複之預定字串時,不允許執行韌體程式碼。
Description
本申請主要關於資料儲存裝置,特別係有關於一種適用於資料儲存裝置的避免韌體失效(failure)之方法。
隨著電腦科技的演進,逐漸發展出各式的資料儲存裝置,其中又以記憶體為最廣受使用的儲存媒介,一般來說,依據儲存特性之別,記憶體又可區分為揮發性(volatile )記憶體與非揮發性(non-volatile )記憶體,其中揮發性記憶體所儲存的資料會在電源供應中斷後消失,而非揮發性記憶體所儲存的資料即使在斷電時依舊能夠被保存下來,只要重新供電就能夠讀取內存資料。
以非揮發性記憶體為例,其於近年來被大量使用於電子產品中,特別是可攜式電子產品(如:行動電話、數位相機、以及小型遊戲機等),用以長時間保存數位資料。目前市面上有許多種不同類型的非揮發性記憶體,包括:快閃記憶體(flash memory)、磁阻式隨機存取記憶體(Magneto-resistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式隨機存取記憶體(Resistive RAM)、以及自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM,STT-RAM)等。
在非揮發性記憶體的生產過程中,通常會藉由開卡程序將記憶體的韌體寫入,讓記憶體在啟動(boot up)程序後接著執行韌體來服務主機端的資料存取需求。然而,在某些情況下,當韌體程式有誤時,韌體的執行可能會在前置階段(可服務主機之前)就發生錯誤,讓執行程序當機在這個階段(此情況又可稱為韌體失效),導致記憶體無法使用。
為了解決這個問題,一般傳統的作法是手動對記憶體加工,把記憶體內部的電路訊號接線出來,並且將特殊的訊號線路接地,讓記憶體在啟動程序完成後不要執行韌體。然而,這種做法在執行層面上不僅難度高且效率差,不利於記憶體產品的大量生產。
因此,亟需有一種適用於資料儲存裝置的方法,能夠更有效地解決韌體失效的問題。
本申請所述之資料儲存裝置包括一非揮發性記憶體、以及一微控制器。上述非揮發性記憶體包括一第一區塊、以及一第二區塊,其中上述第一區塊儲存一韌體程式碼。上述微控制器,用以在執行上述韌體程式碼之前,將一預定字串寫入上述第二區塊,判斷上述第二區塊中是否存在重複之上述預定字串,當上述第二區塊中不存在重複之上述預定字串時,允許執行上述韌體程式碼,並於上述韌體程式碼的執行過程中,因應一前置程序成功執行完畢而將上述第二區塊中的上述預定字串抹除,以及當上述第二區塊中存在重複之上述預定字串時,不允許執行上述韌體程式碼。
在一實施例,上述前置程序包括上述韌體程式碼之一建立連結程序。
在一實施例,上述非揮發性記憶體還儲存一啟動程式碼(boot loader code),上述微控制器還從上述非揮發性記憶體載入並執行上述啟動程式碼,以及在上述啟動程式碼的執行過程中,當取得上述韌體程式碼的儲存位址時,才執行將上述預定字串寫入上述第二區塊之步驟。
在一實施例,上述微控制器還在當上述第二區塊中存在重複之上述預定字串時,進入一唯讀記憶體程式碼(ROM code)模式。
在一實施例,上述微控制器還在當上述第二區塊中存在重複之上述預定字串時,判斷是否需要進行除錯,當需要進行除錯時,允許執行上述韌體程式碼,以及當不需要進行除錯時,不允許執行上述韌體程式碼。
在一實施例,上述第二區塊為一閒置(idle)區塊。
在一實施例,將上述預定字串寫入上述第二區塊之步驟包括:從上述第二區塊之複數頁中挑選空白之一者,以及將上述預定字串寫入上述空白頁。
本申請所述之避免韌體失效之方法係適用於包括一非揮發性記憶體之一資料儲存裝置,且由上述資料儲存裝置之一微控制器所執行。上述避免韌體失效之方法包括以下步驟:在從上述非揮發性記憶體之一第一區塊載入並執行一韌體程式碼之前,將一預定字串寫入上述非揮發性記憶體之一第二區塊;判斷上述第二區塊中是否存在重複之上述預定字串;當上述第二區塊中不存在重複之上述預定字串時,允許執行上述韌體程式碼,並於上述韌體程式碼的執行過程中,因應一前置程序成功執行完畢而將上述第二區塊中的上述預定字串抹除;以及當上述第二區塊中存在重複之上述預定字串時,不允許執行上述韌體程式碼。
在一實施例,上述前置程序包括上述韌體程式碼之一建立連結程序。
在一實施例,上述避免韌體失效之方法更包括以下步驟:從上述非揮發性記憶體載入並執行一啟動程式碼;以及在上述啟動程式碼的執行過程中,當取得上述韌體程式碼的儲存位址時,才執行將上述預定字串寫入上述第二區塊之步驟。
在一實施例,上述避免韌體失效之方法更包括以下步驟:當上述第二區塊中存在重複之上述預定字串時,進入一唯讀記憶體程式碼模式。
在一實施例,上述避免韌體失效之方法更包括以下步驟:當上述第二區塊中存在重複之上述預定字串時,判斷是否需要進行除錯;當需要進行除錯時,允許執行上述韌體程式碼;以及當不需要進行除錯時,不允許執行上述韌體程式碼。
在一實施例,上述第二區塊為一閒置區塊。
在一實施例,將上述預定字串寫入上述第二區塊之步驟包括:從上述第二區塊之複數頁中挑選空白之一者;以及將上述預定字串寫入上述空白頁。
關於本申請其他附加的特徵與優點,此領域之熟習技術人士,在不脫離本申請之精神和範圍內,當可根據本案實施方法中所揭露之資料儲存裝置及避免韌體失效之方法做些許的更動與潤飾而得到。
本章節所敘述的是實施本申請之較佳方式,目的在於說明本申請之精神而非用以限定本申請之保護範圍,當可理解的是,使用於本說明書中的「包含」、「包括」等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
第1圖係根據本申請一實施例所述之電子裝置之示意圖。
電子裝置1000包括主機100以及資料儲存裝置200,其中主機100可透過一介面並使用一標準通訊協定與資料儲存裝置200溝通,以操作資料儲存裝置200進行資料讀取及寫入。舉例而言,上述之標準通訊協定包含(但不限於):通用序列匯流排(Universal Serial Bus , USB)標準、安全數位(Secure Digital, SD)介面標準、超高速一代介面標準(Ultra High Speed-I, UHS-I)、超高速二代介面標準(Ultra High Speed-II, UHS-II)、複合式快閃記憶體(Compact flash, CF)介面標準、多媒體卡(Multimedia Card, MMC)介面標準、嵌入式多媒體卡(Embedded Multimedia Card, eMMC)介面標準、通用快閃記憶體(Universal Flash Storage, UFS)介面標準、高技術組態(Advanced Technology Attachment, ATA)標準、序列高技術組態(Serial ATA, SATA) 標準、快捷外設互聯標準(Peripheral Component Interconnect Express, PCI-E)標準、並列先進附件(Parallel Advanced Technology Attachment, PATA)標準或其他適合的標準。
電子裝置1000可以是個人電腦、智慧型手機、穿戴裝置、平板電腦、以及虛擬實境設備等,而一般來說,這般電子裝置中的中央處理單元(Central Processing Unit,CPU)可被視為第1圖中操作資料儲存裝置200的主機100。
資料儲存裝置200包括快閃記憶體210以及控制單元220,其中控制單元220耦接於主機100與快閃記憶體210之間,並根據主機100所下達的指令操作快閃記憶體210。舉例而言,指令可包含:小型電腦系統介面主指令(SCSI Primary Commands,SPC)、小型電腦系統介面塊指令(SCSI Block Commands,SBC)、修剪指令(Trim command)等。
控制單元220包括微控制器221、隨機存取記憶體222、以及唯讀記憶體223。舉例來說,一安全數位(Secure Digital,SD)卡可使用512KB的靜態隨機存取記憶體(Static Random Access Memory,SRAM)來實現隨機存取記憶體222。
唯讀記憶體223係用以儲存唯讀記憶體程式碼(ROM code),唯讀記憶體程式碼可包括啟動載入器程式碼(boot loader code)及初始化程式碼(initial code)。微控制器221可載入並執行唯讀記憶體223所儲存之唯讀記憶體程式碼、快閃記憶體210所儲存之啟動程式碼(boot code)以及/或韌體程式碼,以進行運作,且運作中可利用隨機存取記憶體222進行動態資訊儲存。舉例而言,微控制器221可載入並執行初始化程式碼以指示快閃記憶體210以及寄存器(register,圖未示)進行初始化運作。此外,微控制器221可載入並執行啟動載入器程式碼以依據一預定搜尋規則從快閃記憶體210之啟動程式碼區塊池中搜尋並讀取出啟動程式碼。上述啟動程式碼、以及韌體程式碼可於資料儲存裝置200的開卡程序中分別被寫入啟動程式碼區塊池211以及系統資訊區塊池212。另外,微控制器221的運作內容還特別包括:執行本申請所述避免韌體失效之方法。
除了包括啟動程式碼之外,快閃記憶體210的空間配置還包括:啟動程式碼區塊池211、系統資訊區塊池212、備用區塊池213、以及資料區塊池214。
系統資訊區塊池212中的區塊係用以儲存系統資訊,包括快閃記憶體資訊、韌體程式碼、以及連結索引。快閃記憶體資訊可包括快閃記憶體210的基本資訊,例如:平面(plane)的數量、區塊(block)的數量、每一頁(page)的大小等。韌體程式碼可以是控制快閃記憶體210運作之程式碼。連結索引用以紀錄一根表格(root table)儲存於快閃記憶體210中的位址。其中,根表格可用以紀錄操作快閃記憶體210的各種表格的位址,例如根表格用以紀錄各個記憶體區塊之平均耗損(wear leveling)的平均耗損表格、用以紀錄各個記憶體區塊之有效物理頁數量的有效頁表格、主機-閃存(Host-to-Flash, H2F)對照表、閃存-主機(Flash-to-Host, F2H)對照表等表格儲存於快閃記憶體210中的位址,以供微控制器221於操作快閃記憶體210的過程中讀取所需的表格。
快閃記憶體資訊、韌體程式碼、以及連結索引可於資料儲存裝置200的開卡程序中分別寫入系統資訊區塊池212的獨立區塊。此外,系統資訊區塊池212還可包括一閒置(idle)區塊,用於系統資訊區塊池212中的任一其他區塊寫滿資料需要更新的時候,可藉由閒置區塊置換原來的區塊,而原來的區塊的資料再往後進行垃圾回收(garbage collection)運作時可被抹除(erase)並設定為閒置區塊(此動作可理解為區塊交換)。
備用(spare)區塊池213中的區塊可由微控制器221配置來儲存資料(例如,作為主動區塊(或稱為緩存區塊)接收主機100寫入資料、或作為垃圾回收之目標區塊),並待資料儲存完成(寫滿、或中斷不再利用)即推入資料區塊池214定義為資料區塊。
當可理解的是,第1圖所示之資料儲存裝置僅用以提供一說明之範例,並非用以限制本申請之保護範圍。舉例來說,資料儲存裝置200可包括快閃記憶體以外的其他類型的非揮發性記憶體,例如:磁阻式隨機存取記憶體、鐵電隨機存取記憶體、電阻式隨機存取記憶體、或自旋轉移力矩隨機存取記憶體,只要此非揮發性記憶體的空間配置的設定可適用本申請所述避免韌體失效之方法。
第2圖係顯示一範例區塊池之物理空間配置之示意圖。
如第2圖所示,每一區塊池(如:啟動程式碼區塊池211、系統資訊區塊池212、備用區塊池213、或資料區塊池214)的資料儲存空間可被劃分為複數個區塊(或稱物理區塊(physical block))BLK#1、BLK#2、…BLK#Z,其中Z為正整數。各物理區塊包括複數頁,或可稱為物理頁(physical page),例如:256個物理頁。
舉例來說,以系統資訊區塊池212而言,其可包括至少4個區塊,前三個區塊分別用以儲存快閃記憶體資訊、韌體程式碼、以及連結索引,另一個區塊則為閒置區塊。在一實施例,系統資訊區塊池212中的閒置區塊可被用來寫入預定字串,以用於本申請所述避免韌體失效之方法,詳細作業內容將於後續說明。
第3圖係根據本申請一實施例所述避免韌體失效之方法之流程圖。
在此實施例,避免韌體失效之方法係適用包括一非揮發性記憶體之一資料儲存裝置(如:資料儲存裝置200),並且由該資料儲存裝置之一微控制器(如:微控制器221)所執行。特別是,本申請之避免韌體失效之方法可實作為程式碼,例如,可以是唯讀記憶體程式碼、啟動程式碼、以及/或韌體程式碼的任意部分之組合。
首先,微控制器221載入並執行唯讀記憶體223所儲存之唯讀記憶體程式碼,以取得啟動程式碼的儲存位址(步驟S310)。然後,載入並執行啟動程式碼區塊池211中的啟動程式碼,以取得系統資訊區塊池212中的快閃記憶體資訊、韌體程式碼、以及連結索引的儲存位址(步驟S320)。
接續步驟S320,在啟動程式碼的執行過程中,微控制器221在一特定區塊寫入預定字串(如:POWER ON)(步驟S330)。明確來說,微控制器221可從此特定區塊之複數頁中挑選空白之一者,並且將預定字串寫入所挑選之空白頁,例如:可從頁#0開始依序挑選,如果頁#0已寫入資料,則往下挑選頁#1,如果頁#1是空白頁(沒寫入資料),則將預定字串寫入頁#1。
在一實施例,此特定區塊可以是系統資訊區塊池212中的閒置區塊。在另一實施例,此特定區塊可以是任一區塊池中的任一區塊,只要啟動程式碼紀錄有此特定區塊的儲存位址即可。
接續步驟S330,微控制器221判斷此特定區塊中是否存在重複之預定字串(步驟S340)。明確來說,微控制器221可從頁#0開始依序檢查是否有寫入預定字串,當有兩頁以上都有寫入預定字串,則表示此特定區塊中存在重複之預定字串。反之,如果只有一頁有寫入預定字串,則表示此特定區塊中不存在重複之預定字串。
接續步驟S340,當此特定區塊中存在重複之預定字串時,不允許執行韌體程式碼(步驟S350),並進入唯讀記憶體程式碼模式(ROM code mode)(步驟S360)。明確來說,唯讀記憶體程式碼模式可以是指載入並執行唯讀記憶體程式碼時的模式,也就是說,在此模式下,微控制器221會初始化快閃記憶體210以及寄存器(未繪示),並且藉由啟動載入器程式碼找到啟動程式碼,而當微控制器221執行啟動程式碼之後就不算唯讀記憶體程式碼模式。於此步驟中,微控制器221會停留在執行唯讀記憶體程式碼時的模式,於藉由啟動載入器程式碼找到啟動程式碼後,並不執行啟動程式碼。
接續步驟S340,當此特定區塊中不存在重複之預定字串時,允許載入並執行系統資訊區塊池212所儲存之韌體程式碼(步驟S370),並於韌體程式碼的執行過程中,因應前置程序成功執行完畢而將此特定區塊中的預定字串抹除(步驟S380)。
在一實施例,前置程序可包括韌體程式碼之一建立連結程序,其主要負責根據連結索引建立主機資料(Host data)與非揮發性記憶體中之每個儲存單元(如:平面、區塊、頁)之間的連結。換句話說,建立連結程序可包括讀取系統資訊區塊池212所儲存的連結索引,並藉由連結索引載入操作快閃記憶體210所需的表格,讓微控制器221可以找到特定主機資料所儲存的位置(如:平面、區塊、頁)。
值得注意的是,在本申請所述避免韌體失效之方法流程中,如果韌體程式碼有錯誤(bug),則會在執行過程(如:前置程序的執行過程)中發生死當(或可稱為韌體失效),因此預定字串會被保留在特定區塊中。之後,當資料儲存裝置200重新上電(power on),並重新執行本申請所述避免韌體失效之方法,在步驟S340之後會走「是」支路,所以就不會執行有錯誤的韌體程式碼,從而避免韌體失效的情形持續發生。
在另一實施例,接續步驟S340,當此特定區塊中存在重複之預定字串時,微控制器221可進一步判斷是否需要進行除錯(debug),若不需要,則進入步驟S350;反之,若需要進行除錯,則進入步驟S370,允許執行韌體程式碼,方能進行除錯。
第4圖係顯示一範例韌體程式碼之執行程序示意圖。
如第4圖所示,韌體程式碼400至少包括:初始化程序410、以及主程序420,其中初始化程序410主要負責根據系統資訊區塊池212所儲存的快閃記憶體資訊把韌體程式碼400在執行時所需之參數準備好,待初始化程序410成功執行完畢後,則進入主程序420。
主程序420可進一步包括:建立連結程序421、預定字串抹除程序422、以及等待主機程序423。其中初始化程序410、以及/或建立連結程序421可被視為韌體程式碼400之前置程序。
建立連結程序421主要負責根據初始化程序410所準備好的參數建立主機資料與快閃記憶體中每個儲存單元(如:平面、區塊、頁)之間的連結。預定字串抹除程序422主要負責在建立連結程序421成功執行完畢後,將特定區塊中的預定字串抹除。等待主機程序423主要負責等待接收主機的輸入指令(如:讀取、寫入、或重置等)。
根據上述實施例,當可理解的是,本申請的資料儲存裝置及避免韌體失效之方法其特徵在於,在啟動程式碼的執行過程中將預定字串寫入特定區塊,並根據特定區塊中是否重複寫入預定字串來判斷是否允許執行韌體程式碼,而只有韌體程式碼的前置程序成功執行完畢後,才會將預定字串抹除。如此一來,只要韌體程式碼曾經在執行時失效(如:前置程序死當),資料儲存裝置在重新上電後就不會再執行有錯誤的韌體程式碼,從而避免韌體失效的情形持續發生。
本申請雖以各種實施例揭露如上,然而其僅為範例參考而非用以限定本申請的範圍,任何熟習此項技藝者,在不脫離本申請之精神和範圍內,當可做些許的更動與潤飾。因此上述實施例並非用以限定本申請之範圍,本申請之保護範圍當視後附之申請專利範圍所界定者為準。
於申請專利範圍中所使用的「第一」、「第二」等詞係用來修飾權利要求中的不同元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
1000:電子裝置100:主機200:資料儲存裝置210::快閃記憶體211:啟動程式碼區塊池212:系統資訊區塊池213:備用區塊池214:資料區塊池220:控制單元221:微控制器222:隨機存取記憶體223:唯讀記憶體BLK#1、BLK#2、BLK#Z:物理區塊BLK#:物理區塊編號S310~S380:步驟編號400:韌體程式碼410:初始化程序420:主程序421:建立連結程序422:預定字串抹除程序423:等待主機程序
第1圖係根據本申請一實施例所述之電子裝置之示意圖。 第2圖係顯示一範例區塊池之物理空間配置之示意圖。 第3圖係根據本申請一實施例所述避免韌體失效之方法之流程圖。 第4圖係顯示一範例韌體程式碼之執行程序示意圖。
1000:電子裝置
100:主機
200:資料儲存裝置
210:快閃記憶體
211:啟動程式碼區塊池
212:系統資訊區塊池
213:備用區塊池
214:資料區塊池
220:控制單元
221:微控制器
222:隨機存取記憶體
223:唯讀記憶體
Claims (14)
- 一種資料儲存裝置,包括: 一非揮發性記憶體,包括一第一區塊、以及一第二區塊,其中上述第一區塊儲存一韌體程式碼;以及一微控制器,用以在執行上述韌體程式碼之前,將一預定字串寫入上述第二區塊,判斷上述第二區塊中是否存在重複之上述預定字串,當上述第二區塊中不存在重複之上述預定字串時,允許執行上述韌體程式碼,並於上述韌體程式碼的執行過程中,因應一前置程序成功執行完畢而將上述第二區塊中的上述預定字串抹除,以及當上述第二區塊中存在重複之上述預定字串時,不允許執行上述韌體程式碼。
- 如申請專利範圍第1項所述之資料儲存裝置,其中上述前置程序包括上述韌體程式碼之一建立連結程序。
- 如申請專利範圍第1項所述之資料儲存裝置,其中上述非揮發性記憶體還儲存一啟動程式碼(boot loader code),上述微控制器還從上述非揮發性記憶體載入並執行上述啟動程式碼,以及在上述啟動程式碼的執行過程中,當取得上述韌體程式碼的儲存位址時,才執行將上述預定字串寫入上述第二區塊之步驟。
- 如申請專利範圍第1項所述之資料儲存裝置,其中上述微控制器還在當上述第二區塊中存在重複之上述預定字串時,進入一唯讀記憶體程式碼(ROM code)模式。
- 如申請專利範圍第1項所述之資料儲存裝置,其中上述微控制器還在當上述第二區塊中存在重複之上述預定字串時,判斷是否需要進行除錯,當需要進行除錯時,允許執行上述韌體程式碼,以及當不需要進行除錯時,不允許執行上述韌體程式碼。
- 如申請專利範圍第1項所述之資料儲存裝置,其中上述第二區塊為一閒置(idle)區塊。
- 如申請專利範圍第1項所述之資料儲存裝置,其中將上述預定字串寫入上述第二區塊之步驟包括:從上述第二區塊之複數頁中挑選空白之一者,以及將上述預定字串寫入上述挑選之空白頁。
- 一種避免韌體失效之方法,適用於包括一非揮發性記憶體之一資料儲存裝置,且由上述資料儲存裝置之一微控制器所執行,包括: 在從上述非揮發性記憶體之一第一區塊載入並執行一韌體程式碼之前,將一預定字串寫入上述非揮發性記憶體之一第二區塊; 判斷上述第二區塊中是否存在重複之上述預定字串; 當上述第二區塊中不存在重複之上述預定字串時,允許執行上述韌體程式碼,並於上述韌體程式碼的執行過程中,因應一前置程序成功執行完畢而將上述第二區塊中的上述預定字串抹除;以及 當上述第二區塊中存在重複之上述預定字串時,不允許執行上述韌體程式碼。
- 如申請專利範圍第8項所述之避免韌體失效之方法,其中上述前置程序包括上述韌體程式碼之一建立連結程序。
- 如申請專利範圍第8項所述之避免韌體失效之方法,更包括: 從上述非揮發性記憶體載入並執行一啟動程式碼;以及 在上述啟動程式碼的執行過程中,當取得上述韌體程式碼的儲存位址時,才執行將上述預定字串寫入上述第二區塊之步驟。
- 如申請專利範圍第8項所述之避免韌體失效之方法,更包括: 當上述第二區塊中存在重複之上述預定字串時,進入一唯讀記憶體程式碼模式。
- 如申請專利範圍第8項所述之避免韌體失效之方法,更包括: 當上述第二區塊中存在重複之上述預定字串時,判斷是否需要進行除錯; 當需要進行除錯時,允許執行上述韌體程式碼;以及 當不需要進行除錯時,不允許執行上述韌體程式碼。
- 如申請專利範圍第8項所述之避免韌體失效之方法,其中上述第二區塊為一閒置區塊。
- 如申請專利範圍第8項所述之避免韌體失效之方法,其中將上述預定字串寫入上述第二區塊之步驟包括: 從上述第二區塊之複數頁中挑選空白之一者;以及 將上述預定字串寫入上述挑選之空白頁。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108101611A TWI693518B (zh) | 2019-01-16 | 2019-01-16 | 資料儲存裝置及避免韌體失效之方法 |
CN201910614044.6A CN111444030B (zh) | 2019-01-16 | 2019-07-09 | 数据储存装置及避免固件失效的方法 |
US16/671,364 US11354192B2 (en) | 2019-01-16 | 2019-11-01 | Data storage devices and methods for firmware failure prevention |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108101611A TWI693518B (zh) | 2019-01-16 | 2019-01-16 | 資料儲存裝置及避免韌體失效之方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI693518B TWI693518B (zh) | 2020-05-11 |
TW202028981A true TW202028981A (zh) | 2020-08-01 |
Family
ID=71516348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108101611A TWI693518B (zh) | 2019-01-16 | 2019-01-16 | 資料儲存裝置及避免韌體失效之方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11354192B2 (zh) |
CN (1) | CN111444030B (zh) |
TW (1) | TWI693518B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI712045B (zh) * | 2020-01-16 | 2020-12-01 | 慧榮科技股份有限公司 | 資料儲存裝置修復方法 |
US11809748B2 (en) * | 2022-03-10 | 2023-11-07 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and electronic device |
CN114446381B (zh) * | 2022-04-07 | 2022-07-15 | 深圳佰维存储科技股份有限公司 | eMMC故障分析方法、装置、可读存储介质及电子设备 |
CN117393032B (zh) * | 2023-12-13 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储装置及其数据处理方法 |
CN117420964B (zh) * | 2023-12-18 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储装置及其数据处理方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6502208B1 (en) * | 1997-03-31 | 2002-12-31 | International Business Machines Corporation | Method and system for check stop error handling |
US20100146256A1 (en) * | 2000-01-06 | 2010-06-10 | Super Talent Electronics Inc. | Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces |
CN100349141C (zh) * | 2003-06-17 | 2007-11-14 | 创惟科技股份有限公司 | 动态调整非挥发性存储器的冗余区的方法及其相关装置 |
CN100489821C (zh) * | 2005-07-29 | 2009-05-20 | 鸿富锦精密工业(深圳)有限公司 | 电子器件之间的通信***及方法 |
TWI342518B (en) * | 2007-05-16 | 2011-05-21 | Inventec Corp | Adjusting method for set-up default value of bios and mainboard using the same method |
TW201301133A (zh) * | 2011-06-29 | 2013-01-01 | Universal Scient Ind Shanghai | 可修復韌體的用戶端設備及其韌體修復方法 |
TWI477966B (zh) * | 2012-05-31 | 2015-03-21 | Silicon Motion Inc | 資料儲存裝置與快閃記憶體操作方法 |
TWI516936B (zh) * | 2012-12-07 | 2016-01-11 | 群聯電子股份有限公司 | 運作模式切換方法、記憶體控制器與記憶體儲存裝置 |
CN104657165A (zh) * | 2013-11-22 | 2015-05-27 | 英业达科技有限公司 | 服务器及其控制方法 |
US9846640B2 (en) * | 2015-04-22 | 2017-12-19 | Dell Products, Lp | System and method for retrieving wireless access point credentials from a BIOS NVRAM |
TWI553481B (zh) | 2015-09-30 | 2016-10-11 | 宇瞻科技股份有限公司 | 固態硬碟的資料管理方法、寫入管理系統及其方法 |
US9690488B2 (en) * | 2015-10-19 | 2017-06-27 | Intel Corporation | Data compression using accelerator with multiple search engines |
US10664598B1 (en) * | 2016-08-15 | 2020-05-26 | American Megatrends International, Llc | Firmware security patch deployment |
CN107247642B (zh) * | 2017-06-27 | 2020-12-25 | 青岛智动精工电子有限公司 | 用于***开机时确定可执行映像文件的方法及装置 |
TWI640872B (zh) * | 2017-07-07 | 2018-11-11 | 群聯電子股份有限公司 | 記憶體控制電路單元、記憶體儲存裝置及其控制方法 |
US10534620B2 (en) * | 2017-11-30 | 2020-01-14 | Dell Products, L.P. | Systems and methods for establishing core root of trust measurement (CRTM) for basic input/output (BIOS) image recovery |
-
2019
- 2019-01-16 TW TW108101611A patent/TWI693518B/zh active
- 2019-07-09 CN CN201910614044.6A patent/CN111444030B/zh active Active
- 2019-11-01 US US16/671,364 patent/US11354192B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI693518B (zh) | 2020-05-11 |
CN111444030A (zh) | 2020-07-24 |
US20200226026A1 (en) | 2020-07-16 |
CN111444030B (zh) | 2023-05-23 |
US11354192B2 (en) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI693518B (zh) | 資料儲存裝置及避免韌體失效之方法 | |
TWI692690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
TWI515735B (zh) | 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI443513B (zh) | 記憶體儲存裝置、記憶體控制器與資料寫入方法 | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US11204864B2 (en) | Data storage devices and data processing methods for improving the accessing performance of the data storage devices | |
CN107590080B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
TWI659304B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
TWI523030B (zh) | 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
KR20160074025A (ko) | 데이터 저장 장치의 동작 방법 | |
CN111324549B (zh) | 一种存储器及其控制方法和装置 | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
US11216381B2 (en) | Data storage devices and data processing methods | |
TWI553477B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI792534B (zh) | 以局部清理操作來進行垃圾回收的方法與相關控制器和儲存系統 | |
US11307786B2 (en) | Data storage devices and data processing methods | |
US9229798B2 (en) | Error handling method, memory storage device and memory controlling circuit unit | |
US9652378B2 (en) | Writing method, memory controller and memory storage device | |
TW201337553A (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US20200264981A1 (en) | Data Storage Devices and Data Processing Methods | |
US20180196722A1 (en) | Data Storage Device and Data Maintenance Method Thereof | |
TW202418092A (zh) | 資料儲存裝置與寫入緩存器管理方法 | |
TW202418090A (zh) | 資料儲存裝置與寫入緩存器管理方法 | |
US10169224B2 (en) | Data protecting method for preventing received data from losing, memory storage apparatus and memory control circuit unit |