测试NANDFLASHECC纠错功能的方法与流程

文档序号:32350862发布日期:2022-11-26 13:02阅读:640来源:国知局
测试NANDFLASHECC纠错功能的方法与流程
测试nand flash ecc纠错功能的方法
技术领域
1.本发明属于电子设备测试技术领域,具有是nand flash设备测试领域,涉及一种测试nand flash ecc纠错功能的方法,适用于验证自带ecc功能的nand flash设备。


背景技术:

2.随着科技产业发展,嵌入式设备越来越多地使用nand flash芯片设计以应对大容量存储需求,各种不同工艺的nand flash也被设计出来。在实际应用中,还需要嵌入式系统主控芯片在读取nand flash数据时,使用ecc(错误检查和纠正,error correcting code)纠错功能发现和纠正数据位翻转。不同型号nand flash发生位翻转几率不同,所要求的ecc纠错能力也会不一样,ecc纠错能力越强大,ecc码占用存储空间也越大。对于适配一款nand flash时,需要采样一种方法验证其ecc的纠错能力是否满足设计需求。
3.现有的测试nand flash ecc纠错功能方法是采样循环擦写方式,让flash发生自然位翻转,来验证ecc纠错功能。该方法需要擦写上万次才会有可能产生bit位翻转,因此测试时间周期非常长,且可靠性不高,无法知道具体的bit位翻转数。


技术实现要素:

4.本发明的目的就是针对现有测试方法测试周期长、可靠性不高的问题,提供一种测试nand flash ecc纠错功能的方法。
5.本发明方法具体是:
6.步骤(1)nand flash包括多个block块,每个block块包括多个大小相同的页;在nand flash上随机选取一个可读写的block块作为选取块,开启nand ecc功能,进行擦除操作,擦除选取块中所有数据后,然后检查选取块是否全为0xff数据;如果不全为0xff数据,表示擦除不成功,重新选择block块,重复操作,直至选取到能够擦除成功的选取块a。
7.步骤(2)在内存中定义一个与页大小相同的缓存区b,将缓存区b中内容填满0xff数据,对缓存区b中的数据进行循环检查:根据需要测试翻转的bit位数n,从第一个字节开始,对字节内8个bit位进行逐位检查是否为1,如果为1则修改为0,如果是0则跳过,伪造n个bit位翻转现象;初始测试时n值设为1。
8.步骤(3)关闭nand ecc功能,进行写操作,将缓存区b中数据写入到选取块a的每一页中,写入大小为页大小,伪造擦除操作时发生n个bit位翻转现象。
9.步骤(4)开启nand ecc功能,进行读操作,ecc功能对选取块a中翻转的数据进行纠错,读取选取块a中所有数据,如果读取的数据全为0xff数据,说明擦除操作时n个bit位翻转能够纠错成功,ecc功能的纠错能力大于等于n;如果读取的数据不全是0xff数据,说明擦除操作时n个bit位翻转纠错失败,ecc功能的纠错能力小于n,即ecc功能的纠错能力为n-1,退出测试。
10.步骤(5)开启nand ecc功能,进行擦除操作,擦除选取块a中所有数据,然后检查选取块是否全为0xff数据,确保选取块a数据擦除成功;如不成功,返回步骤(1)。
11.步骤(6)在内存中定义两个与页大小相同的缓存区c和缓存区d,将缓存区c和缓存区d中填满相同的随机数据,保持缓存区c和缓存区d一致;
12.步骤(7)开启nand ecc功能,进行写操作,将缓存区c中的数据写入到选取块a的每一页中,写入大小为页大小,使选取块a中数据具有随机性;
13.步骤(8)对缓存区c中的数据进行循环检查:根据需要测试翻转的bit位数n,从第一个字节开始,对字节内8个bit位进行逐位检查是否为1,如果为1则修改为0,如果是0则跳过,伪造n个bit位翻转现象。
14.步骤(9)关闭nand ecc功能,进行写操作,将缓存区c中数据写入到选取块a的每一页中,写入大小为页大小,覆盖选取块a的原有数据,伪造写操作时发生n个bit位翻转现象。
15.步骤(10)开启nand ecc功能,进行读操作,ecc功能对选取块a中翻转的数据进行纠错,读取选取块a中所有数据,将读取的每页数据与缓存区d中的随机数据进行比较,如果每页都与缓存区d相同,说明写操作时n个bit位翻转能够纠错成功,ecc功能的纠错能力大于等于n,否则说明写操作时n个bit位翻转纠错失败,ecc功能的纠错能力小于n,即ecc功能的纠错能力为n-1,退出测试。
16.步骤(11)循环操作步骤(1)-(10),每轮n值加1,依次增加bit位翻转数据进行测试,即可得到此款nand flash真实的ecc纠错能力大小。
17.本发明方法首先进行擦除操作测试,然后进行写操作测试,经过两轮测试,更加精准、高效、快速的验证nand flash的ecc纠错特性,并得到nand flash真实的ecc纠错bit位数,为项目nand的选型测试提供一种有效的手段。相比现有技术,大大缩短了nand flash测试周期。
附图说明
18.图1为本发明方法的测试流程图。
具体实施方式
19.以下结合实施例对本发明技术方案做进一步的说明。
20.如图1所示,一种测试nand flash ecc纠错功能的方法,具体如下:
21.步骤(1)选取nand上可读写的block 5作为选取块,开启nand ecc功能,对block5做擦除操作后,读取block5中所有数据进行检查是否全为0xff,确保a块数据擦除成功;
22.步骤(2)定义一个数组buff1[2048],设置buff1[2048]内容全为0xff,设置buff1[0]=0xfe,伪造一个bit翻转;
[0023]
步骤(3)关闭nand ecc功能,将buff1[2048]数据写入到block5的每一页中,伪造block5中在擦除操作时发生位翻转现象;
[0024]
步骤(4)开启nand ecc功能,定义一个数组buff2[2048],循环读取block5的每页数据到数组buff2[2048]中,如果buff2中数据全为0xff,说明擦除操作时1个bit位翻转能够纠错成功,ecc功能的纠错能力大于等于1;如果读取的数据不全是0xff数据,说明擦除操作时1个bit位翻转纠错失败,ecc功能的纠错能力小于1,即ecc功能的纠错能力为0,退出测试。
[0025]
步骤(5)选取nand上可读写的block 5作为测试block,开启nand ecc功能,对
block5做擦除操作后,读取block5中所有数据进行检查是否全为0xff,确保a块数据擦除成功;
[0026]
步骤(6)定义数组buff3[2048]和数组buff4[2048],将buff3[2048]和buff4[2048]中填满相同的随机数,保持buff3[2048]和buff4[2048]中数据一致;
[0027]
步骤(7)开启nand ecc功能,将buff3[2048]中数据写入到block5的每一页中;
[0028]
步骤(8)对buff3[2048]中数据进行循环检查,从buff1[0]开始,对字节内8个bit位逐位检查是否为1,如果为1则修改为0,伪造一个bit位翻转现象;
[0029]
步骤(9)关闭nand ecc功能,将buff3[2048]中数据写入到block5中的每一页中,伪造写入操作时发生1个bit位翻转现象;
[0030]
步骤(10)开启nand ecc功能,循环读取block5每页数据到buff3[2048],将buff3[2048]与buff4[2048]进行比较,如果两者数据相同,说明写操作时1个bit位翻转能够纠错成功,ecc功能的纠错能力大于等于1,否则说明写操作时1个bit位翻转纠错失败,ecc功能的纠错能力小于1,即ecc功能的纠错能力为0,退出测试。
[0031]
步骤(11)循环操作步骤(1)-(10),依次增加bit位翻转数据进行测试,即可得到此款nand flash真实的ecc纠错能力大小。
[0032]
上述实施例仅为本发明较佳的实施方式,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1