CN112395146A - Ssd固件仿真验证方法、***、计算机设备及存储介质 - Google Patents
Ssd固件仿真验证方法、***、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112395146A CN112395146A CN202011356664.3A CN202011356664A CN112395146A CN 112395146 A CN112395146 A CN 112395146A CN 202011356664 A CN202011356664 A CN 202011356664A CN 112395146 A CN112395146 A CN 112395146A
- Authority
- CN
- China
- Prior art keywords
- ssd
- ssd firmware
- host
- module
- simulation
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000004088 simulation Methods 0.000 title claims abstract description 90
- 238000012795 verification Methods 0.000 title claims abstract description 38
- 230000008569 process Effects 0.000 claims abstract description 39
- 238000004891 communication Methods 0.000 claims abstract description 21
- 230000005540 biological transmission Effects 0.000 claims abstract description 18
- 238000013507 mapping Methods 0.000 claims description 22
- 238000007726 management method Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 13
- 238000011084 recovery Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000003993 interaction Effects 0.000 claims description 7
- 238000013500 data storage Methods 0.000 claims description 5
- 238000012360 testing method Methods 0.000 abstract description 16
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000003068 static effect Effects 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/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- 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/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种SSD固件仿真验证方法、***、计算机设备及存储介质,其中该方法包括:在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;所述SSD固件仿真***根据输入的命令完成对应的操作。本发明把待测的SSD从通过总线连接的方式改为在主机端运行,可以极大地提升SSD固件运行效率,且可充分测试/验证其代码覆盖路径,进而提升了SSD质量。
Description
技术领域
本发明涉及固态硬盘测试技术领域,特别是涉及一种SSD固件仿真验证方法、***、计算机设备及存储介质。
背景技术
随着固态硬盘价格的下跌,固态硬盘越来越普及,SSD(固态硬盘)已经被广泛应用于各种场合,目前在PC市场,各大电脑厂商纷纷将计算机设备中的硬盘做成SSD替代传统的HDD,从可靠性和性能方面为用户提供更好的体验。
在开发阶段,为了验证SSD固件代码的可靠性,需要进行大量的测试。一般而言,各个SSD厂商都会基于物理SSD进行***级的测试,这能很好地模拟真实客户的使用模型。但是由于物理盘的测试会需要磨损SSD会导致大量的成本开销;同时,基于总线的访问速度会受限,会导致测试效率偏低,SSD的关键代码逻辑覆盖率不足。如何有效地提升SSD固件的测试覆盖率是提升SSD质量的关键因素。
目前,在现有的SSD开发过程中,为了验证固件逻辑,需要将固件编译好后烧录到SSD上运行。同时将SSD透过连接器连接到主机端,主机端通过脚本/OS产生特定的负载,进而测试盘的功能和性能。通过这种方式,为了实现对代码路径的覆盖,需要部署较多的主机/平台,并且由于SSD实际性能有限,需要耗费较长时间才能完成一定的测试覆盖。即便如此,由于是黑盒测试,存在较多不能覆盖的代码盲区,进而存在质量风险。
发明内容
基于此,有必要针对上述技术问题,提供一种可以实现提升测试效率以达到提升SSD质量的SSD固件仿真验证方法、***、计算机设备及存储介质。
一种SSD固件仿真验证方法,所述方法包括:
在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;
在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;
修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;
所述SSD固件仿真***根据输入的命令完成对应的操作。
在其中一个实施例中,所述在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输的步骤包括:
通过所述SSD固件仿真***的前端模块执行与上层驱动命令的交互;
通过所述SSD固件仿真***的读写缓冲区管理模块执行读写缓冲区的分配与回收;
通过所述SSD固件仿真***的映射表管理模块执行上层模块的逻辑地址到虚拟NAND地址的映射转换;
通过所述SSD固件仿真***的后端模块执行虚拟NAND的读写擦操作。
在其中一个实施例中,所述在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输的步骤还包括:
从所述主机端的内存中申请空间,用于给L2P映射表及读写缓冲区使用;
从所述主机端的内存中申请区域,用于模拟NAND的DIE/Block/Page组成以存放所述上层驱动的用户数据。
在其中一个实施例中,所述方法还包括:
当所述SSD固件仿真进程退出时,将主机内存中的NAND Array数据通过总线写入到主机其他的硬盘实体中;
当所述SSD固件仿真进程重新启动时,在主机分配对应的NAND Array Memory空间后,从主机对应的硬盘文件中加载数据填写到内存的NAND Array中。
一种SSD固件仿真验证***,所述***包括:
搭建模块,所述搭建模块用于在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;
仿真模块,所述仿真模块用于在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;
命令传输模块,所述命令传输模块用于修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;
命令执行模块,所述命令执行模块用于所述SSD固件仿真***根据输入的命令完成对应的操作。
在其中一个实施例中,所述仿真模块具体用于:
通过所述SSD固件仿真***的前端模块执行与上层驱动命令的交互;
通过所述SSD固件仿真***的读写缓冲区管理模块执行读写缓冲区的分配与回收;
通过所述SSD固件仿真***的映射表管理模块执行上层模块的逻辑地址到虚拟NAND地址的映射转换;
通过所述SSD固件仿真***的后端模块执行虚拟NAND的读写擦操作。
在其中一个实施例中,所述仿真模块还用于:
从所述主机端的内存中申请空间,用于给L2P映射表及读写缓冲区使用;
从所述主机端的内存中申请区域,用于模拟NAND的DIE/Block/Page组成以存放所述上层驱动的用户数据。
在其中一个实施例中,所述***还包括:
数据存储模块,所述数据存储模块用于当所述SSD固件仿真进程退出时,将主机内存中的NAND Array数据通过总线写入到主机其他的硬盘实体中;
数据恢复模块,所述数据恢复模块用于当所述SSD固件仿真进程重新启动时,在主机分配对应的NAND Array Memory空间后,从主机对应的硬盘文件中加载数据填写到内存的NAND Array中。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述SSD固件仿真验证方法、***、计算机设备及存储介质通过在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;所述SSD固件仿真***根据输入的命令完成对应的操作。本发明把待测的SSD从通过总线连接的方式改为在主机端运行。其在主机强大的CPU/DRAM资源下运行,等同于本地的文件***设备驱动等。与上层驱动的通讯不需要经过总线传输,而只需要利用内核成熟的进程间通讯技术即可,从而可以极大地提升SSD固件运行效率,且可充分测试/验证其代码覆盖路径,进而提升了SSD质量。
附图说明
图1为传统技术中SSD固件仿真验证***框架的构思示意图;
图2为本发明中SSD固件仿真验证***框架的构思示意图;
图3为一个实施例中SSD固件仿真验证方法的流程示意图;
图4为另一个实施例中SSD固件仿真验证方法的流程示意图;
图5为再一个实施例中SSD固件仿真验证方法的流程示意图;
图6为一个实施例中SSD仿真进程的实现框架示意图;
图7为另一个实施例中SSD仿真进程的实现框架示意图;
图8为一个实施例中SSD固件仿真验证***的结构框图;
图9为另一个实施例中SSD固件仿真验证***的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,如图1所示为现有SSD固件仿真验证***框架包括如下几个部分:
主机端:用户态。
应用程序:运行各种上层软件,对磁盘进行读写操作。
主机端:内核态。
文件***:各种磁盘文件管理***驱动,如FAT/NTFS/EXT….
块设备驱动:通用的内核块设备驱动,对硬件读写操作进行封装,对上层应用提供统一的接口
硬盘驱动:特定的SSD硬件接口驱动,比如SATA/ATA,PCIe/NVMe。
硬盘端:挂载各种硬盘,如SSD/HDD,其与主机经过物理的总线连接进行通讯。
在现有SSD固件仿真验证***框架下,需要将固件编译好后烧录到SSD上运行。同时将SSD透过连接器连接到主机端,主机端通过脚本/OS产生特定的负载,进而测试盘的功能和性能。通过这种方式,为了实现对代码路径的覆盖,需要部署较多的主机/平台,并且由于SSD实际性能有限,需要耗费较长时间才能完成一定的测试覆盖。即便如此,由于是黑盒测试,存在较多不能覆盖的代码盲区,进而存在质量风险。
基于此,本发明提供了一种SSD固件仿真验证方法,该方法可以应用于如图2所示的SSD固件仿真验证***框架中,具体包括如下几个部分:
主机端:用户态。
应用程序:运行各种上层软件,对磁盘进行读写操作。
主机端:内核态。
文件***:各种磁盘文件管理***驱动,如FAT/NTFS/EXT….
块设备驱动:通用的内核块设备驱动,对硬件读写操作进行封装,对上层应用提供统一的接口。
硬盘驱动:特定的SSD硬件接口驱动,比如SATA/ATA,PCIe/NVMe。
主机端:SSD模拟器。
运行SSD仿真进程,其与上层驱动通过进程间通讯进行数据传输,而不用通过总线。
硬盘端:挂载其他各种硬盘,挂载各种硬盘,其与主机经过物理的总线连接进行通讯。
在本发明中,把待测的SSD从通过总线连接的方式,改为在主机端运行。其在主机强大的CPU/DRAM资源下运行,等同于本地的文件***/块设备驱动等。进一步地,与上层驱动的通讯不需要经过总线传输,而只需要利用内核成熟的进程间通讯技术即可,从而可以大大提升运行效率,提升代码测试覆盖率。
在一个实施例中,如图3所示,提供了一种SSD固件仿真验证方法,该方法包括:
步骤302,在主机端搭建SSD固件仿真***,并将SSD固件运行于主机端的SSD固件仿真***下;
步骤304,在主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;
步骤306,修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;
步骤308,SSD固件仿真***根据输入的命令完成对应的操作。
在本实施例中,提供了一种SSD固件仿真验证方法,该方法可以应用于如图2所示的***框架中,通过在主机环境下编译/运行SSD固件主要逻辑代码,将其依赖的硬件部分采用模拟行为的方式进行软件替代,可利用主机的CPU/Memory资源进行高速仿真,提升了测试效率,进而保障了SSD质量,具体的实现步骤如下:
首先,在主机端搭建SSD固件仿真***,并将SSD固件运行于主机端的SSD固件仿真***下。具体地,为了和运行在真实SSD上的固件类似,在SSD仿真进程内部细分了几个线程包括:前端模块、读写缓冲区管理模块、映射表管理模块以及后端模块。其次,为了在主机上运行,需要适配的模块包括DRAM空间及NAND Array。
然后,在主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输。接着,通过修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口。最后,SSD固件仿真***根据输入的命令完成对应的操作。
在本实施例中,通过在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;所述SSD固件仿真***根据输入的命令完成对应的操作。本方案把待测的SSD从通过总线连接的方式改为在主机端运行。其在主机强大的CPU/DRAM资源下运行,等同于本地的文件***设备驱动等。与上层驱动的通讯不需要经过总线传输,而只需要利用内核成熟的进程间通讯技术即可,从而可以极大地提升SSD固件运行效率,且可充分测试/验证其代码覆盖路径,进而提升了SSD质量。
在一个实施例中,如图4所示,提供了一种SSD固件仿真验证方法,该方法还包括:
步骤402,通过SSD固件仿真***的前端模块执行与上层驱动命令的交互;
步骤404,通过SSD固件仿真***的读写缓冲区管理模块执行读写缓冲区的分配与回收;
步骤406,通过SSD固件仿真***的映射表管理模块执行上层模块的逻辑地址到虚拟NAND地址的映射转换;
步骤408,通过SSD固件仿真***的后端模块执行虚拟NAND的读写擦操作;
步骤410,从主机端的内存中申请空间,用于给L2P映射表及读写缓冲区使用;
步骤412,从主机端的内存中申请区域,用于模拟NAND的DIE/Block/Page组成以存放上层驱动的用户数据。
在本实施例中,提供了一种SSD固件仿真验证方法,在该方法中为了实现和运行在真实SSD上的固件类似,SSD仿真进程内部细分为如下几个线程,具体地可结合图6所示包括:
前端模块:负责与上层驱动进行命令交互。
读写缓冲区管理模块:负责进程的读写缓冲区的分配与回收。
映射表管理模块:负责上层模块的逻辑地址到虚拟NAND地址的映射转换。
后端模块:负责虚拟NAND的读写擦操作。
其次,为了在主机上运行,需要适配的模块包括:
DRAM空间:不再使用SSD上的独立DRAM,而是从主机内存中申请空间,给L2P映射表以及读写缓冲区等使用
NAND Array:在主机内存中申请一块区域,模拟NAND的DIE/Block/Page组成,存放上层驱动的用户数据。进一步地,考虑到主机内存空间有限,可以通过降低所模拟的SSD容量或者压缩等技术,来达到降低内存空间的开销的技术效果。
在本实施例中,基于上述SSD仿真进程的框架,对于主机端的应用程序和驱动都不需要做调整,而仅仅是实现对应的SSD仿真进程。上层驱动的数据读写转化为对进程中模块调用以及NAND Array Memory Disk的读写,大大提升了运行速率。
在一个实施例中,如图5所示,提供了一种SSD固件仿真验证方法,该方法还包括:
步骤502,当SSD固件仿真进程退出时,将主机内存中的NAND Array数据通过总线写入到主机其他的硬盘实体中;
步骤504,当SSD固件仿真进程重新启动时,在主机分配对应的NAND Array Memory空间后,从主机对应的硬盘文件中加载数据填写到内存的NAND Array中。
在本实施例中,提供了一种SSD固件仿真验证方法,在该方法中由于仿真模型下的内存中数据为掉电易失的,为完整模拟SSD的数据存储功能,可以做进一步完善,具体的完善步骤可参考图7所示包括:
首先,在仿真进程退出时,将内存中的NAND Array数据通过总线,写入到主机其他的硬盘实体中,从而实现了数据的存储。
然后,当仿真进程重新启动时,在主机分配对应的NAND Array Memory空间后,从主机对应的硬盘文件中加载数据,填写到内存的NAND Array中,从而实现了数据的恢复。
在本实施例中,实现了完整模拟SSD的数据存储功能,可充分测试/验证其代码覆盖路径,进而达到提升了SSD质量的技术效果。
应该理解的是,虽然图1-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种SSD固件仿真验证***800,该***包括:
搭建模块801,用于在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;
仿真模块802,用于在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;
命令传输模块803,用于修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;
命令执行模块804,用于所述SSD固件仿真***根据输入的命令完成对应的操作。
在一个实施例中,仿真模块802具体用于:
通过所述SSD固件仿真***的前端模块执行与上层驱动命令的交互;
通过所述SSD固件仿真***的读写缓冲区管理模块执行读写缓冲区的分配与回收;
通过所述SSD固件仿真***的映射表管理模块执行上层模块的逻辑地址到虚拟NAND地址的映射转换;
通过所述SSD固件仿真***的后端模块执行虚拟NAND的读写擦操作。
在一个实施例中,仿真模块802还用于:
从所述主机端的内存中申请空间,用于给L2P映射表及读写缓冲区使用;
从所述主机端的内存中申请区域,用于模拟NAND的DIE/Block/Page组成以存放所述上层驱动的用户数据。
在一个实施例中,如图9所示,提供了一种SSD固件仿真验证***800,该***还包括:
数据存储模块805,用于当所述SSD固件仿真进程退出时,将主机内存中的NANDArray数据通过总线写入到主机其他的硬盘实体中;
数据恢复模块806,用于当所述SSD固件仿真进程重新启动时,在主机分配对应的NAND Array Memory空间后,从主机对应的硬盘文件中加载数据填写到内存的NAND Array中。
关于SSD固件仿真验证***的具体限定可以参见上文中对于SSD固件仿真验证方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过***总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种SSD固件仿真验证方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种SSD固件仿真验证方法,其特征在于,所述方法包括:
在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;
在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;
修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;
所述SSD固件仿真***根据输入的命令完成对应的操作。
2.根据权利要求1所述的SSD固件仿真验证方法,其特征在于,所述在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输的步骤包括:
通过所述SSD固件仿真***的前端模块执行与上层驱动命令的交互;
通过所述SSD固件仿真***的读写缓冲区管理模块执行读写缓冲区的分配与回收;
通过所述SSD固件仿真***的映射表管理模块执行上层模块的逻辑地址到虚拟NAND地址的映射转换;
通过所述SSD固件仿真***的后端模块执行虚拟NAND的读写擦操作。
3.根据权利要求2所述的SSD固件仿真验证方法,其特征在于,所述在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输的步骤还包括:
从所述主机端的内存中申请空间,用于给L2P映射表及读写缓冲区使用;
从所述主机端的内存中申请区域,用于模拟NAND的DIE/Block/Page组成以存放所述上层驱动的用户数据。
4.根据权利要求1-3任一项所述的SSD固件仿真验证方法,其特征在于,所述方法还包括:
当所述SSD固件仿真进程退出时,将主机内存中的NAND Array数据通过总线写入到主机其他的硬盘实体中;
当所述SSD固件仿真进程重新启动时,在主机分配对应的NAND Array Memory空间后,从主机对应的硬盘文件中加载数据填写到内存的NAND Array中。
5.一种SSD固件仿真验证***,其特征在于,所述***包括:
搭建模块,所述搭建模块用于在主机端搭建SSD固件仿真***,并将SSD固件运行于所述主机端的SSD固件仿真***下;
仿真模块,所述仿真模块用于在所述主机端通过运行SSD固件仿真进程,以实现与上层驱动通过进程间通讯进行数据传输;
命令传输模块,所述命令传输模块用于修改主机端的SSD驱动代码,将总线传输的命令转发到SSD固件仿真接口;
命令执行模块,所述命令执行模块用于所述SSD固件仿真***根据输入的命令完成对应的操作。
6.根据权利要求5所述的SSD固件仿真验证***,其特征在于,所述仿真模块具体用于:
通过所述SSD固件仿真***的前端模块执行与上层驱动命令的交互;
通过所述SSD固件仿真***的读写缓冲区管理模块执行读写缓冲区的分配与回收;
通过所述SSD固件仿真***的映射表管理模块执行上层模块的逻辑地址到虚拟NAND地址的映射转换;
通过所述SSD固件仿真***的后端模块执行虚拟NAND的读写擦操作。
7.根据权利要求6所述的SSD固件仿真验证***,其特征在于,所述仿真模块还用于:
从所述主机端的内存中申请空间,用于给L2P映射表及读写缓冲区使用;
从所述主机端的内存中申请区域,用于模拟NAND的DIE/Block/Page组成以存放所述上层驱动的用户数据。
8.根据权利要求5-7任一项所述的SSD固件仿真验证***,其特征在于,所述***还包括:
数据存储模块,所述数据存储模块用于当所述SSD固件仿真进程退出时,将主机内存中的NAND Array数据通过总线写入到主机其他的硬盘实体中;
数据恢复模块,所述数据恢复模块用于当所述SSD固件仿真进程重新启动时,在主机分配对应的NAND Array Memory空间后,从主机对应的硬盘文件中加载数据填写到内存的NAND Array中。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011356664.3A CN112395146A (zh) | 2020-11-27 | 2020-11-27 | Ssd固件仿真验证方法、***、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011356664.3A CN112395146A (zh) | 2020-11-27 | 2020-11-27 | Ssd固件仿真验证方法、***、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112395146A true CN112395146A (zh) | 2021-02-23 |
Family
ID=74605337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011356664.3A Pending CN112395146A (zh) | 2020-11-27 | 2020-11-27 | Ssd固件仿真验证方法、***、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112395146A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032246A (zh) * | 2021-03-04 | 2021-06-25 | 成都佰维存储科技有限公司 | Ssd固件运行方法、装置、可读存储介质及电子设备 |
CN115168129A (zh) * | 2022-08-09 | 2022-10-11 | 北京得瑞领新科技有限公司 | 植入仿真器的自动化测试***及ssd硬盘测试方法 |
CN115993937A (zh) * | 2023-03-21 | 2023-04-21 | 苏州浪潮智能科技有限公司 | 一种多进程固态硬盘仿真环境实现方法和装置 |
CN116069453A (zh) * | 2023-04-04 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种仿真*** |
EP4280070A1 (en) * | 2022-05-17 | 2023-11-22 | Samsung Electronics Co., Ltd. | Systems and methods for solid state device (ssd) simulation |
CN118173153A (zh) * | 2024-05-16 | 2024-06-11 | 山东云海国创云计算装备产业创新中心有限公司 | 一种坏块管理程序验证方法、产品及存储介质 |
CN118173153B (zh) * | 2024-05-16 | 2024-07-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种坏块管理程序验证方法、产品及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101670307B1 (ko) * | 2015-09-21 | 2016-10-31 | 국방과학연구소 | 컴포넌트기반 통합 시뮬레이션 환경과 matlab/simulink 레거시 시뮬레이션 프로그램 간 연동방법 및 연동인터페이스 설계방법 |
US20170249155A1 (en) * | 2016-02-26 | 2017-08-31 | Sandisk Technologies Inc. | Memory System and Method for Fast Firmware Download |
US20180246749A1 (en) * | 2017-02-27 | 2018-08-30 | Red Hat, Inc. | Virtual machine security through guest-side emulation |
US20190130990A1 (en) * | 2017-11-02 | 2019-05-02 | National Tsing Hua University | Method and system for testing firmware of solid-state storage device, and electronic apparatus |
-
2020
- 2020-11-27 CN CN202011356664.3A patent/CN112395146A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101670307B1 (ko) * | 2015-09-21 | 2016-10-31 | 국방과학연구소 | 컴포넌트기반 통합 시뮬레이션 환경과 matlab/simulink 레거시 시뮬레이션 프로그램 간 연동방법 및 연동인터페이스 설계방법 |
US20170249155A1 (en) * | 2016-02-26 | 2017-08-31 | Sandisk Technologies Inc. | Memory System and Method for Fast Firmware Download |
US20180246749A1 (en) * | 2017-02-27 | 2018-08-30 | Red Hat, Inc. | Virtual machine security through guest-side emulation |
US20190130990A1 (en) * | 2017-11-02 | 2019-05-02 | National Tsing Hua University | Method and system for testing firmware of solid-state storage device, and electronic apparatus |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032246A (zh) * | 2021-03-04 | 2021-06-25 | 成都佰维存储科技有限公司 | Ssd固件运行方法、装置、可读存储介质及电子设备 |
CN113032246B (zh) * | 2021-03-04 | 2023-10-03 | 成都佰维存储科技有限公司 | Ssd固件运行方法、装置、可读存储介质及电子设备 |
EP4280070A1 (en) * | 2022-05-17 | 2023-11-22 | Samsung Electronics Co., Ltd. | Systems and methods for solid state device (ssd) simulation |
CN115168129A (zh) * | 2022-08-09 | 2022-10-11 | 北京得瑞领新科技有限公司 | 植入仿真器的自动化测试***及ssd硬盘测试方法 |
CN115168129B (zh) * | 2022-08-09 | 2023-02-10 | 北京得瑞领新科技有限公司 | 植入仿真器的自动化测试***及ssd硬盘测试方法 |
CN115993937A (zh) * | 2023-03-21 | 2023-04-21 | 苏州浪潮智能科技有限公司 | 一种多进程固态硬盘仿真环境实现方法和装置 |
CN116069453A (zh) * | 2023-04-04 | 2023-05-05 | 苏州浪潮智能科技有限公司 | 一种仿真*** |
CN118173153A (zh) * | 2024-05-16 | 2024-06-11 | 山东云海国创云计算装备产业创新中心有限公司 | 一种坏块管理程序验证方法、产品及存储介质 |
CN118173153B (zh) * | 2024-05-16 | 2024-07-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种坏块管理程序验证方法、产品及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112395146A (zh) | Ssd固件仿真验证方法、***、计算机设备及存储介质 | |
US10504605B2 (en) | Method and system for testing firmware of solid-state storage device, and electronic apparatus | |
US20120311237A1 (en) | Storage device, storage system and method of virtualizing a storage device | |
CN109358809B (zh) | 一种raid数据存储***及方法 | |
CN110427326A (zh) | 基于Driver Master的固态硬盘密码测试方法和装置 | |
CN109445691B (zh) | 一种提高ftl算法开发和验证效率的方法及装置 | |
US10395751B2 (en) | Automated testing system and operating method thereof | |
CN110931075B (zh) | 可重新配置的模拟***和测试存储装置的固件的方法 | |
CN111324414B (zh) | Nvm存储介质模拟器 | |
CN109697017A (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
CN113032246B (zh) | Ssd固件运行方法、装置、可读存储介质及电子设备 | |
CN107704338A (zh) | 一种资料储存型闪存的数据恢复方法和装置 | |
CN110287076A (zh) | 一种存储器测试方法和装置 | |
CN115509442A (zh) | 闪存颗粒调试方法、闪存颗粒调试设备和可读存储介质 | |
CN116841838A (zh) | 非易失性存储器存储装置仿真平台 | |
KR102102248B1 (ko) | 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법 | |
CN110275596B (zh) | 基于固态硬盘的上电初始化加速方法、装置和计算机设备 | |
CN107861795A (zh) | 模拟物理tcm芯片的方法、***、装置及可读存储介质 | |
CN111522679A (zh) | 基于主机内存的ssd日志记录方法、***和计算机设备 | |
Liu et al. | VST: A virtual stress testing framework for discovering bugs in SSD flash-translation layers | |
CN112433892B (zh) | 存储器验证方法及存储器验证*** | |
US20240211278A1 (en) | Storage device and operating method thereof | |
CN112394884A (zh) | 减少ubi子***管理开销的方法、ubi子***及介质 | |
CN117992294A (zh) | 基于Emulator仿真平台的固态硬盘预埋测试方法、装置、设备及介质 | |
CN117827690A (zh) | 数据处理方法、设备及可读存储介质 |
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 |