CN115602241A - 为固态硬盘装置调试的装置和系统 - Google Patents

为固态硬盘装置调试的装置和系统 Download PDF

Info

Publication number
CN115602241A
CN115602241A CN202111134188.5A CN202111134188A CN115602241A CN 115602241 A CN115602241 A CN 115602241A CN 202111134188 A CN202111134188 A CN 202111134188A CN 115602241 A CN115602241 A CN 115602241A
Authority
CN
China
Prior art keywords
solid state
disk device
state disk
joint test
interface
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202111134188.5A
Other languages
English (en)
Inventor
蔡函志
钟明坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to US17/737,351 priority Critical patent/US11933847B2/en
Publication of CN115602241A publication Critical patent/CN115602241A/zh
Pending legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种为固态硬盘装置调试的装置和系统,该装置包含:联合测试工作群组附加板;以及树莓派。树莓派包含通用输入输出接口,耦接联合测试工作群组附加板;以及处理单元,耦接通用输入输出接口。处理单元用于通过通用输入输出接口模拟多个联合测试工作群组命令给固态硬盘装置,以从固态硬盘装置转储固态硬盘装置运行时产生的数据。使用如上所述的装置可降低调试固态硬盘装置所需的成本。

Description

为固态硬盘装置调试的装置和系统
技术领域
本发明涉及存储装置,特别是,本发明涉及一种为固态硬盘装置调试的装置和系统。
背景技术
目前使用市售的内电路仿真器(in-circuit emulator,ICE)来搜集固态硬盘(solid state disk,SSD)装置运行时的固件状态,会遭遇到以下的问题:内电路仿真器无法被控制来满足所有的应用环境,举例来说,当内电路仿真器停止时会执行一些固定的操作,例如,停止固态硬盘产品中的中央处理器等,导致主机端无法接着存取固态硬盘产品中的数据。目前的内电路仿真器在需要改变地址才能读取硬件寄存器时,例如,当工程师在固件卡住时还希望存取硬件寄存器去知道NAND闪存的状态时,回应的速度很慢。此外,内电路仿真器非常昂贵,并且调试成本需要进一步降低。因此,本发明提出一种为固态硬盘装置调试的装置和系统,用于解决如上所述的问题。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺失,实为有待解决的问题。
本发明涉及一种为固态硬盘装置调试的装置,包含:联合测试工作群组附加板;以及树莓派。树莓派包含通用输入输出接口,耦接联合测试工作群组附加板;以及处理单元,耦接通用输入输出接口。处理单元用于通过通用输入输出接口模拟多个联合测试工作群组命令给固态硬盘装置,以从固态硬盘装置转储固态硬盘装置运行时产生的数据。
本发明还涉及一种为固态硬盘装置调试的系统,包含如上所述的为固态硬盘装置调试的装置。
上述实施例的优点之一,使用如上所述的装置可降低调试固态硬盘装置所需的成本。
本发明的其他优点将配合以下的说明和说明书附图进行更详细的解说。
附图说明
此处所说明的说明书附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的调试系统的框图。
图2为依据本发明实施例的树莓派的系统架构图。
图3为依据本发明实施例的Argonaut精简指令集计算机核心(Argonaut ReducedInstruction Set Computer Core,ARC)辅助寄存器集的示意图。
图4为依据本发明实施例的Argonaut精简指令集计算机器(Argonaut RISCMachine,ARM)辅助控制寄存器和二级辅助控制寄存器的比特分配示意图。
图5为依据本发明实施例的由调试应用程序实施的固态硬盘装置调试的方法流程图。
图6为依据本发明实施例的树莓派的通用输入输出(General-Purpose Input/Output,GPIO)接口的引脚示意图。
图7为依据本发明实施例的联合测试工作群组(Joint Test Action Group,JTAG)连接装置中的JTAG 20引脚转10引脚的示意图。
图8为依据本发明实施例的树莓派的GPIO接口的引脚图。
图9为依据本发明实施例的由执行时程序库中的函数所实施的固态硬盘装置调试的方法流程图。
附图标记说明
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 蓝牙模块
710 20引脚连接器
730 10引脚连接器
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用在本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。使用于描述组件之间关系的其他语词也可类似方式解读,例如“介于”相对于“直接介于”,或者是“邻接”相对于“直接邻接”等等。
参考图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)、通用闪存记忆存储(UniversalFlash Storage UFS)、嵌入式多媒体卡(Embedded Multi-Media Card,eMMC)等通信协议和个人计算机130中的装置接口132通信。闪存控制器121还包含处理单元125,通过总线架构和主机接口121、辅助寄存器(auxiliary register,AUX)122、JTAG接口123、UART接口124、存储器126、装置接口127彼此连接以传送和接收命令、控制信号、信息、数据等。处理单元125可使用多种方式实施,如使用通用硬件(例如,单一处理器、具并行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行固件(firmware)指令过程中存取辅助寄存器122和存储器126,用于读取和存储执行过程中使用到的变量、数据表、数据、信息等。例如,处理单元125可以是Argonaut精简指令集计算机核心(Argonaut ReducedInstruction Set Computer,RISC Core,简称为ARC)、Argonaut精简指令集计算机器(Argonaut RISC Machine,简称为ARM)等。辅助寄存器122和存储器126中存储的内容是调试时的重要参考依据。在一些实施例中,存储器126可为静态随机存取存储器(StaticRandom Access Memory,SRAM)。在另一些实施例中,存储器126可包含静态随机存取存储器和动态随机存取存储器(Dynamic Random Access Memory,DRAM)。装置接口127可使用双倍数据率(Double Data Rate DDR)通信协议彼此通信,例如,开放NAND闪存(Open NANDFlash Interface ONFI)、双倍数据率开关(DDR Toggle)或其他通信协议和闪存模块128通信,用于读取、写入或者抹除数据。固态硬盘装置120通过JTAG接口连接上JTAG连接装置140,并且通过UART接口124连接上UART录制装置150。
辅助寄存器122可服从ARC、ARM或其他的规范。例如,图3显示从2008年四月发表的ARCompactTM Instruction Set Architecture:Programmer’s Reference的第45至46页摘录出的辅助寄存器集的摘要。图4中的A部分显示从2010至2011年发表的CortexTM-R5 andCortex-R5F revision:r1p1,Technical Reference Manual的第4-41页摘录出的比特分配。图4中的B部分显示从2010至2011年发表的CortexTM-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 andBoundary-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之间高速频宽要求。APB224适用于低功耗的外设设备,例如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 FlashStorage,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 BDA0003281448720000111
Figure BDA0003281448720000121
通过如上所述由调试应用程序所实施的固态硬盘装置的调试方法,可较内电路仿真器具有弹性,以解决调试时遭遇到的问题。例如,在固态硬盘装置的固件运行卡住时可以快速存取硬件寄存器以获取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 StandardTest 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、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1和图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图5和图9的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然而其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (13)

1.一种为固态硬盘装置调试的装置,其特征在于,包括:
联合测试工作群组附加板,耦接所述固态硬盘装置;以及
树莓派,包含:
第一通用输入输出接口,耦接所述联合测试工作群组附加板;以及
处理单元,耦接所述第一通用输入输出接口,用于通过所述第一通用输入输出接口模拟多个联合测试工作群组命令给所述固态硬盘装置,以从所述固态硬盘装置转储所述固态硬盘装置运行时产生的数据。
2.如权利要求1所述的为固态硬盘装置调试的装置,其特征在于,所述树莓派为基于Linux操作系统的单芯片计算机。
3.如权利要求1所述的为固态硬盘装置调试的装置,其特征在于,所述联合测试工作群组附加板包括:
第二通用输入输出接口,耦接所述第一通用输入输出接口;以及
第一type-C接口,耦接联合测试工作群组连接器中的第二type-C接口,使得所述联合测试工作群组命令通过所述联合测试工作群组连接器被发送给所述固态硬盘装置。
4.如权利要求3所述的为固态硬盘装置调试的装置,其特征在于,所述联合测试工作群组附加板包括:
继电器,连接电源,用于让所述树莓派通过所述第二通用输入输出接口控制所述继电器以馈入所述电源至个人电脑和所述固态硬盘装置,其中所述个人电脑连接所述固态硬盘装置。
5.如权利要求1所述的为固态硬盘装置调试的装置,其特征在于,所述树莓派包括:
无线通信模块,耦接所述处理单元,用于从远端接收调试请求,
其中,所述处理单元载入并执行调试应用程序来回应所述调试请求,用于从所述固态硬盘装置转储所述固态硬盘装置运行时产生的数据。
6.如权利要求1所述的为固态硬盘装置调试的装置,其特征在于,所述处理单元用于通过所述第一通用输入输出接口模拟第一联合测试工作群组命令传给所述固态硬盘装置,用于停止所述固态硬盘装置中的闪存控制器的处理单元的运行;通过所述第一通用输入输出接口模拟第二联合测试工作群组命令给所述固态硬盘装置,用于让所述固态硬盘装置离开休眠模式;以及通过所述第一通用输入输出接口模拟第三联合测试工作群组命令给所述固态硬盘装置,用于从所述固态硬盘装置中的静态随机存取存储器的指定地址读取指定长度的数据。
7.如权利要求6所述的为固态硬盘装置调试的装置,其特征在于,所述处理单元用于通过所述第一通用输入输出接口模拟第四联合测试工作群组命令给所述固态硬盘装置,用于从所述固态硬盘装置中的动态随机存取存储器的指定地址读取指定长度的数据。
8.一种为固态硬盘装置调试的系统,其特征在于,包括:
调试装置,包括:
联合测试工作群组附加板,包括:
第一通用输入输出接口;以及
第一type-C接口;以及
树莓派,包括:
第二通用输入输出接口,耦接所述第一通用输入输出接口;以及处理单元,耦接所述第二通用输入输出接口,用于通过所述第二通用输入输出接口模拟多个联合测试工作群组命令并经由所述联合测试工作群组附加板传给所述固态硬盘装置,以通过所述第二通用输入输出接口从所述固态硬盘装置转储所述固态硬盘装置运行时产生的数据。
9.如权利要求8所述的为固态硬盘装置调试的系统,其特征在于,包括:联合测试工作群组连接器,包括:
第一联合测试工作群组接口,耦接所述固态硬盘装置中的第二联合测试工作群组接口;以及
第二type-C接口,耦接所述联合测试工作群组附加板中的所述第一type-C接口,
其中,所述联合测试工作群组命令从所述第二type-C接口中的第一引脚接收,并且经由所述第一联合测试工作群组接口中的第二引脚传送给所述固态硬盘装置,
其中,所述固态硬盘装置运行时产生的所述数据从所述第一联合测试工作群组接口中的第三引脚接收,并且经由所述第一联合测试工作群组接口中的第四引脚传送给所述联合测试工作群组附加板。
10.如权利要求9所述的为固态硬盘装置调试的系统,其特征在于,包括:通用非同步收发器录制装置,包括:
第一通用非同步收发器接口,耦接所述固态硬盘装置中的第二通用非同步收发器接口;以及
第一通用串行总线接口,耦接所述树莓派中的第二通用串行总线接口,用于将从所述固态硬盘装置接收到的日志信息传送给所述树莓派。
11.如权利要求8所述的为固态硬盘装置调试的系统,其特征在于,所述树莓派包括:
无线通信模块,耦接所述处理单元,用于从远端接收调试请求,
其中,所述处理单元载入并执行调试应用程序来回应所述调试请求,用于从所述固态硬盘装置转储所述固态硬盘装置运行时产生的数据。
12.如权利要求8所述的为固态硬盘装置调试的系统,其特征在于,所述处理单元通过所述第二通用输入输出接口模拟第一联合测试工作群组命令传给所述固态硬盘装置,用于停止所述固态硬盘装置中的闪存控制器的处理单元的运行;通过所述第二通用输入输出接口模拟第二联合测试工作群组命令给所述固态硬盘装置,用于让所述固态硬盘装置离开休眠模式;以及通过所述第二通用输入输出接口模拟第三联合测试工作群组命令给所述固态硬盘装置,用于从所述固态硬盘装置中的静态随机存取存储器的指定地址读取指定长度的数据。
13.如权利要求12所述的为固态硬盘装置调试的系统,其特征在于,所述处理单元通过所述第二通用输入输出接口模拟第四联合测试工作群组命令给所述固态硬盘装置,用于从所述固态硬盘装置中的动态随机存取存储器的指定地址读取指定长度的数据。
CN202111134188.5A 2021-06-28 2021-09-27 为固态硬盘装置调试的装置和系统 Pending CN115602241A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/737,351 US11933847B2 (en) 2021-06-28 2022-05-05 Apparatus and system for debugging solid-state disk (SSD) device

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 (1)

Publication Number Publication Date
CN115602241A true CN115602241A (zh) 2023-01-13

Family

ID=84841755

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202111134184.7A Pending CN115602240A (zh) 2021-06-28 2021-09-27 计算机可读取存储介质和固态硬盘装置的调试方法及装置
CN202111133825.7A Pending CN115602239A (zh) 2021-06-28 2021-09-27 计算机可读取存储介质和固态硬盘装置的调试方法及装置
CN202111134188.5A Pending CN115602241A (zh) 2021-06-28 2021-09-27 为固态硬盘装置调试的装置和系统

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN202111134184.7A Pending CN115602240A (zh) 2021-06-28 2021-09-27 计算机可读取存储介质和固态硬盘装置的调试方法及装置
CN202111133825.7A Pending CN115602239A (zh) 2021-06-28 2021-09-27 计算机可读取存储介质和固态硬盘装置的调试方法及装置

Country Status (2)

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

Family Cites Families (12)

* 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无线网络协调器
US10467166B2 (en) * 2014-04-25 2019-11-05 Liqid Inc. Stacked-device peripheral storage card
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
US10088514B2 (en) * 2015-06-30 2018-10-02 Intel Corporation Orientation indicator with pin signal alteration
US9672091B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Storage device and debugging method thereof
US10255215B2 (en) * 2016-01-29 2019-04-09 Liqid Inc. Enhanced PCIe storage device form factors
WO2017214495A1 (en) * 2016-06-10 2017-12-14 Liqid Inc. Multi-port interposer architectures in data storage systems
US10527673B2 (en) * 2016-08-01 2020-01-07 Microsoft Technology Licensing, Llc Hardware debug host
US11294743B2 (en) * 2017-10-26 2022-04-05 SK Hynix Inc. Firmware event tracking for NAND-based storage devices, and methods and instruction sets for performing the same
US10620266B2 (en) * 2017-11-29 2020-04-14 Intel Corporation System, apparatus and method for in-field self testing in a diagnostic sleep state
CN110689915B (zh) * 2018-07-06 2023-06-27 爱思开海力士有限公司 经由主机/串行接口的远程ssd调试及其执行方法

Also Published As

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

Similar Documents

Publication Publication Date Title
US10261701B2 (en) Methods to communicate a timestamp to a storage system
US8566644B1 (en) System and method for debugging a target computer using SMBus
US9158661B2 (en) Enhanced debugging for embedded devices
US10089212B2 (en) Memory system, information processing system, and host device outputting debugging information through a host interface
JP4510359B2 (ja) 多機能半導体記憶装置、及びホスト・コンピュータを起動させる方法
KR101561854B1 (ko) Fpga 기반의 비실장형 스토리지 테스트 장치
TWI503673B (zh) 電腦系統、初始化電腦系統之方法及電腦程式產品
US11841398B2 (en) Method and apparatus and non-transitory computer-readable storage medium for debugging solid-state disk (SSD) device
TWI588837B (zh) 具除錯控制器的系統單晶片及其操作方法
WO2018018978A1 (zh) 一种通用串行总线控制器验证方法、系统及设备
CN113157508B (zh) 嵌入式系统的测试方法、系统、装置、设备及存储介质
US6442725B1 (en) System and method for intelligent analysis probe
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
US7246038B2 (en) Method, system, and article of manufacture for running diagnostics related to a device
TWI794996B (zh) 為固態硬碟裝置除錯的裝置及系統
CN114461142B (zh) 一种读写Flash数据的方法、系统、装置及介质
CN112885403B (zh) 一种Flash控制器的功能测试方法、装置及设备
CN208384555U (zh) 处理器芯片仿真器
CN107544909B (zh) 一种处理器芯片仿真器
AbdElSalam NVMe solid state drive verification solution using HW emulation and virtual device technologies
CN107577520B (zh) 带有非易失性存储器的处理器芯片仿真器
JP2005353020A (ja) コンピュータプログラムのシミュレーション方式
Harvey Automated device for Raspberry Pi Pico recovery
CN104268100A (zh) Sata储存装置、应用该装置的开机方法及基本系统更新方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination