书签 分享 收藏 举报 版权申诉 / 32

一种测试NFTL的方法及系统.pdf

  • 上传人:li****8
  • 文档编号:4677236
  • 上传时间:2018-10-27
  • 格式:PDF
  • 页数:32
  • 大小:10.55MB
  • 摘要
    申请专利号:

    CN201310067136.X

    申请日:

    2013.03.01

    公开号:

    CN104021816A

    公开日:

    2014.09.03

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G11C 29/08申请日:20130301|||公开

    IPC分类号:

    G11C29/08

    主分类号:

    G11C29/08

    申请人:

    安凯(广州)微电子技术有限公司

    发明人:

    渠长红; 胡胜发

    地址:

    510663 广东省广州市萝岗区广州科学城科学大道182号创新大厦C1区3楼

    优先权:

    专利代理机构:

    北京集佳知识产权代理有限公司 11227

    代理人:

    王宝筠

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供了一种测试NFTL的方法和系统,所述方法包括:控制单元监测是否接收到NFTL的操作指令;如果接收到NFTL的操作指令,判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并结束流程;如果否,则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作,并且判断所述操作指令中的操作类型是否为擦除指令,如果为擦除指令,则将机械硬盘中与所述操作指令中的操作块标识对应的擦除次数加一。由于机械硬盘没有最大擦除次数的限制,因此本发明不会由于擦除次数多而损坏机械硬盘,即使在NFTL的测试量很大时,也能够避免损坏机械硬盘,从而减少资源浪费。

    权利要求书

    权利要求书
    1.  一种测试NFTL的方法,其特征在于,所述方法用于测试NFTL的系统中,所述系统包括控制单元和机械硬盘,所述控制单元根据测试NFTL的目标NAND闪存的型号设置块的个数、各个块的块标识以及块的最大擦除次数,并且在机械硬盘中存储各个块的块标识对应的状态标识为初始标识、存储各个块的块标识对应的擦除次数为初始次数;
    所述方法包括:
    控制单元监测是否接收到NFTL的操作指令,其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识;
    如果接收到NFTL的操作指令,判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并结束流程;如果否,则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作,并且判断所述操作指令中的操作类型是否为擦除指令,如果为擦除指令,则将机械硬盘中与所述操作指令中的操作块标识对应的擦除次数加一;
    其中,当机械硬盘存储的任一块标识对应的擦除次数达到最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。

    2.  根据权利要求1所述的方法,其特征在于,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识、以及各个页的页标识对应的读操作标识为读失败标识或读成功标识,并且在机械硬盘中存储各个页的页标识对应的读操作标识;所述操作参数还包括起始页标识和操作页个数;
    则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:
    判断所述操作指令中的操作类型是否为读操作,如果为读操作,则判断机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的读操作标识中是否存在读失败标识,如果是,则结束流程。

    3.  根据权利要求1所述的方法,其特征在于,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识、以及各个页的页标识对应的写操作标识为写失败标识或写成功标识,并且在机械硬盘中存储各个 页的页标识对应的写操作标识;所述操作参数还包括起始页标识和操作页个数;
    则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:
    判断所述操作指令中的操作类型是否为写操作,如果为写操作,则判断机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的写操作标识中是否存在写失败标识,如果是,则结束流程。

    4.  根据权利要求1所述的方法,其特征在于,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块的块标识对应的擦除操作标识为擦除失败标识或擦除成功标识,并且在机械硬盘中存储各个块的块标识对应的擦除操作标识;
    则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:
    判断所述操作指令中的操作类型是否为擦除操作,如果为擦除操作,则判断机械硬盘中与操作指令中的操作块标识对应的擦除操作标识是否为擦除失败标识,如果是,则结束流程。

    5.  根据权利要求1所述的方法,其特征在于,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识,并且在机械硬盘中存储各个块标识对应的最大使用页为初始页数;所述操作参数还包括起始页标识和操作页个数;
    在接收到NFTL的操作指令后还包括:判断所述操作指令中的操作类型是否为写操作,
    如果是写操作,则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:判断所述操作块标识对应的最大使用页是否为初始页数,如果为初始页数,则判断所述起始页标识是否为第0页,如果不为第0页,则返回写操作不为第0页的错误提示,并且结束流程;如果不为初始页数,则判断所述起始页标识是否为最大使用页加一的和,如果否,则返回写顺序错误提示并结束流程;
    如果是写操作,则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作时,还包括在机械硬盘将操作指令中的操作块标识对应的最大使用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。

    6.  根据权利要求1至5任意一项所述的方法,其特征在于,所述操作参数还包括层类型标识,所述判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识之前还包括:判断所述层类型标识是否为双层标识,如果是,则判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识时还包括:判断所述操作块标识加一的块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并结束流程。

    7.  根据权利要求1至5任意一项所述的方法,其特征在于,设置各个块标识对应的页标识,并且在机械硬盘中存储各个页标识对应的数据为初始数据;
    则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包括:
    当所述操作指令中的操作类型为写操作时,在机械硬盘中将与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据存储为写入数据,其中,所述操作参数还包括写入数据、起始页标识和操作页个数;
    当所述操作指令中的操作类型为读操作时,读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据,其中,所述操作参数还包括起始页标识和操作页个数;
    当所述操作指令中的操作类型是擦除操作时,将操作块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据。

    8.  根据权利要求7所述的方法,其特征在于,所述操作参数还包括层标识;
    当所述操作指令中的操作类型为写操作或读操作时,若所述操作指令中的层标识为单层标识,则所述与操作块标识、起始页标识和操作页个数对应的各个页标识具体为:与所述操作块标识对应的页标识为[pageid,pageid+pagenum-1]区间的各个页标识;若所述操作指令中的层标识为双层标 识,则所述与操作块标识、起始页标识和操作页个数对应的各个页标识具体为:与所述操作块标识对应的页标识为[pageid,pageid+pagenum/2-1]区间的各个页标识,以及与所述操作块标识+1的块标识对应的标识为[pageid,pageid+pagenum/2-1]区间的各个页标识;其中,pageid为起始页标识,pagenum为操作页个数;
    当所述操作指令中的操作类型为擦除操作时,若所述操作指令中的层标识为双层标识,则将操作块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据时还包括:将操作块标识+1的块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据。

    9.  一种测试NFTL的系统,其特征在于,所述系统包括控制单元和机械硬盘;
    所述控制单元根据测试NFTL的目标NAND闪存的型号设置块的个数、各个块的块标识以及块的最大擦除次数,并且在机械硬盘中存储各个块的块标识对应的状态标识为初始标识、存储各个块的块标识对应的擦除次数为初始次数,以及监测是否接收到NFTL的操作指令;其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识;
    如果所述控制单元接收到NFTL的操作指令,所述控制单元判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并停止工作;如果否,则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作,并且判断所述操作指令中的操作类型是否为擦除指令,如果为擦除指令,则将机械硬盘中与所述操作指令中的操作块标识对应的擦除次数加一;
    其中,所述控制单元还用于当机械硬盘存储的任一块标识对应的擦除次数达到最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。

    10.  根据权利要求9所述的系统,其特征在于,所述控制单元还用于根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识,并且在机械硬盘中存储各个块标识对应的最大使用页为初始页数;其中,所述操作参数还包括起始页标识和操作页个数;
    所述控制单元还用于,在接收到NFTL的操作指令后,判断所述操作指令中的操作类型是否为写操作;
    如果是写操作,则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前,判断所述操作块标识对应的最大使用页是否为初始页数,如果为初始页数,则判断所述起始页标识是否为第0页,如果不为第0页,则返回写操作不为第0页的错误提示,并且停止工作;如果不为初始页数,则判断所述起始页标识是否为最大使用页加一的和,如果否,则返回写顺序错误提示并停止工作;
    如果是写操作,则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作时,在机械硬盘将操作指令中的操作块标识对应的最大使用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。

    说明书

    说明书一种测试NFTL的方法及系统
    技术领域
    本发明涉及嵌入式系统领域,尤其是涉及一种测试NFTL的方法及系统。
    背景技术
    存储设备作为程序和数据的主要载体,是目前嵌入式系统中不可或缺的硬件模块。其中,NAND闪存凭借其体积小、容量大、成本低以及掉电数据不丢失等一系列优点,成为常用的存储设备之一。
    NAND闪存中包括多个chip(片选),各个chip具有多个block(块),各个block包括相同个数的page(页),并且NAND闪存根据其型号的不同具有特定的chip个数、各个chip包括的block个数、各个block包括的page个数,以及各个page的大小。对NAND闪存的操作主要包括读、写以及擦除操作。
    目前,由于NAND闪存的物理结构,导致其具有一些特性要求,例如,对NAND闪存执行读或者写操作时,都是以page为单位进行,而执行擦除操作时以block为单位进行;数据不能被直接覆盖,必须在空的或者已擦除的block内执行写操作;NAND闪存的block具有擦除的次数限制,当一个block的擦除次数大于最大擦除次数时,则该block成为坏块,不能继续使用。由于NAND闪存的诸多特性,目前通常通过一层中间层,即NAND Flash Trans lation Layer(NAND闪存转换层,缩写为NFTL),对NAND闪存进行各种操作,以实现在嵌入式系统中更好的对NAND闪存进行管理。而NFTL在投入市场使用之前,通常要经过一系列的测试,以保证NFTL对NAND闪存的操作逻辑符合NAND闪存的特性要求。
    目前,在现有技术中,对NFTL的测试主要是通过向NFTL输入不同的数据和操作指令,经过NFTL的处理后向NAND闪存执行相应的操作,根据操作的结果和测试输入的数据来测试NFTL的操作逻辑。例如,通过NFTL向NAND闪存存入数据,之后读取该数据,判断读取的数据和存入的数据是否一致;又例如,在通过NFTL向NAND存入数据后擦除该数据,判断数据是否成功擦 除。可以看出,由于现有技术中,通过NAND闪存对NFTL进行测试,而NAND闪存由于物理结构的特性,擦除次数达到最大擦除次数的block会成为坏块,不能继续使用,从而造成NAND闪存损坏,尤其是NFTL的测试量很大时,会损坏大量的NAND闪存而导致资源浪费。
    发明内容
    本发明解决的技术问题在于提供一种测试NFTL的方法及系统,即使NFTL的测试量很大时,也能够避免损坏NAND闪存,从而减少资源的浪费。
    为此,本发明解决技术问题的技术方案是:
    本发明提供了一种测试NFTL的方法,所述方法用于测试NFTL的系统中,所述系统包括控制单元和机械硬盘,所述控制单元根据测试NFTL的目标NAND闪存的型号设置块的个数、各个块的块标识以及块的最大擦除次数,并且在机械硬盘中存储各个块的块标识对应的状态标识为初始标识、存储各个块的块标识对应的擦除次数为初始次数;
    所述方法包括:
    控制单元监测是否接收到NFTL的操作指令,其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识;
    如果接收到NFTL的操作指令,判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并结束流程;如果否,则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作,并且判断所述操作指令中的操作类型是否为擦除指令,如果为擦除指令,则将机械硬盘中与所述操作指令中的操作块标识对应的擦除次数加一;
    其中,当机械硬盘存储的任一块标识对应的擦除次数达到最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。
    优选地,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识、以及各个页的页标识对应的读操作标识为读失败标识或读成功标识,并且在机械硬盘中存储各个页的页标识对应的读操作标识;所述操作参数还包括起始页标识和操作页个数;
    则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:
    判断所述操作指令中的操作类型是否为读操作,如果为读操作,则判断机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的读操作标识中是否存在读失败标识,如果是,则结束流程。
    优选地,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识、以及各个页的页标识对应的写操作标识为写失败标识或写成功标识,并且在机械硬盘中存储各个页的页标识对应的写操作标识;所述操作参数还包括起始页标识和操作页个数;
    则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:
    判断所述操作指令中的操作类型是否为写操作,如果为写操作,则判断机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的写操作标识中是否存在写失败标识,如果是,则结束流程。
    优选地,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块的块标识对应的擦除操作标识为擦除失败标识或擦除成功标识,并且在机械硬盘中存储各个块的块标识对应的擦除操作标识;
    则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:
    判断所述操作指令中的操作类型是否为擦除操作,如果为擦除操作,则判断机械硬盘中与操作指令中的操作块标识对应的擦除操作标识是否为擦除失败标识,如果是,则结束流程。
    优选地,所述控制单元根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识,并且在机械硬盘中存储各个块标识对应的最大使用页为初始页数;所述操作参数还包括起始页标识和操作页个数;
    在接收到NFTL的操作指令后还包括:判断所述操作指令中的操作类型是否为写操作,
    如果是写操作,则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前还包括:判断所述操作块标识对应的最大使用 页是否为初始页数,如果为初始页数,则判断所述起始页标识是否为第0页,如果不为第0页,则返回写操作不为第0页的错误提示,并且结束流程;如果不为初始页数,则判断所述起始页标识是否为最大使用页加一的和,如果否,则返回写顺序错误提示并结束流程;
    如果是写操作,则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作时,还包括在机械硬盘将操作指令中的操作块标识对应的最大使用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。
    优选地,所述操作参数还包括层类型标识,所述判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识之前还包括:判断所述层类型标识是否为双层标识,如果是,则判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识时还包括:判断所述操作块标识加一的块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并结束流程。
    优选地,设置各个块标识对应的页标识,并且在机械硬盘中存储各个页标识对应的数据为初始数据;
    则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包括:
    当所述操作指令中的操作类型为写操作时,在机械硬盘中将与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据存储为写入数据,其中,所述操作参数还包括写入数据、起始页标识和操作页个数;
    当所述操作指令中的操作类型为读操作时,读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据,其中,所述操作参数还包括起始页标识和操作页个数;
    当所述操作指令中的操作类型是擦除操作时,将操作块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据。
    优选地,其特征在于,所述操作参数还包括层标识;
    当所述操作指令中的操作类型为写操作或读操作时,若所述操作指令中的层标识为单层标识,则所述与操作块标识、起始页标识和操作页个数对应的各个页标识具体为:与所述操作块标识对应的页标识为[pageid, pageid+pagenum-1]区间的各个页标识;若所述操作指令中的层标识为双层标识,则所述与操作块标识、起始页标识和操作页个数对应的各个页标识具体为:与所述操作块标识对应的页标识为[pageid,pageid+pagenum/2-1]区间的各个页标识,以及与所述操作块标识+1的块标识对应的标识为[pageid,pageid+pagenum/2-1]区间的各个页标识;其中,pageid为起始页标识,pagenum为操作页个数;
    当所述操作指令中的操作类型为擦除操作时,若所述操作指令中的层标识为双层标识,则将操作块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据时还包括:将操作块标识+1的块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据。
    本发明提供了一种测试NFTL的系统,所述系统包括控制单元和机械硬盘;
    所述控制单元根据测试NFTL的目标NAND闪存的型号设置块的个数、各个块的块标识以及块的最大擦除次数,并且在机械硬盘中存储各个块的块标识对应的状态标识为初始标识、存储各个块的块标识对应的擦除次数为初始次数,以及监测是否接收到NFTL的操作指令;其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识;
    如果所述控制单元接收到NFTL的操作指令,所述控制单元判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并停止工作;如果否,则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作,并且判断所述操作指令中的操作类型是否为擦除指令,如果为擦除指令,则将机械硬盘中与所述操作指令中的操作块标识对应的擦除次数加一;
    其中,所述控制单元还用于当机械硬盘存储的任一块标识对应的擦除次数达到最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。
    优选地,所述控制单元还用于根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识,并且在机械硬盘中存储各个块标识对应的最大使用页为初始页数;其中,所述操作参数还包括起始页标识和操作页个数;
    所述控制单元还用于,在接收到NFTL的操作指令后,判断所述操作指令中的操作类型是否为写操作;
    如果是写操作,则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前,判断所述操作块标识对应的最大使用页是否为初始页数,如果为初始页数,则判断所述起始页标识是否为第0页,如果不为第0页,则返回写操作不为第0页的错误提示,并且停止工作;如果不为初始页数,则判断所述起始页标识是否为最大使用页加一的和,如果否,则返回写顺序错误提示并停止工作;
    如果是写操作,则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作时,在机械硬盘将操作指令中的操作块标识对应的最大使用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。
    通过上述技术方案可知,在机械硬盘中存储块标识对应的状态标识和擦除次数,当控制单元监测到NFTL的操作指令后,判断操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是坏块标识,则返回操作坏块提示并且结束流程,此时可知NFTL向坏块执行了操作;如果不为坏块标识,则根据操作类型和操作参数对机械硬盘执行相应的读、写以及擦除操作,并且判断操作指令的操作类型是否为擦除操作,如果是,则将机械硬盘中与操作块标识对应的擦除次数加一。当机械硬盘中存储的任一个块标识对应的擦除次数达到了最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。也就是说,在本发明的技术方案里,NFTL无需再对NAND闪存执行相应的操作,只需对控制单元发送操作指令,控制单元根据操作指令在机械硬盘中执行相应的操作,并且通过设置各个块的状态标识使得擦除次数达到最大擦除次数的块成为坏块。由于机械硬盘与NAND闪存的物理结构完全不同,而且机械硬盘并没有最大擦除次数的限制,因此,本发明的技术方案并没有通过NAND闪存测试NFTL,并且也不会由于擦除次数多而损坏机械硬盘,即使在NFTL的测试量很大时,也能够避免损坏机械硬盘,更加不会损坏NAND闪存,从而减少资源浪费。
    附图说明
    图1为本发明提供的方法实施例的流程示意图;
    图2为一款NAND闪存的物理结构;
    图3为NAND闪存双plane操作下的cache操作的操作对象图;
    图4为本发明提供的另一方法实施例的流程示意图;
    图5为NAND闪存的存储数据图;
    图6为本发明提供的另一方法实施例的流程示意图;
    图7为逆序写、覆盖写、和跳写的示意图;
    图8A和图8B为本发明提供的另一方法实施例的流程示意图;
    图9为本发明提供的系统实施例的结构示意图。
    具体实施方式
    请参阅图1,本发明提供了一种测试NFTL的方法的具体实施例,在该实施例中,所述方法用于测试NFTL的系统中,该系统包括控制单元和机械硬盘。具体地,所述测试NFTL的系统可以为计算机(例如PC机)、嵌入式硬件板等,控制单元可以为ARM(Advanced RISC Machines)、MCU(Micro Control Unit,微处理器)、FPGA(Field-Programmable Gate Array,即现场可编程门阵列)等具有控制功能的模块。控制单元根据测试NFTL的目标NAND闪存的型号设置块的个数、各个块的块标识以及块的最大擦除次数。这里,测试NFTL的目标NAND闪存是指能够用于测试该NFTL的NAND闪存,块标识为与NAND闪存的每个块唯一对应的标识号。
    并且在机械硬盘中存储各个块标识对应的状态标识为初始标识、存储各个块的块标识对应的擦除次数为初始次数。这里,实际上是在机械硬盘上给每一个块都设置了一个用来标识块的状态的标识位,以及给每一个块都设置一个用来记录块的擦除次数的数据位。在具体实施时,可以是在机械硬盘中存储每一个块标识与该块标识对应的状态标识和擦除次数,还可以是在机械硬盘中按一定的顺序存储所有的状态标识和擦除次数,例如,在机械硬盘的一个存储位置开始依次存放块标识0对应的状态标识,接下来存放块标识1对应的状态标识,以此类推,直到将所有的块标识对应的状态标识都进行存储,存储擦除次数可以与存储状态标识的方式类似,这里不再赘述。
    所述方法包括:
    S101:控制单元监测是否接收到NFTL的操作指令,其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识。
    操作类型包括读操作、写操作、和擦除操作。由于对NAND闪存执行读操作和写操作时,是以page为单位进行的,因此操作类型为读操作时,操作参数至少具有操作块标识、起始页标识和操作页个数;操作类型是写操作时,操作参数至少具有操作块标识、起始页标识、操作页个数和写入数据。而对NAND闪存执行擦除操作时以block为单位的,因此操作类型为擦除操作时,操作参数至少具有操作块标识。其中,操作块标识指的是NFTL需要执行具体读、写或者擦除操作的目标块的块标识,起始页标识指的是NFTL需要执行具体读或者写操作的目标页标识的起始页的页标识,操作页个数指的是NFTL需要执行具体读或者写操作的目标页标识的标识个数。
    如果该步骤中的控制单元接收到NFTL的操作指令后,则执行S102。这里,如果未接到NFTL的操作指令,则可以持续执行、也可以是以一定时间为周期循环执行S101,均不影响本发明的实施。
    S102:判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是,则执行S103,此时操作块标识对应的状态标识为坏块标识;如果否,则执行S104,此时操作块标识对应的状态标识不为坏块标识。
    S103:返回操作坏块提示并结束流程。此时由于NFTL发送的操作指令中操作块标识对应的是坏块,因此结束整个流程。
    S104:根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作,并且判断所述操作指令中的操作类型是否为擦除指令,如果为擦除指令,则执行S105。
    S105:将机械硬盘中存储的、与所述操作指令中的操作块标识对应的擦除次数加一。
    下面根据操作类型的类别,分别介绍步骤S104中所述对机械硬盘执行相应的操作这一步骤的具体执行动作。
    当操作类型为写操作时,在步骤S104之前设置各个块标识对应的页标识,则该步骤S104中的根据所述操作指令中的操作类型和操作参数对机械硬盘执 行相应的操作包括:在机械硬盘中将与操作块标识、起始页标识和操作页个数对应的页标识所对应的数据存储为写入数据。其中,与操作块标识、操作页标识和操作页个数对应的页标识指的是与所述操作块标识对应的、页标识为[pageid,pageid+pagenum-1]区间的各个页标识。其中,pageid为操作参数中的起始页标识,pagenum为操作参数中的操作页个数。例如,操作块标识blkid为2,pageid为4,操作页个数pagenum为5,则上述与操作块标识、操作页标识和操作页个数对应的页标识指的是,操作块标识blkid为2对应的,页标识4、5、6、7和8。
    当操作类型为读操作时,在步骤S104之前设置各个块标识对应的页标识,则该步骤S104的根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包括:读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据。这里对与操作块标识、起始页标识和操作页个数对应的各个页标识的解释与上一段相同,因此不再赘述。在该步骤S104之前,还可以在机械硬盘中将各个块标识所对应的各个页标识对应的数据存储为初始数据,例如0xff。
    当操作类型为擦除操作时,则该步骤S104中的根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包括:擦除机械硬盘中、所述操作块标识对应的所有页标识所对应的数据。如果在该步骤S104之前已经将机械硬盘中各个块标识对应的各个页标识所对应的数据存储为初始数据,例如0xff,则上述擦除机械硬盘中、所述操作块标识对应的所有页标识所对应的数据可以具体为将机械硬盘中、所述操作块标识对应的所有页标识所对应的数据存储为初始数据,例如0xff。
    在该实施例中,所述方法还包括:当机械硬盘存储的任一块标识对应的擦除次数达到最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。具体地,判断该块标识对应的擦除次数的过程可以在该实施例中的任一步骤,由于只有在执行了擦除操作后擦除次数才会发生变化,因此上述判断过程通常在执行擦除操作之前、或者执行擦除操作并且擦除次数加一之后执行。下面分别具体介绍:若在执行擦除操作之前执行上述判断过程,则具体为当步骤S101的判断结果为是,并且在执行步骤S102之前执行:若 所述操作类型为擦除操作,则判断所述操作指令中的操作块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中该块标识对应的状态标识存储为坏块标识。若在执行擦除操作并且擦除次数加一之后执行,则具体为所述将机械硬盘中与所述操作指令中的操作块标识对应的擦除次数加一之后还包括:判断所述操作指令中的操作块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中该块标识对应的状态标识存储为坏块标识。
    通过上述技术方案可知,该实施例中在机械硬盘中存储块标识对应的状态标识和擦除次数,当控制单元监测到NFTL的操作指令后,判断操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是坏块标识,则返回操作坏块提示并且结束流程,此时可知NFTL向坏块执行了操作;如果不为坏块标识,则根据操作类型和操作参数对机械硬盘执行相应的读、写以及擦除操作,并且判断操作指令的操作类型是否为擦除操作,如果是,则将机械硬盘中与操作块标识对应的擦除次数加一。当机械硬盘中存储的任一个块标识对应的擦除次数达到了最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。也就是说,在本发明的技术方案里,NFTL无需再对NAND闪存执行相应的操作,只需对控制单元发送操作指令,控制单元根据操作指令在机械硬盘中执行相应的操作,并且通过设置各个块的状态标识使得擦除次数达到最大擦除次数的块成为坏块。而机械硬盘与NAND闪存的物理结构完全不同,并且机械硬盘与NAND闪存相比,具有非常重要的一项特性,就是机械硬盘并没有最大擦除次数的限制,因此,本发明的技术方案并没有通过NAND闪存测试NFTL,并且也不会由于擦除次数多而损坏机械硬盘,即使在NFTL的测试量很大时,也能够避免损坏机械硬盘,更加不会损坏NAND闪存,从而减少资源浪费。
    并且现有技术中,由于直接在NAND闪存上进行测试,因此无法对测试过程进行调试,并且很难判断测试时出现的问题是由NFTL造成,还是由NAND闪存本身造成。而在本实施例中,还可以在所述系统中安装调试工具,例如VisualC++(VC)等,以实现方便的跟踪调试测试中发现的调试问题,从而确定测试的问题是否由NFTL造成。
    实际上,NAND闪存可以具有单层(plane)操作和双层(plane)操作,则此时在操作参数中还包括层(plane)类型标识,其中plane类型标识包括单层标识和双层标识两种类型。首先介绍一下NAND闪存的单plane操作和双plane操作。
    图2为一款三星公司的型号为K9LBG08U0M的NAND闪存的plane切分图。单片选的K9LBG08U0M共有8192个block,被切分为4个plane,分别为plane0、plane1、plane2和plane3。其中plane0包括了block0、block2、…、block4094共2098个block,plane1包括了block1、block3、…、block4095共2098个block,plane2包括了block4096、block4098、…、block8190共2098个block,plane3包括了block4097、block4099、……、block8191共2098个block。每个block各包括page0到page127共128个page。
    其中,plane0与plane1中的block互为奇偶交替,plane2和plane3中的block也互为奇偶交替,这些奇偶交替的一对plane就称为pairedplane,在互为paired plane的两个plane内处于一条水平线的两个block,称为同组block。例如:plane0的block0和plane1的block1是同组的block;plane2的block3和plane3的block4是同组的block等等。
    对于不是cache方式的NAND闪存的普通操作,都是单plane的操作,即擦除操作时只能够擦除某个plane的一个block,读操作或者写操作则只能够同时读或写某一个plane的某个block的其中一个page。
    图2所示的NAND闪存除了提供单plane的操作外,还提供双plane的操作。值得说明的是,双plane操作只能在互为paired plane的两个plane内操作。如:双plane擦除操作可对plane0的block2和plane1的block3同时进行擦除;双plane读操作或者写操作则可对block2和block3的同一页进行写或读操作。
    因此,本实施例中的操作参数还可以包括起始页标识、操作页个数、和plane类型标识,并且在步骤S104之前为各个块标识设置对应的页标识。当plane类型标识为双层标识时,说明此时需要对标识为blkid和blkid+1的块标识执行操作。其中,blkid为操作块标识。因此在步骤S102之前还 可以包括:判断所述层类型标识是否为双层标识,如果是,则执行步骤S102时还包括:判断所述操作块标识加一的块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并结束流程。
    此外,本实施例的步骤S104中,当操作类型为读操作或写操作时并且所述plane类型标识为双层标识时,则与操作块标识、操作页标识和操作页个数对应的页标识应该指的是与所述操作块标识对应的页标识为[pageid,pageid+pagenum/2-1]区间的各个页标识,以及与所述操作块标识+1的块标识对应的标识为[pageid,pageid+pagenum/2-1]区间的各个页标识。其中,pageid为所述起始页标识,pagenum为所述操作页个数。例如,操作块标识blkid为2,pageid为4,操作页个数pagenum为6,则上述与操作块标识、操作页标识和操作页个数对应的页标识指的是,操作块标识blkid为2对应的,页标识4、5、6和操作块标识blkid为3对应的页标识4、5、6。当操作类型为擦除操作时并且所述plane类型标识为双层标识时,则所述将操作块标识对应的所有页标识在机械硬盘中所对应的数据擦除时还包括:将操作块标识+1的块标识对应的所有页标识在机械硬盘中所对应的数据擦除。当然,这里擦除操作也可以用存储为初始数据这一操作进行替换。具体过程参见步骤104的相关之处的具体描述。
    NAND闪存之所以能够被广泛应用,一个很重要的原因就是NAND闪存具有掉电不丢失的特性,这是因为NAND闪存上所有块上每个页均存在的OOB(Out Of Band)信息。OOB信息是用于在写数据时NAND闪存关机或掉电时保存的恢复数据,并且当NAND闪存再开机后则根据该OOB信息进行数据的恢复操作。因此在本实施例中,操作参数还可以包括起始页标识、操作页个数、以及OOB信息。则步骤S104中所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作时还包括:
    判断所述操作指令中的操作类型为写操作、读操作或擦除操作,如果为写操作,则根据操作块标识、起始页标识和操作页个数将操作参数中的OOB信息写入机械硬盘中,其中所述操作参数除操作块标识外,还包括起始页标识、操作页个数和OOB信息;如果为读操作,则读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的OOB信息,其中所述操作参数除操作块 标识外,还包括起始页标识和操作页个数;如果为擦除操作,则擦除机械硬盘中与所述操作块标识对应的所有操作页标识所对应的OOB信息,其中所述操作参数包括操作块标识。当然,这里擦除操作也可以用存储为初始数据这一操作进行替换。具体过程参见步骤S104的相关之处的具体描述。
    优选地,在操作指令中的操作类型为读操作或者写操作时,需要从机械硬盘中读取或写入数据。在执行读取或写入操作时,根据目标NAND闪存的型号,如果NAND闪存支持cache方式,还可以采用cache方式进行操作,即一次性对连续的多个页同时执行读操作或写操作。其中,cache方式分为单plane情况下的cache方式,以及双plane情况下的cache方式。单plane情况下的cache方式能够对某个plane的某个block内的连续的若干页同时执行读或写操作,而双plane情况下的cache方式能够对互为paired plane的两个plane内的同组block内同时执行若干页的读或写操作。例如,单plane情况下的cache方式,可对某个plane的某个block内的所有页同时进行读或写;如图3所示,双plane情况下的cache方式读或写,则可对block2和block3的从page0到page127同时进行读或写。
    在本实施例中,所述方法用于单个片选的情况,而在其他实施例中,还可以设置多个片选。具体为:控制单元还根据测试NFTL的目标NAND闪存的型号设置片选的个数、各个片选的片选标识,以及设置各个片选的片选标识分别对应的块标识。例如,片选个数为4时,各个片选的片选标识分别为chipid0、chipid1、chipid2、chipid3,其中,各个片选的片选标识各对应4个块标识,具体为片选标识chipid0对应blkid0、blkid1、blkid2、和blkid3的块标识,片选标识chipid1、chipid2、和chipid3也各对应blkid0、blkid1、blkid2、和blkid3的块标识。此时操作参数还包括操作片选标识。
    为了测试NFTL处理各种失败(读失败、写失败和擦失败)的容错处理能力,可以在机械硬盘中存储各个页的页标识对应的写操作标识、读失败标识、和擦除失败标识。下面通过一个实施例加以说明。在这里需要说明的是,在下面的一个实施例中,不妨设所述测试NFTL的系统为一PC机,同时NFTL的目标NAND闪存的型号决定该NAND闪存具有4个块、每个块具有6个页,每个页的大小是4个字节。
    请参阅图4,本发明还提供了一测试NFTL的方法的另一具体实施例,在该实施例中,所述方法用于一PC机中,所述PC机包括控制单元(具体可以为CPU)和机械硬盘。控制单元根据测试NFTL的目标NAND闪存的型号设置块的个数为4,各个块标识分别为blkid0、blkid1、blkid2和blkid3,每个块标识对应6个页标识,每个块标识对应的页标识分别为pageid0、pageid1、pageid2、pageid3、pageid4、和pageid5。块的最大擦除次数为100。
    在机械硬盘中存储各个块标识对应的状态标识为初始标识BLK_ERASEFLAG、存储各个块的块标识对应的擦除次数为初始值0x00,存储各个页标识对应的初始数据为0xff。在本实施例中,存储初始标识、初始值时,按照第0个块到最后一个块的顺序,即块标识blkid0到blkid3的顺序进行存储。存储初始数据时,按照第0个块到最后一个块的顺序,每个块中按照第0个页到最后一页的顺序,即页标识pageid0到pageid5的顺序进行存储。在其他实施例中,存储的顺序不加限定。图5为本实施例中各个块标识对应的各个页标识所对应的初始数据的示意图。
    控制单元还根据NFTL的目标NAND闪存的型号设置各个页的页标识对应的读操作标识为读失败标识或读成功标识,设置各个页的页标识对应的写操作标识为写失败标识或写成功标识、以及设置各个块的块标识对应的擦除操作标识为擦除失败标识或擦除成功标识,并且在机械硬盘中存储各个页标识对应的读操作标识、写操作标识和各个块的块标识对应的擦除操作标识。例如,根据测试的需要,可以设置NAND闪存的任意个页的读操作标识为读失败标识,其余页标识对应的读操作标识为读成功标识。
    所述方法包括:
    S401:控制单元监测是否接收到NFTL的操作指令,其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识。
    操作类型包括读操作、写操作、和擦除操作。当操作类型为读操作时,操作参数至少具有操作块标识、起始页标识、操作页个数、和层(plane)类型标识;操作类型是写操作时,操作参数至少具有操作块标识、起始页标识、操作页个数、写入数据、plane类型标识、和OOB信息;操作类型为擦除操作时,操作参数至少具有操作块标识、和plane类型标识。
    如果该步骤中的控制单元接收到NFTL的操作指令后,则执行S402。这里,如果未接到NFTL的操作指令,则可以持续执行、也可以是以一定时间为周期循环执行S401,均不影响本发明的实施。
    S402:判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识BLK_BADFLAG,如果是,则执行S403,此时操作块标识对应的状态标识为坏块标识BLK_BADFLAG;如果否,则执行S404,此时操作块标识对应的状态标识不为坏块标识BLK_BADFLAG。
    S403:返回操作坏块提示并结束流程。此时由于NFTL发送的操作指令中操作块标识对应的是坏块,因此结束整个流程。
    S404:判断操作指令中的操作类型为写操作、读操作或者擦除操作,如果为写操作,则执行S405。如果为读操作,执行S408,如果为擦除操作,执行S411。
    S405,此时操作类型为写操作,判断机械硬盘中与所述操作参数中的操作块标识、起始页标识和操作页个数对应的各个页标识中所对应的写操作标识是否存在写失败标识,如果是,则执行S406,如果否,则执行S407。
    S406:结束流程,并且结束流程时还可以返回写失败提示。
    S407:在机械硬盘中将与操作块标识、起始页标识和操作页个数对应的页标识所对应的数据存储为所述写入数据,并且根据操作块标识、起始页标识和操作页个数将操作参数中的OOB信息写入机械硬盘中。结束流程。
    S408:此时操作类型为读操作,判断机械硬盘中与所述操作参数中的操作块标识、起始页标识和操作页个数对应的各个页标识中所对应的读操作标识是否存在读失败标识,如果是,则执行S409,如果否,则执行S410。
    S409:结束流程,并且结束流程时还可以返回读失败提示。
    S410:读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据,并且读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的OOB信息。结束流程。
    其中,在读操作和写操作中的与所述操作参数中的操作块标识、起始页标识和操作页个数对应的各个页标识,当操作参数中的plane类型标识为单层标识时,指的是与所述操作块标识对应的、页标识为[pageid, pageid+pagenum-1]区间的各个页标识。当操作参数中的plane类型标识为双层标识时,指的是与所述操作块标识对应的页标识为[pageid,pageid+pagenum/2-1]区间的各个页标识,以及与所述操作块标识+1的块标识对应的标识为[pageid,pageid+pagenum/2-1]区间的各个页标识。其中,pageid为所述起始页标识,pagenum为所述操作页个数。并且,在读操作和写操作中所指的所述操作参数中的操作块标识、起始页标识和操作页个数与其所对应的OOB信息的对应关系,与本段所述的所述操作参数中的操作块标识、起始页标识和操作页个数与其所对应的页标识的对应关系相同,因此不再赘述。
    优选地,在上述写数据或读数据的过程可以采用cache的方式。
    S411:此时操作类型为擦除操作,判断plane类型标识为单层标识或双层标识,如果为单层标识,则执行S412,如果为双层标识,则执行S416。
    S412:此时plane类型标识为单层标识,判断机械硬盘中与操作指令中的操作块标识对应的擦除操作标识是否为擦除失败标识,如果是,则执行S413,如果否,则执行S414。
    S413:结束流程,并且结束流程时还可以返回擦除失败提示。
    S414:将机械硬盘中、所述操作块标识对应的所有页标识所对应的数据存储为初始数据0xff,并且将机械硬盘中存储的、与所述操作指令中的操作块标识对应的擦除次数加一。
    S415:判断所述操作指令中的操作块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中该块标识对应的状态标识存储为坏块标识BLK_BADFLAG。也就是说,当擦除次数达到100次的块标识对应的状态标识为BLK_BADFLAG,不能再对该块标识对应的数据执行读、写或者擦除操作。结束流程。
    S416:此时plane类型标识为双层标识,判断机械硬盘中与操作指令中的操作块标识blkid和操作块标识blkid加一的块标识对应的擦除操作标识中是否存在擦除失败标识,如果是,则执行S413,如果否,则执行S417。
    S417:将机械硬盘中、所述操作块标识,和所述操作块标识加一的块标识对应的所有页标识所对应的数据存储为初始数据0xff并且将机械硬盘中存 储的、与所述操作指令中的操作块标识对应的擦除次数加一,以及将操作块标识加一的块标识对应的擦除次数加一。
    S418:判断所述操作指令中的操作块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中该块标识对应的状态标识存储为坏块标识BLK_BADFLAG,以及判断所述操作指令中的操作块标识加一的块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中操作块标识加一的块标识对应的状态标识存储为坏块标识BLK_BADFLAG。
    可以看出,在本实施例中,在机械硬盘中为每个页标识都存储了对应的读操作标识、写操作标识、以及为每个块标识都存储了擦除操作标识,而在其他实施例中,可以只存储读操作标识、写操作标识和擦除操作标识中的一个或任意个组合,还可以只为每个页标识设置一个操作标识,该操作标识可以具体为读失败标识READPAGE_FAIL、写失败标识WRITEPAGE_FAIL、擦除失败标识ERASEPAGE_FAIL,以及操作成功标识RWEPAGE_SUCCESS。当操作类型为写操作或读操作时,步骤S404中判断读操作标识或写操作标识的过程替换为判断操作标识的过程。当操作类型为擦除操作时,步骤S404中判断操作标识的过程替换为判断操作块标识对应的某一个或某几个页标识的操作标识的过程。例如,判断操作块标识为blkid0的块标识是否为擦除失败时,只需判断操作块标识为blkid0的块标识对应的第0个页的页标识pageid0的操作标识是否为擦除失败。
    综上,本实施例中通过在机械硬盘中存储读操作标识、写操作标识和擦除操作标识,实现测试NFTL处理各种失败(读失败、写失败和擦失败)的容错处理能力。
    本实施例中,所述系统中还可以安装调试工具,例如VC等,以实现方便的跟踪和调试测试中发现的BUG。
    在目前的现有技术中,对NFTL的测试是通过直接在NAND闪存上进行的,当执行写操作时,也只是将数据写到操作参数指定的页上,并不能对NFTL的操作指令是否符合NAND闪存的写操作顺序的特性要求进行测试。而在本发明提供的下一个实施例中,就能够解决上述问题。在这里需要说明的是,在下面的一个实施例中,不妨设所述测试NFTL的系统为一PC机,同时NFTL的目 标NAND闪存的型号决定该NAND闪存具有4个块、每个块具有6个页,每个页的大小是4个字节。
    请参阅图6,本发明还提供了一测试NFTL的方法的另一具体实施例,在该实施例中,所述方法用于一PC机中,所述PC机包括控制单元(具体可以为CPU)和机械硬盘。控制单元根据测试NFTL的目标NAND闪存的型号设置块的个数为4,各个块标识分别为blkid0、blkid1、blkid2和blkid3,每个块标识对应6个页标识,每个块标识对应的页标识分别为pageid0、pageid1、pageid2、pageid3、pageid4、和pageid5。块的最大擦除次数为100。
    在机械硬盘中存储各个块标识对应的状态标识为初始标识BLK_ERASEFLAG、存储各个块的块标识对应的擦除次数为初始值0x00,存储各个页标识对应的初始数据为0xff、存储各个块标识对应的最大使用页为初始页数0xffff。
    所述方法包括:
    S601:控制单元监测是否接收到NFTL的操作指令,其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识。
    操作类型包括读操作、写操作、和擦除操作。当操作类型为读操作时,操作参数至少具有操作块标识、起始页标识、操作页个数、和层(plane)类型标识;操作类型是写操作时,操作参数至少具有操作块标识、起始页标识、操作页个数、写入数据、层类型标识、和OOB信息;操作类型为擦除操作时,操作参数至少具有操作块标识、和层类型标识。
    如果该步骤中的控制单元接收到NFTL的操作指令后,则执行S602。这里,如果未接到NFTL的操作指令,则可以持续执行、也可以是以一定时间为周期循环执行S601,均不影响本发明的实施。
    S602:判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识BLK_BADFLAG,如果是,则执行S603,此时操作块标识对应的状态标识为坏块标识BLK_BADFLAG;如果否,则执行S604,此时操作块标识对应的状态标识不为坏块标识BLK_BADFLAG。
    S603:返回操作坏块提示并结束流程。此时由于NFTL发送的操作指令中操作块标识对应的是坏块,因此结束整个流程。
    S604:判断操作指令中的操作类型为写操作、读操作或者擦除操作。如果为写操作,执行S605,如果为读操作,执行S611,如果为擦除操作,执行S612。
    S605:此时操作类型为写操作,判断所述操作块标识对应的最大使用页是否为初始页数,如果为初始页数,则执行S606,如果不为初始页数,则执行S608。
    S606:判断所述起始页标识是否为第0页,如果不为第0页,则执行S607;如果为第0页,则执行S610。
    S607:返回写操作不为第0页的错误提示,并且结束流程。
    S608:判断所述起始页标识是否为最大使用页加一的和,如果否,则执行S609,如果是,则执行S610。
    S609:返回写顺序错误提示并结束流程。
    S610:在机械硬盘中将与操作块标识、起始页标识和操作页个数对应的页标识所对应的数据存储为所述写入数据,以及在机械硬盘将与操作指令中的操作块标识对应的最大使用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数,并且根据操作块标识、起始页标识和操作页个数将操作参数中的OOB信息写入机械硬盘中。这里所说的的未写入数据的页标识是指没有在机械硬盘存储写入数据的页标识,而存储初始数据的页标识并不算是写入数据的页标识。结束流程。
    S611:此时操作类型为读操作,读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据,并且读取机械硬盘中与操作块标识、起始页标识和操作页个数对应的OOB信息。
    其中,在读操作和写操作中的与所述操作参数中的操作块标识、起始页标识和操作页个数对应的各个页标识,当操作参数中的plane类型标识为单层标识时,指的是与所述操作块标识对应的、页标识为[pageid,pageid+pagenum-1]区间的各个页标识。当操作参数中的plane类型标识为双层标识时,指的是与所述操作块标识对应的页标识为[pageid,pageid+pagenum/2-1]区间的各个页标识,以及与所述操作块标识+1的块标识对应的标识为[pageid,pageid+pagenum/2-1]区间的各个页标识。其中, pageid为所述起始页标识,pagenum为所述操作页个数。并且,在读操作和写操作中所指的所述操作参数中的操作块标识、起始页标识和操作页个数与其所对应的OOB信息的对应关系,与本段所述的所述操作参数中的操作块标识、起始页标识和操作页个数与其所对应的页标识的对应关系相同,因此不再赘述。
    优选地,在上述写数据或读数据的过程可以采用cache的方式。
    S612:此时操作类型为擦除操作,判断plane类型为单层标识或双层标识,如果为单层标识,则执行S613,如果为双层标识,则执行S615。
    S613:此时plane类型标识为单层标识,将机械硬盘中、所述操作块标识对应的所有页标识所对应的数据存储为初始数据0xff,并且将机械硬盘中存储的、与所述操作指令中的操作块标识对应的擦除次数加一。
    S614:判断所述操作指令中的操作块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中该块标识对应的状态标识存储为坏块标识BLK_BADFLAG。也就是说,当擦除次数达到100次的块标识对应的状态标识为BLK_BADFLAG,因此不能对该块标识对应的数据执行读、写或者擦除操作。结束流程。
    S615:此时plane类型标识为双层标识,将机械硬盘中、与所述操作块标识,和所述操作块标识加一的块标识对应的所有页标识所对应的数据存储为初始数据0xff并且将机械硬盘中存储的、与所述操作指令中的操作块标识对应的擦除次数加一、以及将操作块标识加一的块标识对应的擦除次数加一。
    S616:判断所述操作指令中的操作块标识和对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中该块标识对应的状态标识存储为坏块标识BLK_BADFLAG,以及判断所述操作指令中的操作块标识加一的块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中操作块标识加一的块标识对应的状态标识存储为坏块标识BLK_BADFLAG。
    在本实施例的步骤S605中,当操作类型为写操作时,判断所述操作块标识对应的最大使用页是否为初始页数这一步骤可以用判断所述操作块标识对应的状态标识是否为初始标识BLK_ERASEFLAG代替。并且当所述操作块标识对应的状态标识为初始标识BLK_ERASEFLAG时,则相当于所述操作块标识对 应的最大使用页为初始页数。此时,则在机械硬盘中将与操作块标识、起始页标识和操作页个数对应的页标识所对应的数据存储为所述写入数据时还包括:在机械硬盘中将与操作块标识对应的状态标识存储为已写状态BLK_DIRTYFLAG,并且在该步骤S612中,当操作类型为擦除操作时,当plane类型标识为单层标识时,则在机械硬盘中将操作块标识对应的状态标识存储为初始状态BLK_ERASEFLAG,当plane类型标识为双层标识时,则将机械硬盘中、所述操作块标识,和所述操作块标识加一的块标识对应的状态标识均存储为初始状态BLK_ERASEFLAG。
    在本实施例中的步骤S605中,当操作类型为写操作并且操作块标识对应的最大使用页不为初始页数时,判断起始页标识是否为最大使用页加一的和。实际上,当起始页标识不为最大使用页加一的和时,说明NFTL的操作指令可能发生了逆序写、跳写和覆盖写错误。参照图7,图7中从上到下依次描述了顺序连续性、逆序写、覆盖写和跳写的块示意图。其中每一个方格为一个page,每十个page为一个block,图7中示出了block0、block1和block2,有斜线的page为已写有数据的page,有横线的page为本次写入数据的page。逆序写是指将数据写入该块中已经写有数据的最大页之前的页中,覆盖写是指将数据写入该块中已经写有数据的最大页中,而跳写指的是将数据写入该块中已经写有数据的最大页加一的页之后的页中。
    为了能够进一步判断NFTL的操作指令是否符合NAND闪存的顺序写、跳写和覆盖写的特性要求,在本实施例的步骤S605中,当操作类型为写操作时,判断所述起始页标识是否为最大使用页加一的和可以具体为判断所述起始页标识是否小于最大使用页,如果是,则返回逆序写错误并结束流程、判断所述起始页标识是否等于最大使用页,如果是,则返回覆盖写错误并结束流程、以及判断所述起始页标识是否大于最大使用页加一的和,如果是,则返回跳写错误并结束流程。
    可以看出,本实施例中,当执行写操作时,能够对NFTL的操作指令是否符合NAND闪存的写操作顺序的特性要求进行测试。
    下面提供一个本发明优选的一个具体实施例。
    请参阅图8A和图8B,本发明还提供了一测试NFTL的方法的另一具体实 施例,在该实施例中,所述方法用于一PC机中,所述PC机包括控制单元(具体可以为CPU)和机械硬盘。控制单元根据测试NFTL的目标NAND闪存的型号设置块的片选个数为2,各个片选标识分别为chipid0和chipid1,各个片选的块的个数为4,各个块标识分别为blkid0、blkid1、blkid2和blkid3,每个块标识对应6个页标识,每个块标识对应的页标识分别为pageid0、pageid1、pageid2、pageid3、pageid4、和pageid5。块的最大擦除次数为100。
    在PC机的机械硬盘上为每个片选生成3个文件,分别命名为vnand.data,vnand.blkstatus和vnand.spare。vnand.data存储的是单个片选上所有块上每个页的数据,vnand.blkstatus记录的是单个片选上所有块的状态标识、擦除次数和最大使用页,vnand.spare记录的是单个片选上所有块上每个页的OOB信息。也就是说,在本实施例中,通过文件实现模拟真实的NAND闪存的方式,因此不需要用真实的NAND闪存来测试NFTL。
    在vnand.blkstatus中存储各个块标识对应的状态标识为初始标识BLK_ERASEFLAG、存储各个块的块标识对应的擦除次数为初始值0x00、以及存储各个块标识对应的最大使用页为初始页数0xffff。在vnand.data中存储各个页标识对应的初始数据为0xff。在本实施例中,存储初始标识、初始值时,按照第0个块到最后一个块的顺序,即块标识blkid0到blkid5的顺序进行存储。存储初始数据时,按照第0个块到最后一个块的顺序,每个块中按照第0个页到最后一页的顺序,即页标识pageid0到pageid5的顺序进行存储。在其他实施例中,存储的顺序不加限定。
    控制单元还根据NFTL的目标NAND闪存的型号设置各个页的页标识对应的操作标识为读失败标识READPAGE_FAIL、写失败标识WRITEPAGE_FAIL、擦除失败标识ERASEPAGE_FAIL,以及操作成功标识RWEPAGE_SUCCESS。各个块的擦除操作状态由该块的第0个页对应的操作标识决定。
    此外需要说明的是,本实施例中提供的方法共有27个步骤,其中S801-S804,以及S816-S827在图8A中,S805-S815在图8B中,图8A中S804的判断结果为写操作时,则执行图8B中的S805。
    所述方法包括:
    S801:控制单元监测是否接收到NFTL的操作指令,其中,所述操作指令 中具有操作类型和操作参数,所述操作参数中至少具有操作片选标识和操作块标识。
    操作类型包括读操作、写操作、和擦除操作。当操作类型为读操作时,操作参数至少具有操作片选标识、操作块标识、起始页标识、操作页个数、和层(plane)类型标识;操作类型是写操作时,操作参数至少具有操作片选标识、操作块标识、起始页标识、操作页个数、写入数据、层类型标识、和OOB信息;操作类型为擦除操作时,操作参数至少具有操作片选标识、操作块标识、和层类型标识。
    如果该步骤中的控制单元接收到NFTL的操作指令后,则执行S802。这里,如果未接到NFTL的操作指令,则可以持续执行、也可以是以一定时间为周期循环执行S801,均不影响本发明的实施。
    S802:判断所述操作指令中的操作片选标识对应的操作块标识所对应的状态标识是否为坏块标识BLK_BADFLAG,如果是,则执行S803,此时操作块标识对应的状态标识为坏块标识BLK_BADFLAG;如果否,则执行S804,此时操作块标识对应的状态标识不为坏块标识BLK_BADFLAG。
    S803:返回操作坏块提示并结束流程。此时由于NFTL发送的操作指令中操作块标识对应的是坏块,因此结束整个流程。
    S804:判断操作指令中的操作类型为写操作、读操作或者擦除操作,如果为写操作,则执行S805,如果为读操作,则执行S817,如果为擦除操作,则执行S820。
    S805:此时操作类型为写操作,判断机械硬盘中与所述操作参数中的操作块标识、起始页标识和操作页个数对应的各个页标识中所对应的操作标识是否存在写失败标识WRITEPAGE_FAIL,如果是,则执行S806,此时待写的页标识中存在写失败标识,如果否,则执行S807,此时待写的页标识均为操作成功标识。
    S806:结束流程,并且结束流程时还可以返回写失败提示。
    S807:判断所述操作块标识对应的最大使用页是否为初始页数,如果为初始页数,则执行S808,如果不为初始页数,则执行S810。
    S808:判断所述起始页标识是否为第0页,如果不为第0页,则执行S809, 如果为第0页,则执行S816。
    S809:返回写操作不为第0页的错误提示,并且结束流程,
    S810:判断所述起始页标识是否小于最大使用页,如果是,则执行S811,如果否,则执行S812。
    S811:返回逆序写错误提示并结束流程。
    S812:判断所述起始页标识是否等于最大使用页,如果是,则执行S813如果否,则执行S814。
    S813:则返回覆盖写错误提示并结束流程。
    S814:判断所述起始页标识是否大于最大使用页加一的和,如果是,则执行S815,如果否,则执行S816。
    S815:返回跳写错误提示并结束流程。
    S816:在机械硬盘中将与操作片选标识、操作块标识、起始页标识和操作页个数对应的页标识所对应的数据存储为所述写入数据,以及在机械硬盘将与操作指令中的操作片选标识对应的操作块标识所对应的最大使用页存储为与所述操作片选标识对应的操作块标识所对应的所有的页标识中未写入数据的页标识的个数,并且根据操作片选标识、操作块标识、起始页标识和操作页个数将操作参数中的OOB信息写入文件vnand.spare中。结束流程。
    S817:此时操作类型为读操作,判断机械硬盘中与所述操作参数中的操作片选标识、操作块标识、起始页标识和操作页个数对应的各个页标识中所对应的操作标识是否存在读失败标识,如果是,则执行S818,如果否,则执行S819。
    S818:结束流程,并且结束流程时还可以返回读失败提示。
    S819:读取机械硬盘中与操作片选标识、操作块标识、起始页标识和操作页个数对应的各个页标识所对应的数据,并且则读取文件vnand.spare中与操作片选标识、操作块标识、起始页标识和操作页个数对应的OOB信息。结束流程。
    其中,在读操作和写操作中的与所述操作参数中的操作片选标识、操作块标识、起始页标识和操作页个数对应的各个页标识,当操作参数中的plane 类型标识为单层标识时,指的是与所述操作片选标识对应的操作块标识所对应的、页标识为[pageid,pageid+pagenum-1]区间的各个页标识。当操作参数中的plane类型标识为双层标识时,指的是与所述操作片选标识对应的操作块标识对应的页标识为[pageid,pageid+pagenum/2-1]区间的各个页标识,以及与所述操作片选标识对应的操作块标识+1的块标识对应的页标识为[pageid,pageid+pagenum/2-1]区间的各个页标识。其中,pageid为所述起始页标识,pagenum为所述操作页个数。并且,在读操作和写操作中所指的所述操作参数中的操作片选标识、操作块标识、起始页标识和操作页个数与其所对应的OOB信息的对应关系,与本段所述的所述操作参数中的操作片选标识、操作块标识、起始页标识和操作页个数与其所对应的页标识的对应关系相同,因此不再赘述。
    优选地,在上述写数据或读数据的过程可以采用cache的方式。
    S820:此时操作类型为擦除操作,判断plane类型为单层标识或双层标识,如果为单层标识,则执行S821,如果为双层标识,则执行S825。
    S821:此时plane类型标识为单层标识,判断机械硬盘中与操作指令中的操作片选标识对应的操作块标识对应的pageid0的页标识对应的操作标识是否为擦除失败标识ERASEPAGE_FAIL,如果是,则执行S822,如果否,则执行S823。
    S822:结束流程,并且结束流程时还可以返回擦除失败提示。
    S823:将机械硬盘中、所述操作片选标识对应的所述操作块标识对应的所有页标识所对应的数据存储为初始数据0xff,并且将机械硬盘中存储的、与所述操作指令中的操作块标识对应的擦除次数加一,判断所述操作指令中的操作片选标识对应的操作块标识对应的擦除次数是否达到最大擦除次数,如果达到,执行S824。
    S824:将机械硬盘中操作片选标识对应的块标识对应的状态标识存储为坏块标识BLK_BADFLAG。
    S825:此时plane类型标识为双层标识,判断机械硬盘中与操作指令中的操作片选标识对应的操作块标识对应的pageid0的页标识对应的操作标识和操作片选标识对应的操作块标识+1对应的pageid为0的页标识对应的操作 标识是否存在擦除失败标识ERASEPAGE_FAIL,如果是,则执行S822,如果否,则执行S826。
    S826:将机械硬盘中所述操作片选标识对应的、操作块标识,和所述操作块标识加一的块标识对应的所有页标识所对应的数据存储为初始数据0xff并且将机械硬盘中存储的、与所述操作指令中的操作块标识对应的擦除次数加一,以及将操作块标识加一的块标识对应的擦除次数加一。
    S827:判断所述操作指令中的操作块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中操作片选标识对应的块标识对应的状态标识存储为坏块标识BLK_BADFLAG,以及判断所述操作指令中的操作块标识加一的块标识对应的擦除次数是否达到最大擦除次数,如果达到,则将机械硬盘中操作片选标识对应的操作块标识加一的块标识对应的状态标识存储为坏块标识BLK_BADFLAG。
    请参阅图9,本发明还提供了测试NFTL的系统的具体实施例,所述系统包括控制单元901和机械硬盘902。
    所述系统中还可以安装调试工具,例如VC等,以实现方便的跟踪调试测试中发现的软件缺陷,这样可以方便的跟踪调试测试中发现的软件缺陷。控制单元可以为ARM、MCU、FPGA等具有控制功能的模块。
    所述控制单元用于根据测试NFTL的目标NAND闪存的型号设置块的个数、各个块的块标识以及块的最大擦除次数,并且在机械硬盘中存储各个块的块标识对应的状态标识为初始标识、存储各个块的块标识对应的擦除次数为初始次数,以及监测是否接收到NFTL的操作指令;其中,所述操作指令中具有操作类型和操作参数,所述操作参数中至少具有操作块标识。
    如果所述控制单元接收到NFTL的操作指令,所述控制单元判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识,如果是,则返回操作坏块提示并停止工作;如果否,则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作,并且判断所述操作指令中的操作类型是否为擦除指令,如果为擦除指令,则将机械硬盘中与所述操作指令中的操作块标识对应的擦除次数加一。
    其中,所述控制单元还用于当机械硬盘存储的任一块标识对应的擦除次数达到最大擦除次数时,将机械硬盘中该块标识对应的状态标识存储为坏块标识。
    优选地,所述控制单元还用于根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识、以及各个页的页标识对应的读操作标识为读失败标识或读成功标识,并且在机械硬盘中存储各个页的页标识对应的读操作标识;其中,所述操作参数还包括起始页标识和操作页个数。
    所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前,判断所述操作指令中的操作类型是否为读操作,如果为读操作,则判断机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的读操作标识中是否存在读失败标识,如果是,则停止工作。
    优选地,所述控制单元还用于根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识、以及各个页的页标识对应的写操作标识为写失败标识或写成功标识,并且在机械硬盘中存储各个页的页标识对应的写操作标识;其中,所述操作参数还包括起始页标识和操作页个数。
    所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前,判断所述操作指令中的操作类型是否为写操作,如果为写操作,则判断机械硬盘中与操作块标识、起始页标识和操作页个数对应的各个页标识所对应的写操作标识中是否存在写失败标识,如果是,则停止工作。
    优选地,所述控制单元还用于根据NFTL的目标NAND闪存的型号设置各个块的块标识对应的擦除操作标识为擦除失败标识或擦除成功标识,并且在机械硬盘中存储各个块的块标识对应的擦除操作标识。
    所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前,判断所述操作指令中的操作类型是否为擦除操作,如果为擦除操作,则判断机械硬盘中与操作指令中的操作块标识对应的擦除操作标识是否为擦除失败标识,如果是,则停止工作。
    优选地,所述控制单元还用于根据NFTL的目标NAND闪存的型号设置各个块标识对应的页标识,并且在机械硬盘中存储各个块标识对应的最大使用页为初始页数;其中,所述操作参数还包括起始页标识和操作页个数。
    所述控制单元还用于,在接收到NFTL的操作指令后,判断所述操作指令中的操作类型是否为写操作。
    如果是写操作,则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之前,判断所述操作块标识对应的最大使用页是否为初始页数,如果为初始页数,则判断所述起始页标识是否为第0页,如果不为第0页,则返回写操作不为第0页的错误提示,并且停止工作;如果不为初始页数,则判断所述起始页标识是否为最大使用页加一的和,如果否,则返回写顺序错误提示并停止工作;
    如果是写操作,则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作时,在机械硬盘将操作指令中的操作块标识对应的最大使用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。
    优选地,所述控制单元用于判断所述起始页标识是否为最大使用页加一的和包括:
    所述控制单元用于判断所述起始页标识是否小于最大使用页,如果是,则返回逆序写错误并停止工作、判断所述起始页标识是否等于最大使用页,如果是,则返回覆盖写错误并停止工作、以及判断所述起始页标识是否大于最大使用页加一的和,如果是,则返回跳写错误并停止工作。
    对于本发明提供的系统实施例而言,与方法实施例相同,所以描述得比较简单,相关之处参见方法实施例的相关说明即可。
    以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

    关 键  词:
    一种 测试 NFTL 方法 系统
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种测试NFTL的方法及系统.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4677236.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1