TWI811038B - 記憶體控制器與偵錯訊息輸出控制方法 - Google Patents
記憶體控制器與偵錯訊息輸出控制方法 Download PDFInfo
- Publication number
- TWI811038B TWI811038B TW111127729A TW111127729A TWI811038B TW I811038 B TWI811038 B TW I811038B TW 111127729 A TW111127729 A TW 111127729A TW 111127729 A TW111127729 A TW 111127729A TW I811038 B TWI811038 B TW I811038B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory controller
- interrupt
- data storage
- storage device
- error detection
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 53
- 230000004044 response Effects 0.000 claims abstract description 39
- 238000013500 data storage Methods 0.000 claims description 90
- 238000001514 detection method Methods 0.000 claims description 47
- 230000006870 function Effects 0.000 claims description 34
- 230000001960 triggered effect Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000000763 evoking effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
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)已經廣泛地被應用在多種用途上。
資料儲存裝置的開發過程中,通常必須執行多次測驗,例如,透過一主機裝置存取資料儲存裝置,以確保產品的穩定性。當裝置發生錯誤,極可能處於無回應的狀態,如此便無法再透過主機裝置控制資料儲存裝置。為了找出問題,既有的作法為修改韌體程式碼,藉由添加除錯訊息來找出發生錯誤的問題點。然而,偵錯過程中可能需要反覆修改韌體程式碼、且編譯韌體以及更新韌體皆須耗費時間。此外,在原始韌體程式碼中加入除錯訊息可能會嚴重影
響資料儲存裝置運作的時序(timing),使得修改後的韌體行為失真,如此便無法使原始的問題重現。
為解決上述問題,本發明提出一種新的偵錯訊息輸出控制方法,用以於資料儲存裝置發生錯誤時控制記憶體控制器輸出重要的偵錯訊息。
根據本發明之一實施例,一種記憶體控制器,耦接至一記憶體裝置,用以存取該記憶體裝置,包括一通用非同步收發器以及一微處理器。微處理器耦接至通用非同步收發器,並用以控制記憶體裝置之存取操作。微處理器響應於一中斷執行一中斷處理程序,並且於中斷處理程序中,微處理器判斷記憶體控制器之一特定針腳是否接收到一既定訊號,並且於判斷特定針腳接收到既定訊號時,微處理器透過通用非同步收發器之一發送端輸出一偵錯訊息。
根據本發明之一實施例,一種偵錯訊息輸出控制方法,適用於一資料儲存裝置,資料儲存裝置耦接一主機裝置,主機裝置對資料儲存裝置發出指令,用以存取資料儲存裝置,偵錯訊息輸出控制方法係於主機裝置判斷資料儲存裝置發生錯誤時由資料儲存裝置之一記憶體控制器執行,並且包括以下步驟:響應於一中斷進入一中斷處理程序;以及執行中斷處理程序。其中執行中斷處理程序之步驟更包括:判斷記憶體控制器之一特定針腳是否接收到一既定訊號;以及於判斷特定針腳接收到既定訊號時,透過記憶體控制器之一通用非同步收發器之一發送端輸出一偵錯訊息。
100,300:資料儲存裝置
110:記憶體控制器
112:微處理器
112C:程式碼
112M:唯讀記憶體
114:記憶體介面
116:緩衝記憶體
118:主機介面
120:記憶體裝置
121,301:通用非同步收發器
122:GPIO
123:計時器
130,330:主機裝置
132:編碼器
134:解碼器
310:訊號轉換裝置
320:偵錯裝置
321:顯示裝置
322:輸入裝置
CMD:指令
RSP:回應訊號
RX:接收訊號
TX:傳送訊號
第1圖係顯示根據本發明之一實施例所述之資料儲存裝置的方塊圖範例。
第2圖係顯示根據本發明之一實施例所述之主機裝置與資料儲存裝置之間的訊息流範例。
第3圖係顯示根據本發明之一實施例所述之偵錯系統的方塊圖範例。
第4圖係顯示根據本發明之一實施例所述之偵錯流程示意圖。
第5圖係顯示根據本發明之一實施例所述之偵錯訊息輸出控制方法之範例流程圖。
第6圖係顯示應用本發明所提出之偵錯訊息輸出控制方法的偵錯流程之範例流程圖。
第7圖係顯示根據本發明之一實施例所述之實施觸發源設定的範例流程圖。
在下文中,描述了許多具體細節以提供對本發明實施例的透徹理解。然而,本領域技術人員仍將理解如何在缺少一個或多個具體細節或依賴於其他方法、元件或材料的情況下實施本發明。在其他情況下,未詳細示出或描述公知的結構、材料或操作,以避免模糊本發明的主要概念。
在整個說明書中對「一實施例」或「一範例」的引用意味著結合該實施例或範例所描述的特定特徵、結構或特性係包括於本發明之多個實施例的至少一個實施例中。因此,貫穿本說明書在各個地方出現的短語「於本發明之一實施例中」、「根據本發明之一實施例」、「於一範例中」或「根據本發明之一範例」不一定都指到相同的實施例或範例。此外,特定特徵、結構或特性可以在一個或多個實施例或範例中以任何合適的組合和/或子組合進行結合。
此外,為讓本發明之目的、特徵和優點能更明顯易懂,下文特舉出本發明之具體實施例,並配合所附圖式,作詳細說明如下。目的在於說明本發明之精神而非用以限定本發明之保護範圍,應理解下列實施例可經由軟體、硬
體、韌體、或上述任意組合來實現。
第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。
第2圖係顯示根據本發明之一實施例所述之主機裝置與資料儲存裝置之間的訊息流範例。主機裝置可對資料儲存裝置發出初始化指令,用以將初始配置之相關資訊提供給資料儲存裝置。響應於初始化指令,資料儲存裝置可回傳初始化回應至主機裝置。於初始配置完成後,主機裝置可開始對資料儲存裝置發出一或多個指令,例如圖中所示之A1指令、A2指令、A3指令、A4指令與
A5指令,以存取資料儲存裝置。此外,於發出指令後,主機裝置可設定一等待時間,並等待對應之回應訊息。主機裝置在等待時間內成功完成回應訊息的接收,則為成功的握手(handshake)流程。
因此,響應於主機裝置所發出之A1指令~A5指令,資料儲存裝置應回傳對應之A1回應訊息~A5回應訊息至主機裝置。然而,資料儲存裝置可能因內部發生錯誤而導致無法成功發出回應訊息。若已是否超過等待時間都尚未接收到對應之回應訊息,主機裝置可判斷存取失敗。
第2圖係顯示之一通用的訊息流,用以說明於主機裝置可於無法自資料儲存裝置接收到回應訊息時,例如,無法自資料儲存裝置接收到A3回應訊息~A5回應訊息,判斷資料儲存裝置發生錯誤且存取失敗。然而,由於資料儲存裝置未必依照接收到的指令順序執行對應的操作,主機裝置或其他外接的測試裝置無法僅根據未接到A3回應訊息的偵測結果而判斷資料儲存裝置是在執行A3指令所對應的操作時發生錯誤。因此,既有的偵錯作法為修改韌體程式碼,藉由添加除錯訊息來找出發生錯誤的問題點。除了修改韌體程式碼外,既有的偵錯作法還須重新編譯韌體程式碼,將編譯好的韌體程式碼燒錄至資料儲存裝置,並且重新執行相同的測試流程,以複製出問題。
然而,偵錯過程中可能需要反覆修改韌體程式碼、且編譯韌體以及更新韌體皆須耗費時間。此外,在原始韌體程式碼中加入除錯訊息可能會嚴重影響資料儲存裝置運作的時序(timing),使得修改後的韌體行為失真,如此便無法使原始的問題重現。
為解決上述問題,本發明提出一種新的偵錯流程,其可包含本發明提出之偵錯訊息輸出控制方法,並適用於一偵錯系統。
第3圖係顯示根據本發明之一實施例所述之偵錯系統的方塊圖範例。偵錯系統可包括一資料儲存裝置300、一訊號轉換裝置310、一偵錯裝置320
與一主機裝置330。資料儲存裝置300可以是如第1圖所示之資料儲存裝置100。資料儲存裝置300可自主機裝置330接收指令CMD,並向主機裝置330傳送回應訊號RSP。此外,資料儲存裝置300可包括一通用非同步收發器(Universal Asynchronous Receiver/Transmitter,縮寫為UART)301,其可包括一發送端與一接收端。例如,資料儲存裝置或記憶體控制器可將特定的兩針腳分別配置給UART發送端與接收端作為其所對應的針腳。資料儲存裝置300可透過UART介面(即,通用非同步收發器301)與偵錯裝置320溝通。例如,資料儲存裝置300可透過UART介面發出傳送訊號TX給偵錯裝置320,以及透過UART介面自偵錯裝置320接收接收訊號RX。訊號轉換裝置310設置於資料儲存裝置300與偵錯裝置320之間,用以執行訊號轉換,例如,將接收訊號RX轉換為資料儲存裝置300可識別的訊號,以及將傳送訊號TX轉換為偵錯裝置320可識別之訊號。偵錯裝置320可包括顯示裝置321與輸入裝置322,用以輔助偵錯流程的進行。
需注意的是,除了通用非同步收發器之外,資料儲存裝置也可包括其他可輔助偵錯的裝置。參考回第1圖,除了通用非同步收發器(UART)121之外,記憶體控制器110的微處理器112可更耦接至一通用型之輸入輸出(General-purpose input/output,縮寫為GPIO)122,其可以是一種供應商特定功能(vender specific function,縮寫為VSF)選項針腳,以及一計時器123。以下將針對本發明提出的偵錯流程詳細介紹。
第4圖係顯示根據本發明之一實施例所述之偵錯流程示意圖。偵錯流程可起始於資料儲存裝置發生錯誤(如圖中所標示的裝置錯誤),並可包括以下操作:
操作S402:將一既定訊號傳送至資料儲存裝置。如上所述,主機裝置330可於無法自資料儲存裝置300接收到回應訊息時,判斷資料儲存裝置300發生錯誤。響應於判斷裝置錯誤,偵錯裝置320可將一既定訊號透過UART 301的接
收端傳送至資料儲存裝置300作為接收訊號。例如,偵錯人員可透過偵錯裝置330的輸入裝置322輸入既定訊號。
操作S404:響應於接收訊號,資料儲存裝置300可判斷接收訊號是否與既定訊號吻合。例如,既定訊號可以是特定的字串(string)、字元(character)、具有既定圖樣或既定電壓位準的訊號、或其他被特別定義的訊號。若資料儲存裝置300之接收訊號與既定訊號吻合,則執行操作S406,若不吻合,則返回操作S402等待URAT介面的接收訊號。需注意的是,返回操作S402等待URAT介面的接收訊號也可視為資料儲存裝置300不動作。即,若接收訊號與既定訊號不吻合,則資料儲存裝置300不執行任何操作,直到接收下一個中斷。
操作S406:取得資料儲存裝置300之相關資訊作為偵錯訊息,並透過UART 301的發送端輸出偵錯訊息。
操作S408:分析偵錯訊息,以找出發生錯誤的問題點。例如,偵錯訊息可被顯示於偵錯裝置330的顯示裝置,以供偵錯人員分析偵錯訊息。
第5圖係顯示根據本發明之一實施例所述之偵錯訊息輸出控制方法之範例流程圖。本發明所提出之偵錯訊息輸出控制方法適用於一資料儲存裝置,例如第1圖所示之資料儲存裝置100及/或第3圖所示之資料儲存裝置300,並且可包括由資料儲存裝置之記憶體控制器,例如第1圖所示之記憶體控制器110,執行之以下步驟:
步驟S502:響應於一中斷喚起或進入一中斷處理程序(Interrupt Service Routine,縮寫為ISR)。
步驟S504:執行中斷處理程序。於執行中斷處理程序時,記憶體控制器110可執行以下步驟:
步驟S504-1:判斷記憶體控制器110之一特定針腳是否接收到一既定訊號(例如,對應於第4圖所示之操作S404)。
步驟S504-2:於判斷特定針腳接收到既定訊號時,透過記憶體控制器之UART發送端輸出一偵錯訊息(例如,對應於第4圖所示之操作S406)。
於本發明之實施例中,藉由UART介面輸入既定訊號,使記憶體控制器110的微處理器112可進入特殊模式之函式(例如,前述之中斷處理程序(ISR))進行處理,並且於所述函式中,僅在特定條件成立(例如,前述之判斷接收到既定訊號)的情況下,才會輸出上述之偵錯訊息。由於此模式只有當需要偵錯時才觸發,因此本發明所提出之偵錯訊息輸出控制方法可在完全不影響原本韌體行為的情況下,即時輸出偵錯訊息,亦不影響韌體程式碼的執行時序。
根據本發明之一實施例,前述可喚起特定之中斷處理程序(ISR)之中斷可響應於UART接收端之訊息接收被觸發。根據本發明之另一實施例,可喚起特定之中斷處理程序(ISR)之中斷可響應於記憶體控制器110之一計時器(例如,計時器123)到期被觸發,其中計時器123可被設定為反覆計數一既定時間長度。
記憶體控制器110之微處理器112可於初始化操作中配置中斷事件。例如,微處理器112可於初始化操作中為UART接收端之訊息接收配置一中斷。如此一來,每當UART接收端接收到訊號時,對應之硬體會向微處理器112發出一中斷,並開始執行步驟S502。又例如,微處理器112可於初始化操作中為用以計數一既定時間長度之一既定計時器之計數到期事件配置一中斷。如此一來,每當既定計時器到期時,對應之硬體會向微處理器112發出一中斷,並開始執行步驟S502。
以UART之接收中斷為例,微處理器112配置UART中斷事件的流程簡述如下:
1.將預先編程好的ISR函示載入緩衝記憶體116內。
2.致能UART模組(即,通用非同步收發器121或301)。
3.將UART中斷設置為致能。
於一些實施方式中,於將UART中斷設置為致能之前,也可清除UART中斷的狀態。
第6圖係顯示應用本發明所提出之偵錯訊息輸出控制方法的偵錯流程之範例流程圖。於開機後,資料儲存裝置(例如第1圖所示之資料儲存裝置100及/或第3圖所示之資料儲存裝置300)進入主程式,開始前述之初始化程序,以執行系統初始化,並於初始化操作中配置中斷事件。例如,微處理器112可於初始化操作中為UART的接收訊號RX配置對應之中斷,並且啟用UART的RX中斷。接著,微處理器112可於主程式中執行函式1、函式2.1...等。微處理器112於主程式中可依序或選擇性執行函式1、函式2.1、函式2.2、函式3.1、函式3.2、函式3.3、函式3.4、函式N1、函式N2及函式N3等。假設微處理器112於執行函式3.3的過程中發生錯誤導致運作流程卡住,主機裝置(例如第1圖所示之主機裝置130及/或第3圖所示之主機裝置330)可於超過等待時間都尚未接收到對應之回應訊息時,判斷資料儲存裝置操作失敗或發生錯誤。
根據本發明之一實施例,主機裝置可透過工作日誌(log)或工作執行結果回報資料儲存裝置未能正常回傳回應訊息。此時,偵錯人員可透過偵錯裝置330的輸入裝置322輸入指定之UART RX字串A。由於微處理器112已為UART的接收訊號RX配置並啟用中斷,微處理器112響應於UART的接收訊號RX將會離開當前正在執行的函式(例如,圖中所示卡住的函式3.3),進入中斷處理程序(ISR)的入口(操作S602)。
進入中斷處理程序(ISR)時,微處理器112可記錄一寄存器之內容(操作S604),例如,微處理器112可備份鏈寄存器(Link register,縮寫為LR)所寄存之數值,其中鏈寄存器係用以記錄微處理器112進入中斷處理程序(ISR)前所在的記憶體位址,此記憶體位址係函式被儲存於記憶體內的位址,由此記憶體位址可識別出卡住的函式,藉此判斷分析韌體異常的原因。
接著,微處理器112可檢查或驗證收到的UART RX字串的正確性(操作S606)。若接收到的UART RX字串A與既定訊號不吻合(例如,UART RX字串A之內容不符合一既定圖樣),則微處理器112可直接離開中斷處理程序(ISR)。若接收到的UART RX字串A與既定訊號吻合,則微處理器112可將備份之寄存器之內容透過UART之發送端輸出或傾印(dump)作為一偵錯訊息(操作S608),接著離開中斷處理程序(ISR)。
如上所述,於本發明之實施例中,觸發中斷的方式不限於接收到UART的接收訊號RX,也可以是一既定計時器之計數到期。於本發明之一實施例中,類似於第6圖所示之偵錯訊息輸出控制方法流程,假設微處理器112於執行函式3.3的過程中發生錯誤導致運作流程卡住,當既定計時器計數到期時,微處理器112響應於計數到期的事件將會離開當前正在執行的函式(例如,圖中所示卡住的函式3.3),進入中斷處理程序(ISR)的入口(操作S602)。
此外,本發明並不限於藉由驗證收到的UART RX字串的正確性來判斷是否透過特定針腳接收到既定訊號,也可以是將一供應商特定功能(VSF)選項針腳設定為所述特定針腳,並且判斷其是否透過一跳線被耦接到既定電壓使其具有既定電壓位準。於本發明之一實施例中,類似於第6圖所示之偵錯訊息輸出控制方法流程,進入中斷處理程序(ISR)時,微處理器112可記錄一寄存器之內容(操作S604),並且於操作S606中可判斷UART RX字串A之內容是否符合一既定圖樣,或者特定針腳之電壓位準是否為既定電壓位準,例如,判斷特定針腳是否接收到既定訊號,其中的既定訊號可以是接地訊號。當兩者之中的任一者被判斷為「是」時,微處理器112可將備份之寄存器之內容透過UART之發送端輸出或傾印(dump)作為一偵錯訊息(操作S608)。若兩者的判斷皆為「否」時,微處理器112可直接離開中斷處理程序(ISR)。
根據本發明之一實施例,輸出之偵錯訊息並不限於包含由微處理器
112所使用之一寄存器(register)(例如,前述之鏈寄存器(LR))所寄存之一數值之相關資訊,也可以是包含由微處理器112所使用之一寄存器所寄存之一數值之相關資訊、記憶體控制器110之一指令歷史紀錄之相關資訊、記憶體控制器110之一堆疊記憶體儲存之內容之相關資訊、由記憶體控制器110之緩衝記憶體116所儲存之內容之相關資訊、由資料儲存裝置100/300之一或多個寄存器(register)所寄存之數值之相關資訊等之一或多者。其中,於接收到指令時,微處理器112可將當下時間資訊以及指令封包內的重要資訊內容儲存於一特定的記憶體空間,用來記錄記憶體控制器110的指令歷史。此外,記憶體控制器110之堆疊記憶體(圖未示)可記錄函式跳轉或呼叫的過程,緩衝記憶體116可儲存變數值或系統表格等資訊。
因此,應用本發明所提出之偵錯訊息輸出控制方法,不僅可直接且明確得知導致運作流程卡住的函式為哪個函式,以取得正確的除錯方向,並且可進一步根據偵錯訊息內容做進一步分析,用以輔助偵錯流程的進行。
此外,如上所述,由於本發明中如前述可喚起特定之中斷處理程序(ISR)之中斷的觸發源並不限於UART接收端之訊息接收事件,以可以是計時器之計數到期事件,因此,於本發明之實施例中,微處理器112可響應於一既定指令設定或切換該中斷之一觸發源。
第7圖係顯示根據本發明之一實施例所述之實施觸發源設定的範例流程圖。於本發明之一實施例中,可利用供應商特定指令(vendor specific command)配置、設定、切換、開啟或關閉中斷的觸發源。如第7圖所示,主機裝置130/330可準備特定指令,例如以前述之供應商特定指令設定對應的參數,並將之傳送給資料儲存裝置100/300。主機裝置130/330可透過此特定指令配置、設定、切換、開啟或關閉可喚起前述特定之中斷處理程序(ISR)之中斷的觸發源。於傳送出特定指令後,主機裝置130/330可等待回應訊息。
資料儲存裝置100/300於接收到特定指令後,可進入偵錯選項設定程序,以根據此特定指令的內容初始化偵錯設定,其可包含設定中斷的觸發源、設定既定計時器需反覆計數的既定時間長度等。於完成對應之的初始化流程後,資料儲存裝置100/300將回應訊息傳送給主機裝置130/330。接著,主機裝置130/330與資料儲存裝置100/300皆可進入待命或閒置狀態。
根據本發明之一實施例,前述供應商特定指令(vendor specific command)可由UFS規範之寫入緩衝指令(Write buffer command)來實作。此外,於本發明之一實施例中,偵錯設定的內容可被儲存於記憶體裝置120的系統資料區,如此,即便資料儲存裝置100/300被關機或遭遇斷電,偵錯設定的內容仍會被保留,並且於重新開機後,資料儲存裝置100/300可在初始化流程中,根據偵錯設定的內容執行初始配置。
於本發明之實施例中,藉由特定事件觸發中斷,使記憶體控制器110的微處理器112可進入特殊模式之函式(例如,前述之中斷處理程序(ISR))進行處理,並且於所述函式中,僅在特定條件成立(例如,前述之判斷特定針腳接收到既定訊號)的情況下,才會輸出上述之偵錯訊息。由於此模式只有當需要偵錯時才觸發,因此本發明所提出之偵錯訊息輸出控制方法可在完全不影響原本韌體行為的情況下,即時輸出偵錯訊息,並且本發明所提出之偵錯訊息的輸出方式也不影響韌體程式碼的執行時序,有效解決先前技術所遭遇的問題。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
300:資料儲存裝置
301:通用非同步收發器
310:訊號轉換裝置
320:偵錯裝置
321:顯示裝置
322:輸入裝置
330:主機裝置
CMD:指令
RSP:回應訊號
RX:接收訊號
TX:傳送訊號
Claims (14)
- 一種記憶體控制器,耦接至一記憶體裝置,用以存取該記憶體裝置,包括:一通用非同步收發器;以及一微處理器,耦接至該通用非同步收發器,並用以控制該記憶體裝置之存取操作,其中該微處理器響應於一中斷執行一中斷處理程序,並且於該中斷處理程序中,該微處理器判斷該記憶體控制器之一特定針腳是否接收到一既定訊號,並且於判斷該特定針腳接收到該既定訊號時,該微處理器透過該通用非同步收發器之一發送端輸出一偵錯訊息。
- 如申請專利範圍第1項所述之記憶體控制器,其中該特定針腳為該記憶體控制器之一供應商特定功能選項針腳,並且該既定訊號為一接地訊號。
- 如申請專利範圍第1項所述之記憶體控制器,其中該特定針腳為該通用非同步收發器之一接收端所對應之一針腳,並且該微處理器藉由判斷由該通用非同步收發器之該接收端所接收之一訊息之內容是否符合一既定圖樣判斷該特定針腳是否接收到該既定訊號。
- 如申請專利範圍第3項所述之記憶體控制器,其中該中斷係響應於該接收端之訊息接收被觸發。
- 如申請專利範圍第1項所述之記憶體控制器,更包括:一計時器,其中該中斷係響應於該計時器到期被觸發。
- 如申請專利範圍第1項所述之記憶體控制器,其中該偵錯訊息包括由一寄存器寄存之一數值、一指令歷史紀錄、以及由一堆疊記憶體儲存之內容之至少一者之相關資訊。
- 如申請專利範圍第1項所述之記憶體控制器,其中該微處理器響應於一既定指令設定或切換該中斷之一觸發源。
- 一種偵錯訊息輸出控制方法,適用於一資料儲存裝置,該資料儲存裝置耦接一主機裝置,該主機裝置對該資料儲存裝置發出指令,用以存取該資料儲存裝置,該偵錯訊息輸出控制方法係於該主機裝置判斷該資料儲存裝置發生錯誤時由該資料儲存裝置之一記憶體控制器執行,並且包括:響應於一中斷進入一中斷處理程序;以及執行該中斷處理程序,其中執行該中斷處理程序之步驟更包括:判斷該記憶體控制器之一特定針腳是否接收到一既定訊號;以及於判斷該特定針腳接收到該既定訊號時,透過該記憶體控制器之一通用非同步收發器之一發送端輸出一偵錯訊息。
- 如申請專利範圍第8項所述之偵錯訊息輸出控制方法,其中該特定針腳為該記憶體控制器之一供應商特定功能選項針腳,並且該既定訊號為一接地訊號。
- 如申請專利範圍第8項所述之偵錯訊息輸出控制方法,其中該特定針腳為該通用非同步收發器之一接收端所對應之一針腳,並且判斷該記憶體控制器之該特定針腳是否接收到該既定訊號是藉由判斷由該通用非同步收發器 之該接收端所接收之一訊息之內容是否符合一既定圖樣實施。
- 如申請專利範圍第10項所述之偵錯訊息輸出控制方法,其中該中斷係響應於該接收端之訊息接收被觸發。
- 如申請專利範圍第8項所述之偵錯訊息輸出控制方法,其中該中斷係響應於該記憶體控制器之一計時器到期被觸發。
- 如申請專利範圍第8項所述之偵錯訊息輸出控制方法,其中該偵錯訊息包括由該記憶體控制器之一寄存器寄存之一數值、該記憶體控制器之一指令歷史紀錄、以及由該記憶體控制器之一堆疊記憶體儲存之內容之至少一者之相關資訊。
- 如申請專利範圍第8項所述之偵錯訊息輸出控制方法,更包括響應於一既定指令設定或切換該中斷之一觸發源。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111127729A TWI811038B (zh) | 2022-07-25 | 2022-07-25 | 記憶體控制器與偵錯訊息輸出控制方法 |
CN202210956433.9A CN117493229A (zh) | 2022-07-25 | 2022-08-10 | 存储器控制器与侦错讯息输出控制方法 |
US18/213,899 US20240028508A1 (en) | 2022-07-25 | 2023-06-26 | Memory controller and method for controlling output of debug messages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111127729A TWI811038B (zh) | 2022-07-25 | 2022-07-25 | 記憶體控制器與偵錯訊息輸出控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI811038B true TWI811038B (zh) | 2023-08-01 |
TW202405657A TW202405657A (zh) | 2024-02-01 |
Family
ID=88585621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111127729A TWI811038B (zh) | 2022-07-25 | 2022-07-25 | 記憶體控制器與偵錯訊息輸出控制方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240028508A1 (zh) |
CN (1) | CN117493229A (zh) |
TW (1) | TWI811038B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200813724A (en) * | 2006-07-28 | 2008-03-16 | Samsung Electronics Co Ltd | Multipath accessible semiconductor memory device with host interface between processors |
CN109656736A (zh) * | 2017-10-12 | 2019-04-19 | 三星电子株式会社 | 存储装置、计算系统及其调试方法 |
CN112306783A (zh) * | 2019-07-30 | 2021-02-02 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
US20210200620A1 (en) * | 2019-12-30 | 2021-07-01 | Micron Technology, Inc. | Real-time trigger to dump an error log |
US20210365334A1 (en) * | 2017-07-30 | 2021-11-25 | NeuroBlade, Ltd. | Memory-based distributed processor architecture |
-
2022
- 2022-07-25 TW TW111127729A patent/TWI811038B/zh active
- 2022-08-10 CN CN202210956433.9A patent/CN117493229A/zh active Pending
-
2023
- 2023-06-26 US US18/213,899 patent/US20240028508A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200813724A (en) * | 2006-07-28 | 2008-03-16 | Samsung Electronics Co Ltd | Multipath accessible semiconductor memory device with host interface between processors |
US20210365334A1 (en) * | 2017-07-30 | 2021-11-25 | NeuroBlade, Ltd. | Memory-based distributed processor architecture |
CN109656736A (zh) * | 2017-10-12 | 2019-04-19 | 三星电子株式会社 | 存储装置、计算系统及其调试方法 |
CN112306783A (zh) * | 2019-07-30 | 2021-02-02 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
US20210200620A1 (en) * | 2019-12-30 | 2021-07-01 | Micron Technology, Inc. | Real-time trigger to dump an error log |
Also Published As
Publication number | Publication date |
---|---|
US20240028508A1 (en) | 2024-01-25 |
CN117493229A (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI443513B (zh) | 記憶體儲存裝置、記憶體控制器與資料寫入方法 | |
TWI602115B (zh) | 資料儲存裝置之資料儲存方法 | |
KR102229024B1 (ko) | 스스로 에러를 검출하고 로그를 저장할 수 있는 데이터 저장 장치와 이를 포함하는 시스템 | |
TWI534607B (zh) | 記憶體控制電路單元、記憶體儲存裝置與資料傳輸方法 | |
TW201740265A (zh) | 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW202008171A (zh) | 資料寫入方法以及儲存控制器 | |
TWI489466B (zh) | 記憶體抹除方法、記憶體控制器與記憶體儲存裝置 | |
US10055321B2 (en) | Storage device, main board in which the storage device is embedded, and self-diagnosis method thereof | |
TWI591482B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
US11003460B2 (en) | Memory control circuit unit, memory storage device and control method thereof | |
CN107045890B (zh) | 数据保护方法、存储器控制电路单元及存储器存储装置 | |
CN109426582B (zh) | 用于存储装置为错误处置进行数据处理的方法及控制器 | |
TWI811038B (zh) | 記憶體控制器與偵錯訊息輸出控制方法 | |
WO2021088368A1 (zh) | 一种存储器的修复方法及装置 | |
TWI665606B (zh) | 資料儲存裝置之測試系統與資料儲存裝置之測試方法 | |
KR20190060424A (ko) | 에러 테스트를 위한 메모리 시스템 | |
TWI806262B (zh) | 橋接裝置與資料儲存系統 | |
TWI672593B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20190295681A1 (en) | Nonvolatile memory device, operating method thereof and data storage device including the same | |
TW202405657A (zh) | 記憶體控制器與偵錯訊息輸出控制方法 | |
CN110764947B (zh) | 数据写入方法以及存储控制器 | |
TWI824885B (zh) | 資料儲存裝置與錯誤回復執行方法 | |
TWI807919B (zh) | 資料重讀方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN113535459B (zh) | 响应电源事件的数据存取方法及装置 | |
TWI812534B (zh) | 資料儲存裝置與韌體更新方法 |