本技术涉及存储测试,尤其涉及一种闪存控制器原型固件、原型验证方法、系统及硬件平台。
背景技术:
1、基于闪存的存储产品,如emmc(embedded multimedia card)、ufs(universalflash storage)嵌入式存储芯片及ssd(solid state disk)等,其存储主控芯片是决定存储产品竞争力的主要组件。存储主控芯片内部直接处理存储业务主要有两块:即主机存储协议处理器与闪存控制器。其中,主机存储协议处理器主要完成标准存储协议的处理,如emmc、ufs、pcie等标准协议。闪存控制器负责闪存控制,完成数据存取的功能。因为主机存储协议都是标准协议,业内大都基于现有的ip开发。由于闪存的操作时延、储存数据的能力对最终闪存存储产品的主要功能、性能指标影响很大,因此闪存控制除了实现标准的闪存控制接口外,还会实现更复杂的利于提升存储性能与可靠性的功能,如闪存io调度、端对端保护、高纠错低时延的ldpc等。这些功能的加入将使闪存控制器变得复杂,如何在存储控制器芯片开发阶段,保障闪存控制器的验证质量成为一项难度较高的挑战。
2、在存储控制器芯片开发阶段,原型验证是保障芯片功能正确性的重要一环。目前针对存储控制器芯片内部闪存控制器的原型验证,普遍存在下述问题:
3、第一,针对单点功能的单元测试(ut)较简单,覆盖度不高。
4、第二,it是通过端对端的系统测试展开,去覆盖ut无法覆盖的部分。这种方式因为端对端的请求处理路径过长,包括主机侧的处理、存储主控前端协议的处理、存储主控内部固件的处理及闪存控制器,所以不但验证效率低下,而且覆盖度不能满足复杂闪存控制器验证需求。比如因为处理路径过长,几乎不能将闪存控制器的工作压力压满,同时也很难精准地去构造闪存控制器的工作负载(或条件)。
5、第三,自动化程度不够高,多是人工操作。因为自动化程度不高,导致不能有效利用宝贵的芯片研发时间。
技术实现思路
1、有鉴于此,为解决上述至少一种问题,本技术提供了一种闪存控制器原型固件、原型验证方法、系统及硬件平台。
2、第一方面,本技术实施例提供一种闪存控制器原型固件,包括:
3、依次连接的串口接口模块、测试指令解析模块、测试控制模块和闪存控制接口模块,所述串口接口模块还用于连接测试主机端,所述闪存控制接口模块用于连接闪存;
4、其中,所述串口接口模块用于接收及校验所述测试主机端下发的按照预设测试接口协议处理后的相应请求指令,并提取出校验成功的请求指令;
5、所述测试指令解析模块用于对所述校验成功的请求指令进行指令解析及合法性检查,以提取出合法的请求指令;
6、所述测试控制模块用于根据所述合法的请求指令对所述闪存控制接口模块连接的闪存进行测试执行,并得到执行结果;
7、所述测试指令解析模块还用于将所述执行结果按照所述预设测试接口协议进行处理并通过所述串口接口模块返回至所述测试主机端。
8、在一些实施例中,所述测试控制模块包括测试配置单元、测试负载生成单元、测试线程调度单元和测试监控单元;
9、所述测试配置单元用于当所述合法的请求指令为配置请求时,根据所述配置请求进行测试相关信息的配置;
10、所述测试负载生成单元用于当所述合法的请求指令为测试请求时,根据所述测试请求生成对应的测试负载;
11、所述测试线程调度单元用于当所述测试负载生成后,按照选定的调度模式进行测试线程调度,以使每个测试线程运行各自对应的测试负载;
12、所述测试监控单元用于收集执行测试过程中的测试状态信息;其中,所述测试状态信息用于供所述测试主机端进行测试状态查询。
13、在一些实施例中,每个所述测试请求中至少包括:指定的闪存存储页范围、闪存io类型及大小、io操作类型、数据模型和闪存io比例。
14、在一些实施例中,每个所述测试请求仅通过一个测试线程进行执行,一个测试线程用于挂载一个或多个需要执行的所述测试请求。
15、在一些实施例中,所述测试负载生成单元根据所述测试请求生成对应的测试负载,包括:
16、将所述闪存中所有通道和所有存储区包含的存储块信息进行描述,以得到一个存储块矩阵;
17、根据所述测试请求中指定的存储页范围,从所述存储块矩阵中确定并生成一测试组,其中,所述测试组中包括需操作的各个存储页的地址信息;
18、根据所述测试请求中指定的闪存io类型及大小,从所述测试组中确定一次闪存io操作的操作地址;其中,所述闪存io类型为顺序或随机;
19、根据所述测试请求中指定的io操作类型和数据模型,生成写入所述闪存中相应存储页的测试数据和/或生成期望数据,其中,所述期望数据用于与从所述闪存中相应存储页读出的实际数据进行比对;
20、根据所述测试请求中指定的闪存io比例,控制发送给闪存的io比例;其中,所述io比例包括写与读操作的比例、顺序与随机的比例、以及不同io大小的比例。
21、在一些实施例中,所述根据所述测试请求中指定的io操作类型和数据模型,生成写入所述闪存中相应存储页的测试数据和/或生成期望数据,包括:
22、当所述io操作类型为写io操作时,根据所述测试请求中指定的写数据模型,生成写入所述闪存中相应存储页的测试数据;
23、当所述io操作类型为读io操作时,根据所述测试请求中指定的读数据模型,生成用于检查数据一致性的期望数据。
24、在一些实施例中,每个所述测试请求中还包括错误注入读指令及指定的闪存io;所述测试负载生成单元根据所述测试请求生成对应的测试负载时,还包括:
25、所述测试负载生成单元在检测所述测试请求中存在所述错误注入读指令,对指定的闪存io进行标记;其中,所述标记用于指示对所述指定的闪存io调用时进行错误注入。
26、在一些实施例中,所述预设测试接口协议包括命令格式描述,所述测试主机端按照所述命令格式描述生成所述下发的相应请求指令;
27、其中,所述命令格式描述包括:命令头、命令数据和命令校验数据,所述命令头用于指示当前命令的具体类型及命令长度,所述命令校验数据基于所述命令头和所述命令数据运算得到。
28、在一些实施例中,所述预设测试接口协议还包括响应格式描述,所述测试指令解析模块按照所述响应格式描述将所述执行结果进行处理;
29、其中,所述响应格式描述包括:响应头、响应数据和响应校验数据,所述响应头用于记录对应命令的具体类型及所述对应命令的执行结果类型,所述响应校验数据基于所述响应头和所述响应数据运算得到。
30、第二方面,本技术实施例提供一种闪存控制器原型验证系统,包括:测试主机端和fpga原型验证硬件平台,所述fpga原型验证硬件平台通过串口连接所述测试主机端并且还用于连接闪存;
31、所述测试主机端用于接收用户输入的测试脚本与命令,并根据所述测试脚本与命令下发相应请求指令到所述fpga原型验证硬件平台;
32、所述fpga原型验证硬件平台用于加载并运行所述的闪存控制器原型固件,以实现对所述闪存的自动化测试。
33、在一些实施例中,所述测试主机端包括主机终端、以及jenkins 测试工具或测试终端;
34、其中,所述主机终端用于接收用户通过所述jenkins 测试工具或所述测试终端输入的控制命令,以控制所述测试脚本与命令的执行。
35、第三方面,本技术实施例提供一种fpga原型验证硬件平台,所述fpga原型验证硬件平台中的fpga加载有所述的闪存控制器原型固件。
36、第四方面,本技术实施例提供一种闪存控制器原型验证方法,应用于闪存控制器原型验证系统,所述系统包括测试主机端和fpga原型验证硬件平台,所述fpga原型验证硬件平台用于执行该闪存控制器原型验证方法,包括:
37、通过串口接口模块接收及校验所述测试主机端下发的按照预设测试接口协议处理后的相应请求指令,并提取出校验成功的请求指令;
38、通过测试指令解析模块对所述校验成功的请求指令进行指令解析及合法性检查,以提取出合法的请求指令;
39、通过测试控制模块根据所述合法的请求指令对闪存控制接口模块连接的闪存进行测试执行,并得到执行结果;
40、通过测试指令解析模块将所述执行结果按照所述预设测试接口协议进行处理并通过所述串口接口模块返回至所述测试主机端。
41、第五方面,本技术实施例提供一种计算机可读存储介质,用于储存上述的闪存控制器原型固件。
42、本技术的实施例具有如下有益效果:
43、本技术提出了一种闪存控制器原型固件,其包括串口接口模块、测试指令解析模块、测试控制模块和闪存控制接口模块,其中,串口接口模块用于接收及校验测试主机端下发的按照预设测试接口协议处理后的相应请求指令;测试指令解析模块用于对校验成功的请求指令进行指令解析及合法性检查;测试控制模块用于根据合法的请求指令对闪存控制接口模块连接的闪存进行测试执行,并得到执行结果;最后,由测试指令解析模块还用于将执行结果按照预设测试接口协议进行处理后返回至测试主机端。该原型固件通过硬件平台进行加载与运行,可以精准地生成各种复杂的测试负载等,从而满足原型验证阶段的复杂闪存控制器的验证需求。跟目前普遍使用的方式相比,在提升验证效率的同时也提升了验证覆盖度,并且能模拟实际用户使用场景下的闪存控制器在大压力下的工作负载情况等。
1.一种闪存控制器原型固件,其特征在于,包括:依次连接的串口接口模块、测试指令解析模块、测试控制模块和闪存控制接口模块,所述串口接口模块还用于连接测试主机端,所述闪存控制接口模块用于连接闪存;
2.根据权利要求1所述的闪存控制器原型固件,其特征在于,所述测试控制模块包括测试配置单元、测试负载生成单元、测试线程调度单元和测试监控单元;
3.根据权利要求2所述的闪存控制器原型固件,其特征在于,每个所述测试请求仅通过一个测试线程进行执行,一个测试线程用于挂载一个或多个需要执行的所述测试请求。
4.根据权利要求2所述的闪存控制器原型固件,其特征在于,每个所述测试请求中至少包括:指定的闪存存储页范围、闪存io类型及大小、io操作类型、数据模型和闪存io比例。
5.根据权利要求4所述的闪存控制器原型固件,其特征在于,所述测试负载生成单元根据所述测试请求生成对应的测试负载,包括:
6.根据权利要求5所述的闪存控制器原型固件,其特征在于,所述根据所述测试请求中指定的io操作类型和数据模型,生成写入所述闪存中相应存储页的测试数据和/或生成期望数据,包括:
7.根据权利要求4-6中任一项所述的闪存控制器原型固件,其特征在于,每个所述测试请求中还包括错误注入读指令及指定的闪存io;所述测试负载生成单元根据所述测试请求生成对应的测试负载时,还包括:
8.根据权利要求1所述的闪存控制器原型固件,其特征在于,所述预设测试接口协议包括命令格式描述,所述测试主机端按照所述命令格式描述生成所述下发的相应请求指令;
9.根据权利要求8所述的闪存控制器原型固件,其特征在于,所述预设测试接口协议还包括响应格式描述,所述测试指令解析模块按照所述响应格式描述将所述执行结果进行处理;
10.一种闪存控制器原型验证系统,其特征在于,包括:测试主机端和fpga原型验证硬件平台,所述fpga原型验证硬件平台通过串口连接所述测试主机端并且还用于连接闪存;
11.根据权利要求10所述的闪存控制器原型验证系统,其特征在于,所述测试主机端包括主机终端、以及jenkins测试工具或测试终端;
12.一种fpga原型验证硬件平台,其特征在于,所述fpga原型验证硬件平台中的fpga加载有如权利要求1至9中任一项所述的闪存控制器原型固件。
13.一种闪存控制器原型验证方法,其特征在于,应用于闪存控制器原型验证系统,所述系统包括测试主机端和fpga原型验证硬件平台,所述fpga原型验证硬件平台用于执行闪存控制器原型验证方法,包括:
14.一种计算机可读存储介质,其特征在于,用于储存如权利要求1至9中任一项所述的闪存控制器原型固件。