TWI794997B - 固態硬碟裝置的除錯方法及裝置以及電腦程式產品 - Google Patents

固態硬碟裝置的除錯方法及裝置以及電腦程式產品 Download PDF

Info

Publication number
TWI794997B
TWI794997B TW110135749A TW110135749A TWI794997B TW I794997 B TWI794997 B TW I794997B TW 110135749 A TW110135749 A TW 110135749A TW 110135749 A TW110135749 A TW 110135749A TW I794997 B TWI794997 B TW I794997B
Authority
TW
Taiwan
Prior art keywords
solid
hard disk
disk device
state hard
debugging
Prior art date
Application number
TW110135749A
Other languages
English (en)
Other versions
TW202301328A (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 慧榮科技股份有限公司
Publication of TW202301328A publication Critical patent/TW202301328A/zh
Application granted granted Critical
Publication of TWI794997B publication Critical patent/TWI794997B/zh

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/1201Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details comprising I/O circuitry

Abstract

本發明涉及一種固態硬碟裝置的除錯方法,由樹莓派的處理單元於載入和執行運行期函式庫中的函數時實施。該方法包含:接收驅動通用輸入輸出介面的請求,包含完成聯合測試工作群組命令所需的參數;依據請求中攜帶的參數發出第一硬體指令給通用輸入輸出介面以設定相應於測試資料輸入的通用輸入輸出接腳的寄存器,用於模擬聯合測試工作群組命令給固態硬碟裝置;發出第二硬體指令給通用輸入輸出介面以讀取相應於測試資料輸入的通用輸入輸出接腳的寄存器的值;以及回覆驅動完成的訊息。通過如上所述的除錯方法解決了因樹莓派沒有實作低延遲周邊埠(low latency peripheral port,LLPP)的技術所產生的問題。

Description

固態硬碟裝置的除錯方法及裝置以及電腦程式產品
本發明涉及儲存裝置,尤指一種固態硬碟裝置的除錯方法及裝置以及電腦程式產品。
目前使用市售的內電路仿真器(in-circuit emulator,ICE)來搜集固態硬碟(solid state disk,SSD)裝置運行時的韌體狀態,會遭遇到以下的問題:內電路仿真器無法被控制來滿足所有的應用環境,舉例來說,當內電路仿真器停止時會執行一些固定的操作,例如,停止固態硬碟產品中的中央處理器等,導致主機端無法接著存取固態硬碟產品中的資料。目前的內電路仿真器在需要改變位址才能讀取硬體寄存器時,例如,當工程師在韌體卡住時還希望存取硬體寄存器去知道NAND閃存的狀態時,回應的速度很慢。此外,內電路仿真器非常昂貴,並且除錯成本需要進一步降低。因此,本發明提出一種固態硬碟裝置的除錯方法、裝置及電腦程式產品,用於解決如上所述的問題。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種固態硬碟的除錯方法的實施例,樹莓派的處理單元於載入和執行運行期函式庫中的函數時實施。該方法包含:接收驅動通用輸入輸出介面的請求,包含完成聯合測試工作群組命令所 需的參數;依據請求中攜帶的參數發出第一硬體指令給通用輸入輸出介面以設定相應於測試資料輸入的通用輸入輸出接腳的寄存器,用於模擬聯合測試工作群組命令給固態硬碟裝置;發出第二硬體指令給通用輸入輸出介面以讀取相應於測試資料輸入的通用輸入輸出接腳的寄存器的值;以及回覆驅動完成的訊息。
本說明書另涉及一種電腦程式產品,包含運行期函式庫中的函數的除錯程式碼。當樹莓派的處理單元執行所述除錯程式碼時,實施如上所述的固態硬碟裝置的除錯方法。
本說明書另涉及一種固態硬碟裝置的除錯裝置,包含:通用輸入輸出介面;以及處理單元。處理單元耦接通用輸入輸出介面,用於載入並執行如上所述的運行期函式庫中的函數的除錯程式碼時,實施如上所述的方法。
上述實施例的優點之一,通過如上所述的除錯方法解決了因樹莓派沒有實作低延遲周邊埠(low latency peripheral port,LLPP)的技術所產生的問題。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
10:除錯系統
110:除錯裝置
112:樹莓派
114:JTAG附加板
120:固態硬碟裝置
121:快閃控制器
122:輔助寄存器
123:JTAG介面
124:UART介面
125:處理單元
126:記憶體
127:裝置介面
128:閃存模組
129:主機介面
130:個人電腦
132:裝置介面
140:JTAG連接裝置
150:UART錄製裝置
160:電源
210:處理單元
222:AHB/ASB
224:APB
230:記憶體控制器
232:SRAM
234:DRAM
236:閃存
260:GPIO介面
270:USB介面
280:Wi-Fi模組
290:藍牙模組
S510~S595:方法步驟
710:20接腳連接器
730:10接腳連接器
S910~S970:方法步驟
圖1為依據本發明實施例的除錯系統的方塊圖。
圖2為依據本發明實施例的樹莓派的系統架構圖。
圖3為依據本發明實施例的Argonaut精簡指令集電腦核心(Argonaut Reduced Instruction Set Computer Core,ARC)輔助寄存器集的示意圖。
圖4為依據本發明實施例的Argonaut精簡指令集電腦機器(Argonaut RISC Machine,ARM)輔助控制寄存器和二級輔助控制寄存器的位元分配示意圖。
圖5為依據本發明實施例的由除錯應用程式實施的固態硬碟裝置除錯的方法流程圖。
圖6為依據本發明實施例的樹莓派的通用輸入輸出(General-Purpose Input/Output,GPIO)介面的接腳示意圖。
圖7為依據本發明實施例的聯合測試工作群組(Joint Test Action Group,JTAG)連接裝置中的JTAG 20接腳轉10接腳的示意圖。
圖8為依據本發明實施例的樹莓派的GPIO介面的接腳圖。
圖9為依據本發明實施例的由執行時程式庫中的函數所實施的固態硬碟裝置除錯的方法流程圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如“第一”、“第二”、“第三”等詞是用於修飾權利要求中的元件,並非用於表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用於區別具有相同名字的元件。
必須了解的是,當元件描述為“連接”或“耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為“直接連接”或“直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如“介於”相對於“直接介於”,或者是“鄰接”相對於“直接鄰接”等等。
參考圖1所示的除錯系統方塊圖。除錯系統10包含除錯裝置110、固態硬碟裝置120、個人電腦130、聯合測試工作群組(Joint Test Action Group,JTAG)連接裝置140、通用非同步收發器(Universal Asynchronous Receiver/Transmitter,UART)錄製裝置150和電源160。個人電腦130上設置固態硬碟裝置120。除錯裝置110從電源160獲取電力,並且供電給個人電腦130、JTAG連接裝置140和UART錄製裝置150。個人電腦130供電給固態硬碟裝置120。
固態硬碟裝置120為待除錯的裝置,至少包含閃存控制器121和閃存模組128。閃存模組128提供大量的儲存空間,通常是數百個千兆位元組(Gigabytes),甚至是數個兆兆位元組(Terabytes),用於儲存大量的使用者資料,例如高解析度圖片、影片等。閃存控制器121包含主機介面129,用於連接上個人電腦130以獲取電力。主機介面129可以通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)、通用快閃記憶儲存(Universal Flash Storage UFS)、嵌入式多媒體卡(Embedded Multi-Media Card,eMMC)等通訊協定和個人電腦130中的裝置介面132溝通。閃存控制器121還包含處理單元125,通過匯流排架構和主機介面129、輔助寄存器(auxiliary register,AUX)122、JTAG介面123、UART介面124、記憶體126、裝置介面127彼此連接以傳送和接收命令、控制訊號、訊息、資料等。處理單元125可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其他具運算能力的處理器),並且在執行韌體(firmware)指令過程中存取輔助寄存器122和記憶體126,用於讀取和儲存執行過程中使用到的變數、資料表、資料、訊息等。例如,處理單元125可以是Argonaut精簡指令集電腦核心(Argonaut Reduced Instruction Set Computer,RISC Core,簡稱為ARC)、Argonaut精簡指令集電腦機器(Argonaut RISC Machine, 簡稱為ARM)等。輔助寄存器122和記憶體126中儲存的內容是除錯時的重要參考依據。在一些實施例中,記憶體126可為靜態隨機存取記憶體(Static Random Access Memory,SRAM)。在另一些實施例中,記憶體126可包含靜態隨機存取記憶體和動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。裝置介面127可使用雙倍資料率(Double Data Rate DDR)通訊協定彼此溝通,例如,開放NAND快閃(Open NAND Flash Interface ONFI)、雙倍資料率開關(DDR Toggle)或其他通訊協定和閃存模組128溝通,用於讀取、寫入或者抹除資料。固態硬碟裝置120通過JTAG介面連接上JTAG連接裝置140,並且通過UART介面124連接上UART錄製裝置150。
輔助寄存器122可服從ARC、ARM或其他的規範。例如,圖3顯示從2008年四月發表的ARCompact TM Instruction Set Architecture:Programmer’s Reference的第45至46頁摘錄出的輔助寄存器集的摘要。圖4中的A部分顯示從2010至2011年發表的Cortex TM -R5 and Cortex-R5F revision:r1p1,Technical Reference Manual的第4-41頁摘錄出的位元分配。圖4中的B部分顯示從2010至2011年發表的Cortex TM -R5 and Cortex-R5F revision:r1p1,Technical Reference Manual的第4-45頁摘錄出的二級輔助控制寄存器的位元分配。
本發明實施例使用除錯裝置110、JTAG連接裝置140和UART錄製裝置150來取代市售的內電路仿真器(in-circuit emulator,ICE),用於避免使用ICE來除錯固態硬碟裝置120中的硬體和軟體所產生的技術問題。此外,除錯裝置110、JTAG連接裝置140和UART錄製裝置150的成本也低於使用ICE除錯的成本。
除錯裝置110為整個除錯系統10的核心,包含樹莓派(raspberry Pi)112和JTAG附加板(add-on board)114。樹莓派112是基於Linux作業系統的單晶片電腦。除錯應用程式執行於樹莓派112,並且待除 錯的韌體執行於固態硬碟裝置120。樹莓派112於執行除錯應用程式時通過通用輸入輸出(General-Purpose Input/Output,GPIO)介面將電源160饋入個人電腦130以啟動個人電腦130,使得固態硬碟裝置120也跟著啟動,接著,依據驅動電源發光二極體(Light-Emitting Diode,LED)的訊號判斷個人電腦130是否啟動成功。因為JTAG介面可使用一般的IO訊號驅動,樹莓派112於執行除錯應用程式時通過內建的GPIO介面模擬JTAG的行為,用於從固態硬碟裝置120獲取所需的資訊,存取速度可高於4Mbps。JTAG的通訊協定可參考2001年6月14准許的IEEE Standard Test Access Port and Boundary-Scan Architecture。樹莓派112於執行除錯應用程式時通過內建的GPIO介面和JTAG連接裝置140強迫固態硬碟裝置120進入唯讀記憶體(Read-Only Memory,ROM)模式。當固態硬碟裝置120進入ROM模式時,處理單元125從ROM(未顯示在圖1當中)載入和執行程式碼,用於執行系統開機的操作,例如各種的硬體測試等。樹莓派112於執行除錯應用程式時通過內建的USB介面和UART錄製裝置150從固態硬碟裝置120搜集UART資料、訊號和訊息等。工程師可操作樹莓派112來對固態硬碟裝置120的硬體和/或固態硬碟裝置120中執行的韌體進行除錯。舉例來說,樹莓派112可裝配Wi-Fi或藍牙模組,工程師通過與樹莓派112中的Wi-Fi或藍牙模組建立遠端連線,控制整個除錯裝置110。
參考圖2的樹莓派112的系統架構。處理單元210可為ARM架構的處理器,並且在執行除錯應用程式的指令時,完成如下所述的功能。工具開發人員可使用Python來撰寫除錯應用程式。樹莓派112包含可以組合使用的不同類型的匯流排:先進高效匯流排/先進系統匯流排(Advanced High-performance Bus/Advanced System Bus,AHB/ASB)222;以及先進周邊匯流排(Advanced Peripheral Bus,APB)224。AHB/ASB 222和APB 224之間以橋接器(bridge)220連接。 AHB/ASB 222用於滿足處理單元210通過記憶體控制器230和SRAM 232、DRAM 234或者閃存(flash memory)236之間高速頻寬要求。APB 224適用於低功耗的周邊設備,例如GPIO介面260、USB介面270、Wi-Fi模組280、藍牙模組290等。處理單元210可通過GPIO介面260模擬JTAG的行為,並且通過USB介面270接收UART資料、訊號和訊息等。處理單元210可經由Wi-Fi模組280或藍牙模組290從遠端接收除錯請求,並且載入並執行除錯應用程式來回應除錯請求。
本發明實施例提出一種固態硬碟裝置的除錯方法,由處理單元210載入並執行除錯應用程式的程式碼時實施。參考圖5,詳細說明如下:
步驟S510:通過GPIO介面260模擬JTAG命令以讀取固態硬碟裝置120中的快閃控制器121的處理單元125的識別碼(identifier,ID),例如ARC ID、ARM ID等。舉例來說,可從固態硬碟裝置120中的輔助寄存器122的指定位址讀取處理單元125的識別碼。在一些實施例中,ARC ID記錄在圖3中的第四個雙位元組的第0至7個位元”ARCVER[7:0]”。
步驟S520:判斷識別碼是否正確。當識別碼正確時,流程繼續進行步驟S530的處理。否則,流程繼續進行步驟S525的處理。這個步驟可用以確認除錯裝置110是否正確地連接上固態硬碟裝置120。如果處理單元210無法從固態硬碟裝置120讀取到關於快閃控制器121的處理單元125的識別碼,則代表除錯裝置110沒有正確地連接上固態硬碟裝置120。
步驟S525:除錯應用程式回覆錯誤訊息給啟動除錯應用程式的上層。上層可據以驅動顯示器以顯示錯誤訊息,或者將錯誤訊息儲存在閃存236,用於讓工程師知道在除錯的過程中發生了錯誤。
步驟S530:通過GPIO介面260模擬JTAG命令以停止固態硬碟裝置120中的快閃控制器121的處理單元125的運行。舉例來說,可修改 固態硬碟裝置120中的輔助寄存器122的指定位址的值以停止處理單元125。在一些實施例中,可將圖3中的第五個雙位元組的第1個位元”FH”設為”1”以停止處理單元125。
步驟S540:通過GPIO介面260模擬JTAG命令以讓固態硬碟裝置120離開休眠模式(sleep mode)。舉例來說,可修改固態硬碟裝置120中的輔助寄存器122的指定位址的值以讓固態硬碟裝置120離開休眠模式。在一些實施例中,可將圖3中的第五個雙位元組的第23個位元”ZZ”設為”0”以讓固態硬碟裝置120離開休眠模式。
步驟S550:通過GPIO介面260模擬JTAG命令以讀取固態硬碟裝置120的系統內編程碼(in-system programming,ISP code)。舉例來說,系統內編程碼可儲存於閃存模組128中的指定位址,除錯應用程式可發出JTAG命令以從閃存模組128的指定位址讀取指定長度的資料(也就是系統內編程碼)。系統內編程碼包含用於執行從主機發出的主機命令,例如主機讀取、寫入、抹除命令等,或者執行背景操作,例如垃圾回收(garbage collection,GC)、損耗磨平(wear leveling,WL)、讀取再生(read reclaim)、讀取刷新(read refresh)等程序。主機命令為由標準制定組織所規範命令,例如通用快閃記憶儲存(Universal Flash Storage,UFS)、快速非揮發性記憶體(Non-Volatile Memory Express,NVMe)、開放通道固態硬碟(Open-channel Solid State Disk,SSD)等。
步驟S560:計算系統內編程碼的校驗和(checksum)。除錯應用程式可使用特定的演算法來計算校驗和,例如MD5、SHA1、SHA256、SHA512等。
步驟S570:判斷校驗和是否正確。當校驗和正確時,流程繼續進行步驟S580的處理。否則,流程繼續進行步驟S525的處理。在一些實施例中,由於固態硬碟裝置120的閃存控制器121的製造廠商可能因應不同類型的NAND快閃記憶體,提供不同版本的系統內編程碼。 樹莓派112中的閃存236可預先儲存相應於多個系統內編程碼版本的校驗和。除錯應用程式可將步驟S560中產生的校驗和比對閃存236中儲存的校驗和。如果步驟S560中產生的校驗和相符於閃存236中儲存的多個校驗和中之一者時,判定校驗和正確(也就是固態硬碟裝置120的閃存控制器121中執行的系統內編程碼可以辨認為特定系統內編程碼版本)。反之,判定校驗和不正確(也就是固態硬碟裝置120的閃存控制器121中執行的系統內編程碼不正確或者不能辨認)。這個步驟除了可以用來判斷校驗和是否正確外,還可以知道閃存控制器121中執行的系統內編程碼的版本。在這裡需要注意的是,不同的系統內編程碼的版本擁有不同的記憶體配置邏輯,用於儲存執行時的變數、資料表、即將寫入閃存模組128的資料、從閃存模組128讀出的資料等。也就是說,除錯應用程式需要先知道記憶體配置邏輯,接著才能夠依據記憶體配置邏輯從固態硬碟裝置120中的記憶體126(包含SRAM、DRAM)的正確位址轉儲(dump)所需的資料。
步驟S580:通過GPIO介面260模擬JTAG命令以讀取固態硬碟裝置120的SRAM中的資料。舉例來說,開機期間或者是正常操作期間產生的韌體資料可儲存於SRAM中的指定位址,除錯應用程式可發出多個JTAG命令給固態硬碟裝置120,每個JTAG命令請求從SRAM的指定位址讀取指定長度的資料(也就是韌體資料)。在一些實施例中,樹莓派112中的閃存236可儲存一份文件,包含多筆紀錄。每筆紀錄包含開始位址和長度的資訊。除錯應用程式可依據文件中的每一筆紀錄發出JTAG命令給固態硬碟裝置120以從SRAM的指定位址讀取指定長度的資料。
步驟S590:在記憶體126中有配備DRAM的實施例中,通過GPIO介面260模擬JTAG命令以讀取固態硬碟裝置120的DRAM中的資料。舉例來說,開機期間或者是正常操作期間產生的韌體資料可儲存於 DRAM中的指定位址,除錯應用程式可發出多個JTAG命令給固態硬碟裝置120,每個JTAG命令請求從DRAM的指定位址讀取指定長度的資料(也就是韌體資料)。在一些實施例中,樹莓派112中的閃存236可儲存一份文件,包含多筆紀錄。每筆紀錄包含開始位址和長度的資訊。除錯應用程式可依據文件中的每一筆紀錄發出JTAG命令給固態硬碟裝置120以從DRAM的指定位址讀取指定長度的資料。
步驟S595:通過GPIO介面260模擬JTAG命令以回復固態硬碟裝置120中的快閃控制器121的處理單元125。舉例來說,可修改固態硬碟裝置120中的輔助寄存器122的指定位址的值以回復處理單元125。在一些實施例中,可將圖3中的第五個雙位元組的第1個位元”FH”設為”0”以回復處理單元125。
以下顯示除錯應用程式的虛擬碼:
Figure 110135749-A0305-02-0013-1
Figure 110135749-A0305-02-0014-2
通過如上所述由除錯應用程式所實施的固態硬碟裝置的除錯方法,可較內電路仿真器具有彈性,以解決除錯時遭遇到的問題。例如,在固態硬碟裝置的韌體運行卡住時可以快速存取硬體寄存器以獲取NAND閃存的狀態等。
參考圖1和圖2。UART錄製裝置150包含USB介面、UART介面、控制器和記憶體。UART錄製裝置150的USB介面連接樹莓派112的USB介面,以及UART錄製裝置150的UART介面連接固態硬碟裝置120的UART介面124。UART錄製裝置150經由其UART介面從固態硬碟裝置120接收日誌資訊(log information),包含資料、訊息和/或訊號等,並且將日誌資訊經由其USB介面傳送給樹莓派112。 UART錄製裝置150還可包含非揮發性儲存單元,用於儲存從固態硬碟裝置120接收的日誌資訊。USB介面中的使用到的每個埠可經由電壓/電平轉換器(level shifter)連接到UART介面上的指定埠,電壓/電平轉換器用於將從USB介面的輸入信號從一個電壓域調整到UART介面的電壓域,或者將從UART介面的輸入信號從一個電壓域調整到USB介面的電壓域。
參考圖6,樹莓派112可經由GPIO介面260的40個接腳連接上JTAG附加板114。JTAG附加板114負責在樹莓派112和JTAG連接裝置140之間傳遞訊號,以及在樹莓派112和個人電腦130之間傳遞訊號。JTAG附加板114包含GPIO介面和type-C介面,GPIO介面連接樹莓派112和個人電腦130,而type-C介面連接JTAG連接裝置140。GPIO介面中的使用到的每個埠可經由電壓/電平轉換器連接到type-C介面上的指定埠,電壓/電平轉換器用於將從GPIO介面的輸入信號從一個電壓域調整到type-C介面的電壓域,或者將從type-C介面的輸入信號從一個電壓域調整到GPIO介面的電壓域。
JTAG連接裝置140可視為一個JTAG轉接器(JTAG adaptor),可以是20接腳轉10接腳、20接腳轉8接腳等,負責將樹莓派112經由JTAG附加板114模擬的JTAG命令、資料傳送給固態硬碟裝置120,以及將固態硬碟裝置120輸出的資料經由JTAG附加板114傳送給樹莓派112。JTAG連接裝置140包含type-C介面、JTAG介面、控制器和記憶體。JTAG連接裝置140的type-C介面可連接JTAG附加板114的type-C介面,以及JTAG連接裝置140的JTAG介面連接固態硬碟裝置120的JTAG介面123。在這裡需要注意的是,由於固態硬碟裝置120需要在試驗艙(test chamber)在高溫的環境下進行測試,將JTAG連接裝置140獨立出來,而不是讓JTAG連接裝置140整合到JTAG附加板114上,能夠讓固態硬碟裝置120和JTAG連接裝置140一起放置到試驗艙中進行除錯的操作。參考圖7的20接腳轉10接腳 的範例,包含用於連接JTAG附加板114的20接腳連接器(20-pin connector)710,以及用於連接JTAG介面123的10接腳連接器(10-pin connector)730。舉例來說,連接器710的第9個腳位從JTAG附加板114饋入測試時鐘(test clock,TCLK)訊號,連接器730的第4個腳位則輸出時鐘訊號給JTAG介面123。連接器710的第7個腳位從JTAG附加板114輸入測試模式選擇輸入(test mode select input,TMS)訊號,連接器730的第2個腳位則輸出測試模式選擇輸入訊號給JTAG介面123。連接器710的第5個腳位從JTAG附加板114輸入測試資料輸入(test data input,TDI)訊號,連接器730的第8個腳位則輸出測試資料輸入訊號給JTAG介面123。連接器730的第13個腳位從JTAG介面123輸入測試資料輸出(test data output,TDO)訊號,連接器710的第6個腳位則輸出測試資料輸出訊號給JTAG附加板114。連接器710的第10個腳位從JTAG附加板114輸入測試重置輸入(test reset input,TRST)訊號,連接器730的第3個腳位則輸出測試重置輸入訊號給JTAG介面123。連接器710的以上所述每個腳位可經由電壓/電平轉換器連接到連接器730的的指定腳位,電壓/電平轉換器用於將type-C介面的輸入信號從一個電壓域調整到JTAG介面的電壓域,或者將JTAG介面的輸入信號從一個電壓域調整到type-C介面的電壓域。
JTAG附加板114上可設置連接電源的三個繼電器(power relay)。參考圖8的GPIO介面260的範例接腳圖(pin-out diagram),腳位GPIO12、GPIO18和GPIO23用於分別控制JTAG附加板114上設置的三個繼電器(power relay)以驅動繼電器來饋入電源160至個人電腦130。腳位GPIO17連接到個人電腦130中的驅動LED的訊號線,用於偵測個人電腦130是否正確啟動。腳位GPIO16連接到固態硬碟裝置120的特定腳位,用於驅動固態硬碟裝置120進入ROM模式。腳位GPIO22連接到固態硬碟裝置120的SATA介面的特定腳位,用於驅 動固態硬碟裝置120進入或離開休眠模式(sleep mode)。在這裡需要注意的是,通過SATA介面進入的休眠模式會切斷固態硬碟裝置120中大部分元件(包含處理單元125)的供電以節省電力。換句話說,當通過SATA介面進入休眠模式時,固態硬碟裝置120中的處理單元125並不會執行任何操作。如上所述的除錯應用程式於發出JTAG命令時所離開的休眠模式,不同於通過SATA介面進入的休眠模式。腳位GPIO11、GPIO5、GPIO6、GPIO13、GPIO19和GPIO26通過用JTAG附加板114和JTAG連接裝置140連接固態硬碟裝置120中的JTAG介面123,用於讓樹莓派112中的處理單元210在執行除錯應用程式時模擬JTAG行為,通過這些腳位發送JTAG命令給固態硬碟裝置120,以及從固態硬碟裝置120獲取系統內編程碼、韌體資料等。例如,腳位GPIO5可用來傳送JTAG TDI訊號給固態硬碟裝置120,腳位GPIO6可用來從固態硬碟裝置120接收JTAG TDO訊號。關於JTAG行為的模擬細節,可參考2001年6月14准許的IEEE Standard Test Access Port and Boundary-Scan Architecture
參考圖2。樹莓派112是一種低成本的個人電腦,因此沒有實作低延遲周邊埠(low latency peripheral port,LLPP)的技術,其使用專屬的路徑來存取GPIO介面。當上層的除錯應用程式欲通過GPIO介面260發出JTAG命令來存取固態硬碟裝置120中的輔助寄存器122或記憶體126中的內容時,下層的GPIO驅動程式可依序通過AHB/ASB 222和APB 224發出硬體指令和參數給GPIO介面260,用於寫入(或稱為設定)GPIO介面260中相應於特定接腳的寄存器以完成JTAG命令的模擬。然而,由於硬體的限制,一些硬體指令可能會延遲到達APB 224。當兩個用於寫入GPIO介面260中的相同寄存器的硬體指令在非常短的時間區間先後到達APB控制器時,APB控制器可能會誤判成錯誤的硬體指令而捨棄其中的一個不執行,造成部分的系統內編程碼、韌體資料等無法從固態硬碟裝置120讀取回來。
為了解決如上所述的問題,本發明實施例修改運行期函式庫(runtime library)中的函數,此函數用於驅動GPIO介面260以完成操作,讓除錯應用程式可以呼叫此函數以完成如上所述的功能,例如發出JTAG命令來讀取固態硬碟裝置120中的快閃控制器121的處理單元125的識別碼、停止固態硬碟裝置120中的快閃控制器121的處理單元125、讓固態硬碟裝置120離開休眠模式、讀取固態硬碟裝置120的閃存模組128中儲存的系統內編程碼、讀取固態硬碟裝置120的SRAM、DRAM中的資料等。運行期函式庫是一種被編譯器(compiler)用來實現程式語言的內建函數集合,以提供該程式語言執行時支援的一種特殊的電腦程式函式庫。參考圖9,詳細說明如下:
步驟S910:從除錯應用程式接收驅動GPIO介面的請求,包含完成特定JTAG命令所需的參數。例如,相應於圖5的步驟S510,參考圖3,請求中的參數包含讀取輔助寄存器122中的第四個雙位元組的第0至7個位元的資訊。相應於圖5的步驟S530,參考圖3,請求中的參數包含將輔助寄存器122中的第五個雙位元組的第1個位元設為”1”的資訊。相應於圖5的步驟S540,參考圖3,請求中的參數包含將輔助寄存器122中的第五個雙位元組的第23個位元設定為”0”的資訊。相應於圖5的步驟S550,請求中的參數包含從閃存模組128的指定位址讀取指定長度的資料的資訊。相應於圖5的步驟S580,請求中的參數包含從SRAM的指定位址讀取指定長度的資料的資訊。相應於圖5的步驟S590,請求中的參數包含從DRAM的指定位址讀取指定長度的資料的資訊。
步驟S930:依據請求中攜帶的參數發出硬體指令給GPIO介面260以設定相應於TDI的GPIO接腳的寄存器,用於模擬特定JTAG的命令。
步驟S950:發出硬體指令給GPIO介面260以讀取相應於TDI的GPIO接腳的寄存器的值。由於這個步驟的操作,在依據兩個請求所產生 的設定相應於TDI的GPIO接腳的寄存器的硬體指令之間,插入一個讀取相應於TDI的GPIO接腳的寄存器值的硬體指令,可避免APB控制器將兩個在非常短的時間區間先後到達的設定相應於TDI的GPIO接腳的寄存器的硬體指令誤判成錯誤的硬體指令。在這裡需要注意的是,這個步驟也可執行於步驟S910和S930之間,本發明並不因此局限。
步驟S970:回覆驅動完成的訊息給除錯應用程式。
樹莓派112的處理單元210可週期性地執行程式庫中的另一個函數,用於週期性地驅動GPIO介面260,用於讀取相應於TDO的GPIO接腳的寄存器的值。讀取的值為之前通過相應於TDI的GPIO接腳所發出的模擬JTAG命令的執行結果,由固態硬碟裝置120產生並回覆,可包含例如輔助寄存器122的設定成功或失敗的訊息、從閃存模組128讀取的系統內編程碼、從SRAM或DRAM讀取的韌體資料等等。
本發明所述的方法中的全部或部分步驟可以計算機指令實現,例如特定硬體的驅動程式、韌體程式或軟體程式等。此外,也可實現於其他類型程式。所屬技術領域人員可將本發明實施例的方法撰寫成計算機指令,為求簡潔不再加以描述。依據本發明實施例方法實施的計算機指令可儲存於適當的電腦可讀取媒體,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1和圖2中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖5和圖9的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不 因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S910~S970:方法步驟

Claims (15)

  1. 一種固態硬碟裝置的除錯方法,由樹莓派的處理單元於載入和執行運行期函式庫中的函數時實施,所述方法包含:接收驅動通用輸入輸出介面的請求,包含完成聯合測試工作群組命令所需的參數;依據所述請求中攜帶的所述參數發出第一硬體指令給所述通用輸入輸出介面以設定相應於測試資料輸入的通用輸入輸出接腳的寄存器,用於模擬所述聯合測試工作群組命令給固態硬碟裝置,其中所述樹莓派通過所述通用輸入輸出介面耦接所述固態硬碟裝置;發出第二硬體指令給所述通用輸入輸出介面以讀取相應於所述測試資料輸入的所述通用輸入輸出接腳的所述寄存器的值;以及回覆驅動完成的訊息。
  2. 如請求項1所述的固態硬碟裝置的除錯方法,其中,相應於所述測試資料輸入的所述通用輸入輸出接腳上傳送的訊號關聯於聯合測試工作群組的規範。
  3. 如請求項1所述的固態硬碟裝置的除錯方法,其中,所述運行期函式庫是被編譯器用來實現程式語言的內建函數集合。
  4. 如請求項1所述的固態硬碟裝置的除錯方法,其中,所述聯合測試工作群組命令用於讀取所述固態硬碟裝置中的快閃控制器的處理單元的識別碼。
  5. 如請求項1所述的固態硬碟裝置的除錯方法,其中,所述聯合測 試工作群組命令用於停止所述固態硬碟裝置中的快閃控制器的處理單元。
  6. 如請求項1所述的固態硬碟裝置的除錯方法,其中,所述聯合測試工作群組命令用於讓所述固態硬碟裝置離開休眠模式。
  7. 如請求項1所述的固態硬碟裝置的除錯方法,其中,所述聯合測試工作群組命令用於讀取所述固態硬碟裝置的閃存模組中儲存的系統內編程碼。
  8. 如請求項1所述的固態硬碟裝置的除錯方法,其中,所述聯合測試工作群組命令用於讀取所述固態硬碟裝置的靜態隨機存取記憶體中的指定位置所儲存的資料。
  9. 如請求項1所述的固態硬碟裝置的除錯方法,其中,所述聯合測試工作群組命令用於讀取所述固態硬碟裝置的動態隨機存取記憶體中的指定位置所儲存的資料。
  10. 一種電腦程式產品,包含運行期函式庫中的函數的除錯程式碼,其中,當樹莓派的處理單元執行所述除錯程式碼時,實施如請求項1至9中任一項所述的固態硬碟裝置的除錯方法。
  11. 一種為固態硬碟裝置除錯的裝置,設置在樹莓派中,包含:通用輸入輸出介面,耦接固態硬碟裝置;以及處理單元,耦接所述通用輸入輸出介面,當載入並執行運行期函式庫中的函數時接收驅動所述通用輸入輸出介面的請求,包含完成聯合測試工作群組命令所需的參數;依據所述請求中攜帶的所述參數發出第一硬體指令給所述通用輸入輸出介面以設定相應於測試資料輸入的通用輸入輸 出接腳的寄存器,用於模擬所述聯合測試工作群組命令給所述固態硬碟裝置;發出第二硬體指令給所述通用輸入輸出介面以讀取相應於所述測試資料輸入的所述通用輸入輸出接腳的所述寄存器的值;以及回覆驅動完成的訊息。
  12. 如請求項11所述的固態硬碟裝置的除錯裝置,其中,相應於所述測試資料輸入的所述通用輸入輸出接腳上傳送的訊號關聯於聯合測試工作群組的規範。
  13. 如請求項11所述的固態硬碟裝置的除錯裝置,其中,所述運行期函式庫是被編譯器用來實現程式語言的內建函數集合。
  14. 如請求項11所述的固態硬碟裝置的除錯裝置,其中,所述聯合測試工作群組命令用於讀取所述固態硬碟裝置的靜態隨機存取記憶體中的指定位置所儲存的資料。
  15. 如請求項11所述的固態硬碟裝置的除錯裝置,其中,所述聯合測試工作群組命令用於讀取所述固態硬碟裝置的動態隨機存取記憶體中的指定位置所儲存的資料。
TW110135749A 2021-06-28 2021-09-27 固態硬碟裝置的除錯方法及裝置以及電腦程式產品 TWI794997B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163215732P 2021-06-28 2021-06-28
US63/215,732 2021-06-28

Publications (2)

Publication Number Publication Date
TW202301328A TW202301328A (zh) 2023-01-01
TWI794997B true TWI794997B (zh) 2023-03-01

Family

ID=84841755

Family Applications (3)

Application Number Title Priority Date Filing Date
TW110135718A TWI794996B (zh) 2021-06-28 2021-09-27 為固態硬碟裝置除錯的裝置及系統
TW110135711A TWI793774B (zh) 2021-06-28 2021-09-27 固態硬碟裝置的除錯方法及裝置以及電腦程式產品
TW110135749A TWI794997B (zh) 2021-06-28 2021-09-27 固態硬碟裝置的除錯方法及裝置以及電腦程式產品

Family Applications Before (2)

Application Number Title Priority Date Filing Date
TW110135718A TWI794996B (zh) 2021-06-28 2021-09-27 為固態硬碟裝置除錯的裝置及系統
TW110135711A TWI793774B (zh) 2021-06-28 2021-09-27 固態硬碟裝置的除錯方法及裝置以及電腦程式產品

Country Status (2)

Country Link
CN (3) CN115602241A (zh)
TW (3) TWI794996B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201710919A (zh) * 2015-06-30 2017-03-16 英特爾公司 指示定向的連接器
US9672091B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Storage device and debugging method thereof
TW201908974A (zh) * 2016-06-10 2019-03-01 美商利魁得股份有限公司 資料儲存系統中的多埠中介件架構
US20190129774A1 (en) * 2017-10-26 2019-05-02 SK Hynix Inc. Firmware event tracking for nand-based storage devices, and methods and instruction sets for performing the same
US20190236044A1 (en) * 2016-01-29 2019-08-01 Liqid Inc. Enhanced SSD Storage Device Form Factors
US20200013476A1 (en) * 2018-07-06 2020-01-09 SK Hynix Inc. Remote ssd debug via host/serial interface and method of executing the same
US20200073841A1 (en) * 2014-04-25 2020-03-05 Liqid Inc. Stacked Storage Drives In Storage Apparatuses
US20200300911A1 (en) * 2017-11-29 2020-09-24 Intel Corporation System, Apparatus And Method For In-Field Self Testing In A Diagnostic Sleep State

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201282473Y (zh) * 2007-12-28 2009-07-29 上海电力学院 基于ARM的ZigBee无线网络协调器
US9830297B2 (en) * 2015-02-26 2017-11-28 Spire Global, Inc. Processor system for control of modular autonomous system
US20160275036A1 (en) * 2015-03-19 2016-09-22 Western Digital Technologies, Inc. Single board computer interface
US10527673B2 (en) * 2016-08-01 2020-01-07 Microsoft Technology Licensing, Llc Hardware debug host

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200073841A1 (en) * 2014-04-25 2020-03-05 Liqid Inc. Stacked Storage Drives In Storage Apparatuses
TW201710919A (zh) * 2015-06-30 2017-03-16 英特爾公司 指示定向的連接器
US9672091B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Storage device and debugging method thereof
US20190236044A1 (en) * 2016-01-29 2019-08-01 Liqid Inc. Enhanced SSD Storage Device Form Factors
TW201908974A (zh) * 2016-06-10 2019-03-01 美商利魁得股份有限公司 資料儲存系統中的多埠中介件架構
US20190129774A1 (en) * 2017-10-26 2019-05-02 SK Hynix Inc. Firmware event tracking for nand-based storage devices, and methods and instruction sets for performing the same
CN109710451A (zh) * 2017-10-26 2019-05-03 爱思开海力士有限公司 基于nand的存储装置的固件事件跟踪及其执行方法和指令集
US20200300911A1 (en) * 2017-11-29 2020-09-24 Intel Corporation System, Apparatus And Method For In-Field Self Testing In A Diagnostic Sleep State
US20200013476A1 (en) * 2018-07-06 2020-01-09 SK Hynix Inc. Remote ssd debug via host/serial interface and method of executing the same

Also Published As

Publication number Publication date
TW202301362A (zh) 2023-01-01
CN115602240A (zh) 2023-01-13
TWI794996B (zh) 2023-03-01
TWI793774B (zh) 2023-02-21
TW202301324A (zh) 2023-01-01
CN115602239A (zh) 2023-01-13
CN115602241A (zh) 2023-01-13
TW202301328A (zh) 2023-01-01

Similar Documents

Publication Publication Date Title
US9158661B2 (en) Enhanced debugging for embedded devices
US10089212B2 (en) Memory system, information processing system, and host device outputting debugging information through a host interface
US9720797B2 (en) Flash memory controller, data processing system with flash memory controller and method of operating a flash memory controller
US7409330B2 (en) Method and system for software debugging using a simulator
KR101561854B1 (ko) Fpga 기반의 비실장형 스토리지 테스트 장치
TWI470420B (zh) 除錯方法及電腦系統
TWI588837B (zh) 具除錯控制器的系統單晶片及其操作方法
US11841398B2 (en) Method and apparatus and non-transitory computer-readable storage medium for debugging solid-state disk (SSD) device
WO2018018978A1 (zh) 一种通用串行总线控制器验证方法、系统及设备
US10606677B2 (en) Method of retrieving debugging data in UEFI and computer system thereof
US8495626B1 (en) Automated operating system installation
US10817405B2 (en) Storage device and debugging system thereof
CN202267954U (zh) 总线监控与调试控制装置
US11933847B2 (en) Apparatus and system for debugging solid-state disk (SSD) device
US20220413766A1 (en) Method and apparatus and non-transitory computer-readable storage medium for debugging solid-state disk (ssd) device
TWI794997B (zh) 固態硬碟裝置的除錯方法及裝置以及電腦程式產品
CN114461142B (zh) 一种读写Flash数据的方法、系统、装置及介质
CN112634977B (zh) 具有除错存储器接口的芯片及其除错方法
US10922023B2 (en) Method for accessing code SRAM and electronic device
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
CN112765021A (zh) 一种引导程序的调试检验方法、装置、设备及存储介质
CN100426234C (zh) 测量基本输入输出系统的自我开机测试时间的方法
JPH1165898A (ja) 電子計算機の保守方式
TWI801412B (zh) 偵錯方法
US20230376403A1 (en) Debug device, debug system, and debug method for testing storage device