发明内容
本发明的主要目的是提供一种测试Nand-flash坏块的控制方法及控制系统,旨在解决目前并没有在将Nand-flash焊接至实际应用产品前,能够对Nand-flash可靠性质量指标测试进行控制的方案的问题。
本发明提出的技术方案为:
一种测试Nand-flash坏块的控制方法,应用于测试Nand-flash坏块的控制系统;所述测试Nand-flash坏块的控制系统包括测试板卡和上位机;所述测试Nand-flash坏块的控制方法,包括:
将Nand-flash和所述测试板卡通信连接;
将所述上位机和所述测试板卡通信连接;
控制所述上位机对Nand-flash进行开卡操作,以获取Nand-flash的测前信息,其中,所述测前信息包括原始坏块数量和原始SMART信息;
控制所述上位机对Nand-flash进行读写测试;
控制所述上位机获取Nand-flash的测后信息,其中,所述测后信息包括当前坏块数量和当前SMART信息;
比较所述测前信息和所述测后信息,以生成Nand-flash的测试结果信息。
优选的,所述测试板卡包括控制芯片,以及与所述控制芯片通信连接的SATA控制器,以及与所述SATA控制器通信连接的测试连接座;所述将Nand-flash和所述测试板卡通信连接,包括:
将Nand-flash嵌入所述测试连接座,以形成SATA存储盘;
所述将所述上位机和所述测试板卡通信连接,包括:
将上位机通过USB接口通信连接于所述控制芯片。
优选的,所述控制芯片为FPGA芯片,所述控制所述上位机对Nand-flash进行读写测试,包括:
于所述FPGA芯片内部例化一个Microblaze软核;
通过所述上位机将所述SATA存储盘挂载至所述FPGA芯片;
通过所述上位机向所述FPGA芯片发送RAID组建指令;
基于RAID组建指令,通过所述FPGA芯片将所述SATA存储盘组成SATA存储阵列;
控制所述上位机对所述SATA存储阵列进行裸盘全速读写测试。
优选的,所述控制所述上位机对所述SATA存储阵列进行裸盘全速读写测试,包括:
通过所述上位机获取预设个数;
通过所述FPGA芯片随机生成所述预设个数的且依次递增的递增数值;
通过所述FPGA芯片将所述递增数值从小至大依次全速写入所述SATA存储阵列,并记录写入速度;
通过所述FPGA芯片依次全速读取所述SATA存储阵列中写入的所述递增数值,并记录读取速度;
通过所述FPGA芯片比较读取的所述递增数值和写入的所述递增数值,以生成读写准确率;
控制所述FPGA芯片将所述写入速度、所述读取速度和所述读写准确率发送至所述的上位机。
优选的,所述控制所述上位机获取Nand-flash的测后信息,之前还包括:
判断是否满足第一预设条件,所述第一预设条件包括:所述写入速度大于预设写入速度,且所述读取速度大于预设读取速度,且所述读写准确率大于预设准确率;
若是,执行所述通过所述上位机获取Nand-flash的测后信息的步骤;
若否,减少所述预设个数,并再次执行所述控制所述上位机对所述SATA存储阵列进行裸盘全速读写测试的步骤,并再次判断是否满足所述第一预设条件;
若是,执行所述通过所述上位机获取Nand-flash的测后信息的步骤;
若否,生成Nand-flash的测试结果信息,其中,所述Nand-flash的测试结果信息用于表述Nand-flash产品不合格。
优选的,所述通过所述上位机获取预设个数,包括:
通过所述上位机获取本批次所有已测试的Nand-flash的所述读写准确率的平均值;
判断所述平均值是否大于所述预设准确率;
若是,逐步提升所述预设个数,直至所述平均值和所述预设准确率的差值小于预设差值;
若否,逐步降低所述预设个数,直至所述平均值大于所述预设准确率,且所述平均值和所述预设准确率的差值小于预设差值。
优选的,所述比较所述测前信息和所述测后信息,以生成Nand-flash的测试结果信息,包括:
获取坏块增加率,其中,所述坏块增加率为所述当前坏块数量减去所述原始坏块数量后除以所述原始坏块数量的值;
判断是否满足第二预设条件,所述第二预设条件包括:所述坏块增加率小于预设增加率,且所述当前SMART信息中的ECC校验数值小于预设效验数值;
若是,生成Nand-flash的测试结果信息,其中,所述测试结果信息用于表述Nand-flash产品合格;
若否,生成Nand-flash的测试结果信息,其中,所述测试结果信息用于表述Nand-flash产品不合格。
优选的,所述测试Nand-flash坏块的控制系统还包括能够调节温度的测试房,所述上位机用于控制所述测试房的室内温度;所述测试板卡和Nand-flash均设置于所述测试房内;所述测试Nand-flash坏块的控制方法,还包括:
通过所述上位机以起始温度值为基础逐步提升温度,并于每个温度值进行一批次读写测试;
基于Nand-flash的所述测试结果信息,生成每个批次读写测试对应的Nand-flash产品的合格率;
将每批次读写测试后Nand-flash产品的合格率与进行读写测试时的温度值建立对应关系;
基于所述合格率和对应的温度值,生成Nand-flash对应的适宜工作温度区间。
优选的,所述测试Nand-flash坏块的控制方法,还包括:
在每一个Block上对坏块进行坏块标记,根据各个坏块标记形成用于标记坏块的坏块位置表;
根据所述坏块位置表将读写区域划分成各个连续读写区域,并确定每个连续读写区域的最大读写长度;
获取待写入数据的数据长度,将所述数据长度与各个所述连续读写区域的最大读写长度进行比对,以将所述待写入数据写入最大读写长度不小于所述数据长度的连续读写区域。
本发明还提出一种测试Nand-flash坏块的控制系统,应用如上述中任一项所述的测试Nand-flash坏块的控制方法;所述测试Nand-flash坏块的控制系统包括测试板卡和上位机。
通过上述技术方案,能实现以下有益效果:
本发明提出的测试Nand-flash坏块的控制方法,能够在Nand-flash未焊接至实际应用产品时,即对Nand-flash的可靠性质量指标进行测试,即直接将Nand-flash通过连接于测试板卡,再通过上位机来进行读写测试,并基于读写测试前的测前信息,和读写测试后的测后信息来进行分析,以得到测试结果信息,这其中,测前信息包括原始坏块数量和原始SMART信息,测后信息包括当前坏块数量和当前SMART信息,通过比较读写测试前后的坏块的数量差异,以及SMART信息的差异,即可知晓进行测试的Nand-flash的产品质量;从测试的判断依据来看,坏块数量增加得越少,则Nand-flash的产品质量越好,SMART信息中存在多个Nand-flash的参数,这些参数的变化也能够反映Nand-flash的产品质量。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提出一种测试Nand-flash坏块的控制方法及控制系统。
如附图1所示,在本发明提出的一种测试Nand-flash坏块的控制方法的第一实施例中,本实施例应用于测试Nand-flash坏块的控制系统;所述测试Nand-flash坏块的控制系统包括测试板卡和上位机;所述测试Nand-flash坏块的控制方法,包括如下步骤:
步骤S110:将Nand-flash和所述测试板卡通信连接。
步骤S120:将所述上位机和所述测试板卡通信连接。
步骤S130:控制所述上位机对Nand-flash进行开卡操作,以获取Nand-flash的测前信息,其中,所述测前信息包括原始坏块数量和原始SMART信息。
具体的,这里的开卡操作为:以用户设定好的SSD基本信息、NAND ID、缓存芯片(可选)等信息,生成一个专门用于待开卡的Nand-flash的一个定制固件,并将该定制固件写入到Nand-flash的主控自带的只读内存中,这是每个Nand-flash在使用前都必须进行的一个常规操作。
在开卡的过程中,上位机会获取Nand-flash的测前信息,其中,所述测前信息包括原始坏块数量和原始SMART信息。
步骤S140:控制所述上位机对Nand-flash进行读写测试。
步骤S150:控制所述上位机获取Nand-flash的测后信息,其中,所述测后信息包括当前坏块数量和当前SMART信息。
具体的,进行读写测试后的Nand-flash会产生相应的参数变化,这些参数变化体现在测后信息,其中,所述测后信息包括当前坏块数量和当前SMART信息。
步骤S160:比较所述测前信息和所述测后信息,以生成Nand-flash的测试结果信息。
具体的,通过比较测前信息和所述测后信息,即能够得到Nand-flash的硬件测试信息,并生成Nand-flash的测试结果信息,以便于操作人员知晓该Nand-flash的产品质量。
本发明提出的测试Nand-flash坏块的控制方法,能够在Nand-flash未焊接至实际应用产品时,即对Nand-flash的可靠性质量指标进行测试,即直接将Nand-flash通过连接于测试板卡,再通过上位机来进行读写测试,并基于读写测试前的测前信息,和读写测试后的测后信息来进行分析,以得到测试结果信息,这其中,测前信息包括原始坏块数量和原始SMART信息,测后信息包括当前坏块数量和当前SMART信息,通过比较读写测试前后的坏块的数量差异,以及SMART信息的差异,即可知晓进行测试的Nand-flash的产品质量;从测试的判断依据来看,坏块数量增加得越少,则Nand-flash的产品质量越好,SMART信息中存在多个Nand-flash的参数,这些参数的变化也能够反映Nand-flash的产品质量。
在本发明提出的一种测试Nand-flash坏块的控制方法的第二实施例中,基于第一实施例,所述测试板卡包括控制芯片,以及与所述控制芯片通信连接的SATA控制器,以及与所述SATA控制器通信连接的测试连接座;步骤S110,包括如下步骤:
步骤S210:将Nand-flash嵌入所述测试连接座,以形成SATA存储盘。
具体的,这里的测试连接座为将Nand-flash和SATA控制器建立通信连接的结构,测试连接座包括座体、连接线和固定扣件;座体设置有2排触点列,触点列包括多个触点,各触点均与连接线通信连接,连接线和SATA控制器通信连接;使用时,将Nand-flash的引脚与各触点对应接触,并通过固定扣件将Nand-flash固定于座体,即可使得Nand-flash嵌入所述测试连接座,以形成SATA存储盘。
步骤S120,包括如下步骤:
步骤S220:将上位机通过USB接口通信连接于所述控制芯片。
本实施例,给出了Nand-flash和所述测试板卡通信连接的具体方案,以及上位机和测试板卡通信连接的具体方案。
在本发明提出的一种测试Nand-flash坏块的控制方法的第三实施例中,基于第二实施例,所述控制芯片为FPGA芯片,步骤S140,包括如下步骤:
步骤S310:于所述FPGA芯片内部例化一个Microblaze软核。
具体的,本发明中的MicroBlaze软核是一个被Xilinx公司优化过的可以嵌入在FPGA中的RISC处理器软核,具有运行速度快、占用资源少、可配置性强等优点,可以完成可编程系统芯片(SOPC)的设计。通过Microblaze软核来完成后续的上位机对SATA存储盘的操作,这样操作速度更快。
步骤S320:通过所述上位机将所述SATA存储盘挂载至所述FPGA芯片。
步骤S330:通过所述上位机向所述FPGA芯片发送RAID组建指令。
步骤S340:基于RAID组建指令,通过所述FPGA芯片将所述SATA存储盘组成SATA存储阵列。
具体的,基于RAID组建指令,可通过所述FPGA芯片将多个所述SATA存储盘组成SATA存储阵列,以实现对多个Nand-flash同步进行读写测试,提高了测试效率。
步骤S350:控制所述上位机对所述SATA存储阵列进行裸盘全速读写测试。
本实施例,给出了通过上位机和控制芯片来对多个Nand-flash同步进行读写测试的具体方案,相比传统的测试方案,测试效率更高。
在本发明提出的一种测试Nand-flash坏块的控制方法的第四实施例中,基于第三实施例,步骤S350,包括如下步骤:
步骤S410:通过所述上位机获取预设个数。
具体的,通过所述上位机获取预设个数(例如100个)。
步骤S420:通过所述FPGA芯片随机生成所述预设个数的且依次递增的递增数值。
具体的,通过所述FPGA芯片随机生成所述预设个数的且依次递增的递增数值。即随机生成100个依次递增的递增数值,例如,从1到100的递增数值。
步骤S430:通过所述FPGA芯片将所述递增数值从小至大依次全速写入所述SATA存储阵列,并记录写入速度。
步骤S440:通过所述FPGA芯片依次全速读取所述SATA存储阵列中写入的所述递增数值,并记录读取速度。
步骤S450:通过所述FPGA芯片比较读取的所述递增数值和写入的所述递增数值,以生成读写准确率。
步骤S460:控制所述FPGA芯片将所述写入速度、所述读取速度和所述读写准确率发送至所述的上位机。
本实施例给出了进行读写测试的具体内容,即对Nand-flash进行读写测试后,会生成与Nand-flash对应的写入速度、读取速度和读写准确率,这些指标用于进行后续进一步的判断分析,以得到Nand-flash的测试结结果。
在本发明提出的一种测试Nand-flash坏块的控制方法的第五实施例中,基于第四实施例,步骤S150,之前还包括如下步骤:
步骤S510:判断是否满足第一预设条件,所述第一预设条件包括:所述写入速度大于预设写入速度,且所述读取速度大于预设读取速度,且所述读写准确率大于预设准确率。
具体的,即只有满足了第一预设条件后,才能说明本次读写测试是合格的,因为如果写入速度未大于预设写入速度(例如10MB/s)、读取速度未大于预设读取速度(例如5MB/s),读取准确率未大于预设准确率(例如99%),则说明本次读写测试的要求不够严格,并不能完全测试出Nand-flash的读写极限,故只有满足了第一预设条件,才能够进行步骤S150。
若是,执行步骤S150。
若否,执行步骤S520:减少所述预设个数,并再次执行所述控制所述上位机对所述SATA存储阵列进行裸盘全速读写测试的步骤,并再次判断是否满足所述第一预设条件。
若没有达到第一预设条件,则说明本次读写测试中,Nand-flash并为达到所需要的读取速度、写入速度和准确率,故需要再次执行所述控制所述上位机对所述SATA存储阵列进行裸盘全速读写测试的步骤,但执行之前,需要线减少预设个数(例如减少为50个),减少预设个数,更利于读写测试达到第一预设条件,完成再次读写测试后,再次判断是否满足所述第一预设条件。
若是,执行步骤S150。
具体的,若满足第一预设条件,可继续执行步骤S150。
若否,执行步骤S530:生成Nand-flash的测试结果信息,其中,所述Nand-flash的测试结果信息用于表述Nand-flash产品不合格。
具体的,若不满足第一预设条件,则说明Nand-flash并不能在达到第一预设条件的情况下完成读写测试,则其测试结果也就没有可信度,故直接直接生成Nand-flash的测试结果信息,其中,所述Nand-flash的测试结果信息用于表述Nand-flash产品不合格。
在本发明提出的一种测试Nand-flash坏块的控制方法的第六实施例中,基于第五实施例,步骤S410,包括如下步骤:
步骤S610:通过所述上位机获取本批次所有已测试的Nand-flash的所述读写准确率的平均值。
步骤S620:判断所述平均值是否大于所述预设准确率。
若是,执行步骤S630:逐步提升所述预设个数,直至所述平均值和所述预设准确率的差值小于预设差值。
具体的,若是,说明本批次读写测试的平均准确率比较高,还可以适当提升预设个数(例如每次提升2个),因提升预设个数会导致读写测试中,进行读写的数据量增加,故相应的会降低读写测试后准确率;故逐步提升预设个数,直至所述平均值和所述预设准确率的差值小于预设差值(如0.02%)。
若否,执行步骤S640:逐步降低所述预设个数,直至所述平均值大于所述预设准确率,且所述平均值和所述预设准确率的差值小于预设差值。
具体的,若否,说明本批次读写测试的平均准确率比较低,故可以适当降低预设个数(例如每次降低2个),因降低预设个数会导致读写测试中,进行读写的数据量降低,故相应的会提升读写测试后准确率;故逐步降低预设个数,直至所述平均值大于预设准确率,且所述平均值和所述预设准确率的差值小于预设差值(如0.02%)。
这样设置,能够使得整个测试过程中,保证大部分Nand-flash的读写准确率达到预设准确率,但又控制准确率不会过高,进而保证大部分Nand-flash均能够通过读写测试。
在本发明提出的一种测试Nand-flash坏块的控制方法的第七实施例中,基于上述任一项实施例,步骤S160,包括如下步骤:
步骤S710:获取坏块增加率,其中,所述坏块增加率为所述当前坏块数量减去所述原始坏块数量后除以所述原始坏块数量的值。
步骤S720:判断是否满足第二预设条件,所述第二预设条件包括:所述坏块增加率小于预设增加率,且所述当前SMART信息中的ECC校验数值小于预设效验数值。
具体的,坏块增加率越大,说明Nand-flash工作性能越不稳定,这里的预设增加率优选为50%;这里的ECC校验数值,即为内存纠错值,即在读写过程中,数据出错后,Nand-flash自动纠错的次数,该ECC校验数值越大,说明Nand-flash在读写过程中,出现的错误越多,预设效验数值为100。
若是,执行步骤S730:生成Nand-flash的测试结果信息,其中,所述测试结果信息用于表述Nand-flash产品合格。
具体的,若是,说明在进行读写测试后,Nand-flash的坏块增加率低于50%,且当前SMART信息中的ECC校验数值小于100,则说明Nand-flash的读写测试结果为合格,故直接生成测试结果信息,且测试结果信息用于表述Nand-flash产品合格。
若否,执行步骤S740:生成Nand-flash的测试结果信息,其中,所述测试结果信息用于表述Nand-flash产品不合格。
若否,说明在进行读写测试后,Nand-flash的坏块增加率不低于50%,且当前SMART信息中的ECC校验数值不小于100,则说明Nand-flash的读写测试结果为不合格,故直接生成测试结果信息,且测试结果信息用于表述Nand-flash产品不合格。
在本发明提出的一种测试Nand-flash坏块的控制方法的第八实施例中,基于第七实施例,所述测试Nand-flash坏块的控制系统还包括能够调节温度的测试房,所述上位机用于控制所述测试房的室内温度;所述测试板卡和Nand-flash均设置于所述测试房内;本实施例还包括如下步骤:
步骤S810:通过所述上位机以起始温度值为基础逐步提升温度,并于每个温度值进行一批次读写测试。
具体的,通过上位机以起始温度值(例如30摄氏度)为基础逐步提升温度(例如每次提升1摄氏度),并于每个温度值进行一批次读写测试。
步骤S820:基于Nand-flash的所述测试结果信息,生成每个批次读写测试对应的Nand-flash产品的合格率。
具体的,即生成每个温度值对应的读写测试对应的Nand-flash产品的合格率。
步骤S830:将每批次读写测试后Nand-flash产品的合格率与进行读写测试时的温度值建立对应关系。
具体的,即每个温度值对应一个温度值。
步骤S840:基于所述合格率和对应的温度值,生成Nand-flash对应的适宜工作温度区间。
具体的,基于所述合格率和对应的温度值,生成Nand-flash对应的适宜工作温度区间,例如:将产品合格率为100%时对应的温度值归纳为所述适宜工作温度区间。
通过本实施例,能够得到Nand-flash测试结果和测试温度值的对应关系,从而找到Nand-flash最适宜的工作温度区间,以便于供实际应用以参考。
在本发明提出的一种测试Nand-flash坏块的控制方法的第九实施例中,基于第一至第六实施例,本实施例还包括如下步骤:
步骤S910:在每一个Block上对坏块进行坏块标记,根据各个坏块标记形成用于标记坏块的坏块位置表。
具体的,每个Nand-flash均由许多个block(块)组成,控制芯片在每个Block上对坏块进行坏块标记,根据各个坏块标记形成用于标记坏块的坏块位置表。
步骤S920:根据所述坏块位置表将读写区域划分成各个连续读写区域,并确定每个连续读写区域的最大读写长度。
控制芯片根据所述坏块位置表将Nand-flash的读写区域划分成各个连续读写区域,并确定每个连续读写区域的最大读写长度。
例如,Nand-flash由1024个block组成,各个block依次按顺序组成整个Nand-flash,因存在坏块,故基于坏块位置表中的坏块位置信息可确定各个连续读写区域(由依次连续排列的正常的块组成),并确定每个连续读写区域的最大读写长度,这里的最大读写长度即为整个连续读写区域内所有的块加在一起所能读写的数据最大长度(例如100个块加在一起所能读写的数据最大长度)。
步骤S930:获取待写入数据的数据长度,将所述数据长度与各个所述连续读写区域的最大读写长度进行比对,以将所述待写入数据写入最大读写长度不小于所述数据长度的连续读写区域。
具体的,控制芯片获取待写入数据的数据长度,将所述数据长度与各个所述连续读写区域的最大读写长度进行比对,以将所述待写入数据写入最大读写长度不小于所述数据长度的连续读写区域。
这样能够将写入数据存入单个连续读写区域,即不需要将写入数据进行拆分后在存储于不同的连续读写区域,有利于写入数据的保存完整性。
本发明还提出一种测试Nand-flash坏块的控制系统,本系统应用如上述任一项所述的测试Nand-flash坏块的控制方法;所述测试Nand-flash坏块的控制系统包括测试板卡和上位机。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。