经由主机/串行接口的远程SSD调试及其执行方法与流程

文档序号:19685004发布日期:2020-01-14 17:56阅读:310来源:国知局
经由主机/串行接口的远程SSD调试及其执行方法与流程

相关申请的交叉引用

本申请要求于2018年7月6日提交的申请号为62/694,688的美国临时申请的权益,该申请的全部内容通过引用并入本文。

本公开的实施例涉及一种经由主机/串行接口来远程调试固态驱动器(ssd)的配置及执行这种方案的方法。



背景技术:

计算机环境范例已经转变为可在任何时间和任何地点使用的普适计算系统。因此,诸如移动电话、数码相机和笔记本计算机的便携式电子装置的使用已经快速增长。这些便携式电子装置通常使用具有存储器装置的存储器系统,即数据存储装置。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。

使用存储器装置的数据存储装置由于不具有移动部件而提供优良的稳定性、耐用性、高信息存取速度以及低功耗。具有这种优点的数据存储装置的示例包括通用串行总线(usb)存储器装置、具有各种接口的存储卡以及固态驱动器(ssd)。

ssd可包括闪速存储器组件和控制器,控制器包括将闪速存储器组件桥接到ssd输入/输出(i/o)接口的电子器件。ssd控制器可包括执行诸如固件的功能组件的嵌入式处理器。ssd功能组件通常是装置特定的,并且在大多数情况下可被更新。

两种主要类型的闪速存储器以nand和nor逻辑门命名。单独的闪速存储器单元展现出与其相应的门的内部特性类似的内部特性。nand型闪速存储器可以以块(或页面)进行写入和读取,这些块(或页面)通常比整个存储空间小很多。nor型闪存允许将单个机器字(字节)独立地写入擦除位置或进行读取。nand型闪速存储器主要在存储卡、usb闪存驱动器、ssd和类似产品中操作以用于数据的一般存储和传输。

ssd通常包括以下主要组件:动态随机存取存储器(dram)、片上系统(soc)以及nand。为了调试ssd组件,在设置有ssd组件的印制电路板(pcb)上焊接特定的调试端口,以用于通用异步收发器(uart)或联合测试行动组(jtag)测试或验证。在uart壳(shell)环境中,通过使用物理电缆连接来执行uart命令。而且,目前,使用基于uart或主机协议的jtag来查看可操作ssd的当前内部状态,需要与ssd进行物理连接。然而,在一些环境中,这种连接可能是不可能或不可行的。

在这种背景下,提出了本发明的实施例。



技术实现要素:

本发明的一个方面能够利用vu(供应商唯一(vendorunique))命令来替换与ssd的调试端口的uart物理电缆连接,这使得可基于主机协议使用uart,其中主机协议例如串行高级技术附件(sata)、高速非易失性存储器(nvme)等。

本发明的另一方面能够利用vu命令或uart来替换与ssd的调试端口的jtag物理电缆连接。

因此,本发明的一个方面包括一种调试存储器系统的方法,存储器系统包括存储器装置。该方法包括将调试逻辑存储在存储器装置中;经由主机协议将供应商唯一(vu)命令从主机传输到存储器系统,而无需使用与存储器系统上的调试端口的物理电缆连接;并且响应于vu命令来调试存储器系统中的至少一个组件。

本发明的另一方面涉及一种存储器系统,该存储器系统包括多个固件内核;与固件内核中的每一个通信的uart串行硬件元件;存储uart日志的存储器装置,uart日志包含调试信息;在至少一个固件内核中实现并被配置成与uart日志通信的uart嗅探器。vu命令基于vu主机协议从主机传输到存储器系统来用于调试存储器系统,而无需使用与存储器系统上的调试端口的物理电缆连接。

在本发明的另一方面中,提供了一种调试存储器系统的方法,该存储器系统包括存储器装置。该方法包括:在主机客户端与存储器装置的固件内核中的至少一个服务器模块之间进行通信;在主机转换器和固件内核中的至少一个服务器模块之间进行通信;在存储器装置接口和主机接口之间进行通信;并且根据通信操作来调试存储器系统中的至少一个组件。

从以下描述中,本发明另外的方面将变得显而易见。

附图说明

图1是示出根据本发明的实施例的存储器系统的示图。

图2是示出根据本发明的实施例的存储器系统的框图。

图3是示出根据本发明的实施例的存储器系统的存储器装置的存储块的电路图。

图4是示出ssd的pcb上的调试端口的示意图。

图5是示出根据本发明的实施例的将uart日志存储在例如nand的存储器装置中的示意图。

图6是示出根据本发明的实施例的基于供应商唯一(vu)主机协议的uart协议串行化的示意图。

图7是示出根据本发明的实施例的远程串行调试操作的流程的示意图。

图8是示出根据本发明的实施例的经由虚拟调试模块的远程串行调试(rsd)实施方案的示意图。

图9是示出根据本发明的实施例的经由gnu调试器(gdb)远程串行协议的rsd实施方案的示意图。

图10是示出根据本发明的实施例的在无需使用与存储器系统上的调试端口的物理电缆连接的情况下调试存储器系统的进程的流程图。

具体实施方式

以下参照附图更详细地描述各个实施例。然而,本发明可以不同形式实施,因此不应被解释为限于本文阐述的实施例。相反,提供这些实施例以使本公开是彻底的且完整的,并且将本发明的范围全面地传达给本领域的技术人员。此外,本文中对“一个实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。在整个公开中,相同的附图标记在本发明的附图和实施例中表示相同的部件。

本发明可以多种方式实施,包括进程;设备;系统;物质的组成;呈现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如适于执行存储在联接到处理器的存储器上的指令和/或由联接到处理器的存储器提供的指令的处理器。在本说明书中,这些实施方式或本发明可能采取的任何其它形式可被称为技术。通常,所公开进程的步骤的顺序可在本发明的范围内改变。除非另有说明,否则被描述为适于执行任务的诸如处理器或者存储器的组件可被实施为暂时配置为在给定时间执行任务的一般组件或被制造为执行任务的特定组件。如本文所使用的,术语“处理器”等指适于处理诸如计算机程序指令的数据的一个或多个装置、电路和/或处理内核。

下面提供了本发明的实施例的详细描述以及示出本发明各方面的附图。结合这些实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定。本发明包括处于权利要求范围内的许多替换、修改和等同方案。为了提供对本发明的全面理解,在下面的描述中阐述了许多具体细节。为了示例的目的提供这些细节,并且可在没有一些或所有这些具体细节的情况下,根据权利要求实施本发明。为了清楚,没有详细描述与本发明相关的技术领域中公知的技术内容,以免不必要地模糊本发明。

图1是示意性地示出根据本发明的实施例的存储器系统的框图。

参照图1,存储器系统10可包括存储器控制器100和半导体存储器装置200,半导体存储器装置200可代表多于一个的这种装置。半导体存储器装置200优选的是闪速存储器装置,特别是nand型的闪速存储器装置。

存储器控制器100可控制半导体存储器装置200的全部操作。

半导体存储器装置200可在存储器控制器100的控制下执行一个或多个擦除操作、编程操作和读取操作。半导体存储器装置200可通过输入/输出(i/o)线接收命令cmd、地址addr和数据data。半导体存储器装置200可通过电源线接收电力pwr,并且通过控制线接收控制信号ctrl。控制信号ctrl可包括命令锁存启用(cle)信号、地址锁存启用(ale)信号、芯片启用(ce)信号、写入启用(we)信号、读取启用(re)信号等。

存储器控制器100和半导体存储器装置200可被集成在诸如固态驱动器(ssd)的单个半导体装置中。ssd可包括用于在其中存储数据的存储装置。当存储器系统10被用在ssd中时,联接到存储器系统10的主机(未示出)的操作速度可显著提升。

存储器控制器100和半导体存储器装置200可被集成在诸如存储卡的单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可被如此集成以配置:个人计算机存储卡国际协会(pcmcia)的pc卡、紧凑式闪存(cf)卡、智能媒体(sm)卡、记忆棒、多媒体卡(mmc)、缩小尺寸的多媒体卡(rs-mmc)、微型版本的mmc(微型mmc)、安全数字(sd)卡、迷你安全数字(迷你sd)卡、微型安全数字(微型sd)卡、高容量安全数字(sdhc)和/或通用闪存(ufs)。

在另一实施例中,存储器系统10可被提供为诸如以下的电子装置中的各种组件中的一种:计算机、超移动pc(umpc)、工作站、上网本计算机、个人数字助理(pda)、便携式计算机、网络平板pc、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(pmp)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(dmb)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境中接收和发送信息的装置、射频识别(rfid)装置以及家庭网络的各种电子装置中的一种、计算机网络的各种电子装置中的一种、远程信息处理网络的各种电子装置中的一种或计算系统的各种组件中的一种。

图2是示出根据本发明的实施例的存储器系统的详细框图。例如,图2的存储器系统可描述图1所示的存储器系统10。

参照图2,存储器系统10可包括存储器控制器100和半导体存储器装置200。存储器系统10可响应于来自主机装置的请求而操作,并且特别地,存储待由主机装置访问的数据。

主机装置可利用各种类型电子装置中的任意一种来实施。在一些实施例中,主机装置可包括诸如以下的电子装置:台式计算机、工作站、三维(3d)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、和/或数字视频记录器以及数字视频播放器。在一些实施例中,主机装置可包括诸如以下的便携式电子装置:移动电话、智能电话、电子书、mp3播放器、便携式多媒体播放器(pmp)和/或便携式游戏机。

存储器装置200可存储待由主机装置访问的数据。

存储器装置200可利用诸如动态随机存取存储器(dram)和/或静态随机存取存储器(sram)的易失性存储器装置或诸如只读存储器(rom)、掩模rom(mrom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、铁电随机存取存储器(fram)、相变ram(pram)、磁阻ram(mram)和/或电阻式ram(rram)的非易失性存储器装置来实施。

控制器100可控制数据在存储器装置200中的存储。例如,控制器100可响应于来自主机装置的请求来控制存储器装置200。控制器100可将从存储器装置200读取的数据提供给主机装置并可将从主机装置提供的数据存储到存储器装置200中。

控制器100可包括通过总线160联接的存储装置110、可被实施为诸如中央处理单元(cpu)的处理器的控制组件120、错误校正码(ecc)组件130、主机接口(i/f)140和存储器接口(i/f)150。

存储装置110可用作存储器系统10和控制器100的工作存储器,并且存储用于驱动存储器系统10和控制器100的数据。当控制器100控制存储器装置200的操作时,存储装置110可存储由控制器100和存储器装置200用于诸如读取操作、写入操作、编程操作和擦除操作的操作的数据。

存储装置110可利用诸如静态随机存取存储器(sram)或动态随机存取存储器(dram)的易失性存储器实施。如上所述,存储装置110可将由主机装置使用的数据存储在存储器装置200中,以用于读取操作和写入操作。为了存储数据,存储装置110可包括程序存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。存储装置110可包括哈希表115。

控制组件120可控制存储器系统10的一般操作,以及响应于来自主机装置的写入请求或读取请求而控制存储器装置200的写入操作或读取操作。控制组件120可驱动被称为闪存转换层(ftl)125的固件来控制存储器系统10的一般操作。例如,ftl125可执行诸如逻辑到物理(l2p)映射、损耗均衡、垃圾收集(gc)和/或坏块处理的操作。ftl125可作为固件被实施在控制器100中,且更具体地,被实施在控制组件120中。l2p映射可被称为逻辑块寻址。

在读取操作期间,ecc组件130可检测并校正从存储器装置200读取的数据中的错误。当错误位的数量大于或等于可校正错误位的阈值数量时,ecc组件130不校正错误位,而是可以输出指示校正错误位失败的错误校正失败信号。

ecc组件130可基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(ldpc)码、博斯-查德胡里-霍昆格姆(bose-chaudhri-hocquenghem,bch)码、turbo码、turbo乘积码(tpc)、里德-所罗门(reed-solomon,rs)码、卷积码、递归系统码(rsc)、网格编码调制(tcm)或分组编码调制(bcm)。ecc组件130可包括适于错误校正操作的任意和所有电路、系统或装置。

主机接口140可通过诸如以下的各种接口协议中的一种或多种与主机装置通信:通用串行总线(usb)、多媒体卡(mmc)、高速外围组件互连(pci-e或pcie)、小型计算机系统接口(scsi)、串列scsi(sas)、串行高级技术附件(sata)、并行高级技术附件(pata)、高速非易失性存储器(nvme)、增强型小型磁盘接口(esdi)以及电子集成驱动器(ide)。

存储器接口150可提供在控制器100和存储器装置200之间的接口连接,以允许控制器100响应于来自主机装置的请求来控制存储器装置200。存储器接口150可在控制组件(或cpu)120的控制下生成用于存储器装置200的控制信号并处理数据。当存储器装置200是诸如nand闪速存储器的闪速存储器时,存储器接口150可在cpu120的控制下生成用于存储器的控制信号并处理数据。

存储器装置200可包括存储器单元阵列210、控制电路220、电压生成电路230、行解码器240、可以是页面缓冲器阵列形式的页面缓冲器(阵列)250、列解码器260和输入/输出电路270。存储器单元阵列210可包括可存储数据的多个存储块211。可将存储块的子集分组到各个超级块(sb)以用于某些操作。下面更详细地描述sb及其在本发明的实施例环境下的用途。

电压生成电路230、行解码器240、页面缓冲器(阵列)250、列解码器260和输入/输出电路270可形成存储器单元阵列210的外围电路。外围电路可执行存储器单元阵列210的编程操作、读取操作或擦除操作。控制电路220可控制外围电路。

电压生成电路230可生成各种电平的操作电压。例如,在擦除操作中,电压生成电路230可生成各种电平的操作电压,诸如擦除电压和通过电压。

行解码器240可与电压生成电路230和多个存储块211电通信。行解码器240可响应于由控制电路220生成的行地址radd而在多个存储块211之中选择至少一个存储块,并将从电压生成电路230提供的操作电压传输到所选择的存储块。

页面缓冲器(阵列)250可通过位线bl与存储器单元阵列210电通信(如图3所示)。响应于由控制电路220生成的页面缓冲器控制信号,页面缓冲器(阵列)250可利用正电压对位线bl进行预充电,在编程操作中向所选择的存储块传输数据以及在读取操作中从所选择的存储块接收数据,或者临时存储传输的数据。

列解码器260可向页面缓冲器(阵列)250传输数据以及从页面缓冲器(阵列)250接收数据,并且还可与输入/输出电路270交换数据。

输入/输出电路270可通过输入/输出电路270向控制电路220传输从外部装置(例如,存储器控制器100)接收的命令和地址,并且将数据从外部装置传输到列解码器260,或将数据从列解码器260输出到外部装置。

控制电路220可响应于命令和地址来控制外围电路。

图3是示出根据本发明的实施例的半导体存储器装置的存储块的电路图。例如,图3的存储块可以是图2所示的存储器单元阵列210中的存储块211中的任意一个。

参照图3,示例性存储块211可包括联接到行解码器240的多个字线wl0至wln-1、漏极选择线dsl和源极选择线ssl。这些线可并行地布置,其中多个字线处于dsl与ssl之间。

示例性存储块211可进一步包括分别联接到位线bl0至blm-1的多个单元串221。每列的单元串可包括一个或多个漏极选择晶体管dst和一个或多个源极选择晶体管sst。在所示实施例中,每一个单元串具有一个dst和一个sst。在单元串中,多个存储器单元或存储器单元晶体管mc0至mcn-1可串联联接在选择晶体管dst和sst之间。存储器单元中的每一个可被形成为存储多位数据信息的多层单元(mlc)。

每一个单元串中的sst的源极可联接到公共源极线csl,并且每一个dst的漏极可联接到相应的位线。单元串中sst的栅极可联接到ssl,并且单元串中的dst的栅极可联接到dsl。跨越单元串的存储器单元的栅极可联接到各自的字线。也就是说,存储器单元mc0的栅极联接到相应的字线wl0,存储器单元mc1的栅极联接到相应的字线wl1等。联接到特定字线的存储器单元组可被称为物理页面。因此,存储块211中的物理页面的数量可对应于字线的数量。

如前所述,页面缓冲器(阵列)250可以是包括联接到位线bl0至blm-1的多个页面缓冲器251的页面缓冲器阵列的形式。页面缓冲器251可响应于页面缓冲器控制信号进行操作。例如,在读取或验证操作期间,页面缓冲器251可临时存储通过位线bl0至blm-1接收的数据,或者感测位线的电压或电流。

在一些实施例中,存储块211可包括nand型闪速存储器单元。然而,存储块211不限于这种单元类型,而是可包括nor型闪速存储器单元。存储器单元阵列210可被实施为混合闪速存储器或1-nand闪速存储器,其中混合闪速存储器中组合了两种或更多种类型的存储器单元,1-nand闪速存储器中控制器被嵌入在存储器芯片内部。

如前所述,存储器控制器100和半导体存储器装置200可集成在ssd中。参照图4,示例性ssd42可设置在pcb41上。ssd42的主要组件包括dram43、soc44和nand45。调试端口46可焊接在pcb41上。电缆可附接到调试端口46,以获得对ssd42的组件的访问,以便对数据结构和变量进行查看、测试和验证等。然而,在一些环境中,这种物理连接要么不可能,要么不可行。

本发明的实施例提供了经由主机/串行接口来远程调试ssd的技术。在uart壳环境下的实施例中,利用vu命令来替换与调试端口46的uart物理电缆连接。在基于uart或主机协议的jtag环境下的另一实施例中,利用vu命令或uart来替换与调试端口46的jtag物理连接。

图5是示出在uart壳环境下的根据本发明的实施例的将uart日志存储在例如nand的存储器装置中的示意图。如图5所示,ssd52包括soc54和nand55。ssd52也可包括其它组件,例如dram。未示出这样的其它组件以更清楚地呈现实施例的特征。

soc54可包括n个固件内核,n个固件内核包括内核#1固件56-1至内核#n固件56-n。每个固件内核56-1、……、56-n与也可与设置在soc54上的uart串行硬件元件57接口连接。每个固件内核56-1、……、56-n可包括可以固件实施的uart嗅探器58。uart嗅探器58访问存储在nand55中的uart日志59。

可以是pc的主机61包括终端客户端62。主机61与ssd52通信。这种通信可基于串行连接并经由主机接口进行。主机61可包括调试组件,用于调试ssd52的组件。

利用这种布置,uart协议可基于主机61与uart串行硬件元件57之间的vu主机协议进行串行化。可在没有实际uart物理连接的情况下完成uart命令执行。

图6示出根据本发明的实施例的基于vu主机协议的uart协议串行化。图6中的也在图5中示出的组件利用相同的附图标记表示。如图6中进一步所示,在终端客户端62内,将壳命令63结合到第一vu封装64中,并且将获取日志65结合到第二vu封装66中。安装有壳命令63的第一vu封装64基于主机协议向每个固件内核56-1、……、56-n传送vu命令。安装有获取日志65的第二vu封装66用于从nand55中的uart日志59请求调试信息。基于主机接口完成调试信息的请求和后续检索。如图6所示,虽然ssd52可包括调试端口,但根据本发明的实施例,这种端口不用于调试。

本发明的另一方面使得能够基于uart/sata执行jtag测试。利用这种布置,寄存器/存储器视图、步进、设置断点以及运行/停止是可用的。

为此,图7示出根据本发明的实施例的远程串行调试操作的流程。参照图7,将ssd52示出为具有固件内核:分别包括rsdgdb服务器模块71-1至71-n的内核#1固件56-1至内核#n固件56-n。每个这种模块包括可在固件(fw)中的gdb服务器程序。这些rsdgdb服务器模块71-1至71-n的代码能够远程调试其它程序。模块71-1至71-n中的每一个与uart或host接口72通信,uart或host接口72又与主机侧的uart或host接口73通信。

主机侧可包括调试工作包74,该调试工作包74是包括调试器的一套软件开发工具。可在主机pc等上实施的调试工作包74可包括gbd客户端75和tcp/ip到uart或host接口转换器76,后者与gbd客户端75通信并且与uart或host接口73通信。

根据本发明的实施例,在图8中示出调试工作包74的调试器的一种用途,这是经由虚拟调试模块81的rsd实施方案。虚拟调试模块81可包括虚拟网络接口控制器(nic)82和host/uart驱动器83。(调试工作包74的)调试器84可经由tcp/ip链路与虚拟调试模块81通信。虚拟调试模块81的驱动器83可与在ssd52的固件56中实现的调试桩85通信。此处,固件56可以是图5至图7所示的固件内核56-1至56-n的集体表示,并且调试桩85自身可以是固件的一部分或一段。调试桩85可被配置成实现调试器功能,例如调试寄存器、断点的调整或设置以及存储器读取。

在图9中示出调试工作包74的调试器的另一用途,这是经由调试器91的调试桩85的实施方案。调试器91可包括与gdb远程串行协议组件93通信的编译器92。组件91、92和93可在主机61中实现。调试器91经由gdb远程串行协议组件93与ssd52,特别是ssd52中的调试桩85通信,其中该gdb远程串行协议组件93经由host/uart与调试桩85通信。

图10是描述根据本发明的实施例的调试存储器装置或调试存储器装置的一个或多个组件的进程中的步骤的流程图。流程图1000所示的步骤是示例性的。本领域的技术人员将理解的是,可执行另外的和/或可选的步骤,或者可改变步骤的顺序,以在不脱离本文公开的本发明理念的情况下实现本发明的各个方面。

在步骤1001中,可将调试逻辑存储在例如nand55的存储器装置200中。调试逻辑可包括uart日志59,或者被嵌入在uart日志59中。在步骤1002中,vu命令基于主机协议从主机61传输到例如ssd52的存储器系统10,而无需使用与ssd52上的调试端口的物理电缆连接。在步骤1003中,响应于vu命令来调试ssd52的一个或多个组件。

如上所述,本发明的实施例提供了本发明的实施例的一些技术,这些技术非常有助于在难以或不可能进行调试的情况下,例如没有jtag插座、无法打开ssd外壳和/或附接调试电缆的空间受限的情况下调试装置。在某些情况下,本发明的实施方案还可减少调试成本。可扩展各个实施例以允许通过仅对主机进行远程访问或者甚至通过http协议来调试ssd,而无需完全控制整个系统。

虽然为了清楚和理解的目的已经详细说明和描述了前述实施例,但是本发明不限于所提供的细节。正如本领域技术人员根据前述公开内容将理解的,存在许多实施本发明的可选方式。所公开的实施例是说明性的,而非限制性的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1