《一种测试NFTL的方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种测试NFTL的方法及系统.pdf(32页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104021816 A (43)申请公布日 2014.09.03 CN 104021816 A (21)申请号 201310067136.X (22)申请日 2013.03.01 G11C 29/08(2006.01) (71)申请人 安凯 (广州) 微电子技术有限公司 地址 510663 广东省广州市萝岗区广州科学 城科学大道 182 号创新大厦 C1 区 3 楼 (72)发明人 渠长红 胡胜发 (74)专利代理机构 北京集佳知识产权代理有限 公司 11227 代理人 王宝筠 (54) 发明名称 一种测试 NFTL 的方法及系统 (57) 摘要 本发明提供了一种测试。
2、 NFTL 的方法和系统, 所述方法包括 : 控制单元监测是否接收到 NFTL 的 操作指令 ; 如果接收到 NFTL 的操作指令, 判断所 述操作指令中的操作块标识对应的状态标识是 否为坏块标识, 如果是, 则返回操作坏块提示并 结束流程 ; 如果否, 则根据所述操作指令中的操 作类型和操作参数对机械硬盘执行相应的操作, 并且判断所述操作指令中的操作类型是否为擦除 指令, 如果为擦除指令, 则将机械硬盘中与所述 操作指令中的操作块标识对应的擦除次数加一。 由于机械硬盘没有最大擦除次数的限制, 因此本 发明不会由于擦除次数多而损坏机械硬盘, 即使 在 NFTL 的测试量很大时, 也能够避免损坏。
3、机械硬 盘, 从而减少资源浪费。 (51)Int.Cl. 权利要求书 3 页 说明书 19 页 附图 9 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书19页 附图9页 (10)申请公布号 CN 104021816 A CN 104021816 A 1/3 页 2 1. 一种测试 NFTL 的方法, 其特征在于, 所述方法用于测试 NFTL 的系统中, 所述系统包 括控制单元和机械硬盘, 所述控制单元根据测试 NFTL 的目标 NAND 闪存的型号设置块的个 数、 各个块的块标识以及块的最大擦除次数, 并且在机械硬盘中存储各个块的块标识对应 的状态标识为。
4、初始标识、 存储各个块的块标识对应的擦除次数为初始次数 ; 所述方法包括 : 控制单元监测是否接收到 NFTL 的操作指令, 其中, 所述操作指令中具有操作类型和操 作参数, 所述操作参数中至少具有操作块标识 ; 如果接收到 NFTL 的操作指令, 判断所述操作指令中的操作块标识对应的状态标识是 否为坏块标识, 如果是, 则返回操作坏块提示并结束流程 ; 如果否, 则根据所述操作指令中 的操作类型和操作参数对机械硬盘执行相应的操作, 并且判断所述操作指令中的操作类型 是否为擦除指令, 如果为擦除指令, 则将机械硬盘中与所述操作指令中的操作块标识对应 的擦除次数加一 ; 其中, 当机械硬盘存储的。
5、任一块标识对应的擦除次数达到最大擦除次数时, 将机械硬 盘中该块标识对应的状态标识存储为坏块标识。 2.根据权利要求1所述的方法, 其特征在于, 所述控制单元根据NFTL的目标NAND闪存 的型号设置各个块标识对应的页标识、 以及各个页的页标识对应的读操作标识为读失败标 识或读成功标识, 并且在机械硬盘中存储各个页的页标识对应的读操作标识 ; 所述操作参 数还包括起始页标识和操作页个数 ; 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之 前还包括 : 判断所述操作指令中的操作类型是否为读操作, 如果为读操作, 则判断机械硬盘中与 操作块标识、 起始页标识和操作页个数对。
6、应的各个页标识所对应的读操作标识中是否存在 读失败标识, 如果是, 则结束流程。 3.根据权利要求1所述的方法, 其特征在于, 所述控制单元根据NFTL的目标NAND闪存 的型号设置各个块标识对应的页标识、 以及各个页的页标识对应的写操作标识为写失败标 识或写成功标识, 并且在机械硬盘中存储各个页的页标识对应的写操作标识 ; 所述操作参 数还包括起始页标识和操作页个数 ; 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之 前还包括 : 判断所述操作指令中的操作类型是否为写操作, 如果为写操作, 则判断机械硬盘中与 操作块标识、 起始页标识和操作页个数对应的各个页标识所对。
7、应的写操作标识中是否存在 写失败标识, 如果是, 则结束流程。 4.根据权利要求1所述的方法, 其特征在于, 所述控制单元根据NFTL的目标NAND闪存 的型号设置各个块的块标识对应的擦除操作标识为擦除失败标识或擦除成功标识, 并且在 机械硬盘中存储各个块的块标识对应的擦除操作标识 ; 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作之 前还包括 : 判断所述操作指令中的操作类型是否为擦除操作, 如果为擦除操作, 则判断机械硬盘 中与操作指令中的操作块标识对应的擦除操作标识是否为擦除失败标识, 如果是, 则结束 权 利 要 求 书 CN 104021816 A 2 2/3。
8、 页 3 流程。 5.根据权利要求1所述的方法, 其特征在于, 所述控制单元根据NFTL的目标NAND闪存 的型号设置各个块标识对应的页标识, 并且在机械硬盘中存储各个块标识对应的最大使用 页为初始页数 ; 所述操作参数还包括起始页标识和操作页个数 ; 在接收到 NFTL 的操作指令后还包括 : 判断所述操作指令中的操作类型是否为写操作, 如果是写操作, 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行 相应的操作之前还包括 : 判断所述操作块标识对应的最大使用页是否为初始页数, 如果为 初始页数, 则判断所述起始页标识是否为第 0 页, 如果不为第 0 页, 则返回写操作不为第 。
9、0 页的错误提示, 并且结束流程 ; 如果不为初始页数, 则判断所述起始页标识是否为最大使用 页加一的和, 如果否, 则返回写顺序错误提示并结束流程 ; 如果是写操作, 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行 相应的操作时, 还包括在机械硬盘将操作指令中的操作块标识对应的最大使用页存储为与 所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。 6. 根据权利要求 1 至 5 任意一项所述的方法, 其特征在于, 所述操作参数还包括层类 型标识, 所述判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识之前还包 括 : 判断所述层类型标识是否为双层标识, 如果是。
10、, 则判断所述操作指令中的操作块标识对 应的状态标识是否为坏块标识时还包括 : 判断所述操作块标识加一的块标识对应的状态标 识是否为坏块标识, 如果是, 则返回操作坏块提示并结束流程。 7.根据权利要求1至5任意一项所述的方法, 其特征在于, 设置各个块标识对应的页标 识, 并且在机械硬盘中存储各个页标识对应的数据为初始数据 ; 则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包括 : 当所述操作指令中的操作类型为写操作时, 在机械硬盘中将与操作块标识、 起始页标 识和操作页个数对应的各个页标识所对应的数据存储为写入数据, 其中, 所述操作参数还 包括写入数据、 起始页标识和操。
11、作页个数 ; 当所述操作指令中的操作类型为读操作时, 读取机械硬盘中与操作块标识、 起始页标 识和操作页个数对应的各个页标识所对应的数据, 其中, 所述操作参数还包括起始页标识 和操作页个数 ; 当所述操作指令中的操作类型是擦除操作时, 将操作块标识对应的所有页标识在机械 硬盘中所对应的数据存储为初始数据。 8. 根据权利要求 7 所述的方法, 其特征在于, 所述操作参数还包括层标识 ; 当所述操作指令中的操作类型为写操作或读操作时, 若所述操作指令中的层标识为 单层标识, 则所述与操作块标识、 起始页标识和操作页个数对应的各个页标识具体为 : 与 所述操作块标识对应的页标识为 pageid,。
12、 pageid+pagenum-1 区间的各个页标识 ; 若所 述操作指令中的层标识为双层标识, 则所述与操作块标识、 起始页标识和操作页个数对应 的各个页标识具体为 : 与所述操作块标识对应的页标识为 pageid, pageid+pagenum/2-1 区间的各个页标识, 以及与所述操作块标识 +1 的块标识对应的标识为 pageid, pageid+pagenum/2-1 区间的各个页标识 ; 其中, pageid 为起始页标识, pagenum 为操作页 个数 ; 当所述操作指令中的操作类型为擦除操作时, 若所述操作指令中的层标识为双层标 权 利 要 求 书 CN 104021816 。
13、A 3 3/3 页 4 识, 则将操作块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据时还包 括 : 将操作块标识 +1 的块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始 数据。 9. 一种测试 NFTL 的系统, 其特征在于, 所述系统包括控制单元和机械硬盘 ; 所述控制单元根据测试 NFTL 的目标 NAND 闪存的型号设置块的个数、 各个块的块标识 以及块的最大擦除次数, 并且在机械硬盘中存储各个块的块标识对应的状态标识为初始标 识、 存储各个块的块标识对应的擦除次数为初始次数, 以及监测是否接收到 NFTL 的操作指 令 ; 其中, 所述操作指令中具有操作类型和操。
14、作参数, 所述操作参数中至少具有操作块标 识 ; 如果所述控制单元接收到 NFTL 的操作指令, 所述控制单元判断所述操作指令中的操 作块标识对应的状态标识是否为坏块标识, 如果是, 则返回操作坏块提示并停止工作 ; 如果 否, 则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作, 并且判断 所述操作指令中的操作类型是否为擦除指令, 如果为擦除指令, 则将机械硬盘中与所述操 作指令中的操作块标识对应的擦除次数加一 ; 其中, 所述控制单元还用于当机械硬盘存储的任一块标识对应的擦除次数达到最大擦 除次数时, 将机械硬盘中该块标识对应的状态标识存储为坏块标识。 10. 根据权利要求 。
15、9 所述的系统, 其特征在于, 所述控制单元还用于根据 NFTL 的目标 NAND 闪存的型号设置各个块标识对应的页标识, 并且在机械硬盘中存储各个块标识对应的 最大使用页为初始页数 ; 其中, 所述操作参数还包括起始页标识和操作页个数 ; 所述控制单元还用于, 在接收到 NFTL 的操作指令后, 判断所述操作指令中的操作类型 是否为写操作 ; 如果是写操作, 则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作 参数对机械硬盘执行相应的操作之前, 判断所述操作块标识对应的最大使用页是否为初始 页数, 如果为初始页数, 则判断所述起始页标识是否为第0页, 如果不为第0页, 则返回写操 。
16、作不为第 0 页的错误提示, 并且停止工作 ; 如果不为初始页数, 则判断所述起始页标识是否 为最大使用页加一的和, 如果否, 则返回写顺序错误提示并停止工作 ; 如果是写操作, 则所述控制单元还用于在所述根据所述操作指令中的操作类型和操作 参数对机械硬盘执行相应的操作时, 在机械硬盘将操作指令中的操作块标识对应的最大使 用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。 权 利 要 求 书 CN 104021816 A 4 1/19 页 5 一种测试 NFTL 的方法及系统 技术领域 0001 本发明涉及嵌入式系统领域, 尤其是涉及一种测试 NFTL 的方法及系统。 背。
17、景技术 0002 存储设备作为程序和数据的主要载体, 是目前嵌入式系统中不可或缺的硬件模 块。其中, NAND 闪存凭借其体积小、 容量大、 成本低以及掉电数据不丢失等一系列优点, 成 为常用的存储设备之一。 0003 NAND 闪存中包括多个 chip( 片选 ), 各个 chip 具有多个 block( 块 ), 各个 block 包括相同个数的 page( 页 ), 并且 NAND 闪存根据其型号的不同具有特定的 chip 个数、 各个 chip 包括的 block 个数、 各个 block 包括的 page 个数, 以及各个 page 的大小。对 NAND 闪 存的操作主要包括读、 写。
18、以及擦除操作。 0004 目前, 由于NAND闪存的物理结构, 导致其具有一些特性要求, 例如, 对NAND闪存执 行读或者写操作时, 都是以page为单位进行, 而执行擦除操作时以block为单位进行 ; 数据 不能被直接覆盖, 必须在空的或者已擦除的 block 内执行写操作 ; NAND 闪存的 block 具有 擦除的次数限制, 当一个 block 的擦除次数大于最大擦除次数时, 则该 block 成为坏块, 不 能继续使用。由于 NAND 闪存的诸多特性, 目前通常通过一层中间层, 即 NAND Flash Trans lation Layer(NAND 闪存转换层, 缩写为 NFT。
19、L), 对 NAND 闪存进行各种操作, 以实现在嵌入 式系统中更好的对 NAND 闪存进行管理。而 NFTL 在投入市场使用之前, 通常要经过一系列 的测试, 以保证 NFTL 对 NAND 闪存的操作逻辑符合 NAND 闪存的特性要求。 0005 目前, 在现有技术中, 对NFTL的测试主要是通过向NFTL输入不同的数据和操作指 令, 经过NFTL的处理后向NAND闪存执行相应的操作, 根据操作的结果和测试输入的数据来 测试 NFTL 的操作逻辑。例如, 通过 NFTL 向 NAND 闪存存入数据, 之后读取该数据, 判断读取 的数据和存入的数据是否一致 ; 又例如, 在通过 NFTL 向。
20、 NAND 存入数据后擦除该数据, 判断 数据是否成功擦除。可以看出, 由于现有技术中, 通过 NAND 闪存对 NFTL 进行测试, 而 NAND 闪存由于物理结构的特性, 擦除次数达到最大擦除次数的 block 会成为坏块, 不能继续使 用, 从而造成 NAND 闪存损坏, 尤其是 NFTL 的测试量很大时, 会损坏大量的 NAND 闪存而导致 资源浪费。 发明内容 0006 本发明解决的技术问题在于提供一种测试 NFTL 的方法及系统, 即使 NFTL 的测试 量很大时, 也能够避免损坏 NAND 闪存, 从而减少资源的浪费。 0007 为此, 本发明解决技术问题的技术方案是 : 000。
21、8 本发明提供了一种测试NFTL的方法, 所述方法用于测试NFTL的系统中, 所述系统 包括控制单元和机械硬盘, 所述控制单元根据测试 NFTL 的目标 NAND 闪存的型号设置块的 个数、 各个块的块标识以及块的最大擦除次数, 并且在机械硬盘中存储各个块的块标识对 应的状态标识为初始标识、 存储各个块的块标识对应的擦除次数为初始次数 ; 说 明 书 CN 104021816 A 5 2/19 页 6 0009 所述方法包括 : 0010 控制单元监测是否接收到 NFTL 的操作指令, 其中, 所述操作指令中具有操作类型 和操作参数, 所述操作参数中至少具有操作块标识 ; 0011 如果接收到。
22、 NFTL 的操作指令, 判断所述操作指令中的操作块标识对应的状态标 识是否为坏块标识, 如果是, 则返回操作坏块提示并结束流程 ; 如果否, 则根据所述操作指 令中的操作类型和操作参数对机械硬盘执行相应的操作, 并且判断所述操作指令中的操作 类型是否为擦除指令, 如果为擦除指令, 则将机械硬盘中与所述操作指令中的操作块标识 对应的擦除次数加一 ; 0012 其中, 当机械硬盘存储的任一块标识对应的擦除次数达到最大擦除次数时, 将机 械硬盘中该块标识对应的状态标识存储为坏块标识。 0013 优选地, 所述控制单元根据 NFTL 的目标 NAND 闪存的型号设置各个块标识对应的 页标识、 以及各。
23、个页的页标识对应的读操作标识为读失败标识或读成功标识, 并且在机械 硬盘中存储各个页的页标识对应的读操作标识 ; 所述操作参数还包括起始页标识和操作页 个数 ; 0014 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操 作之前还包括 : 0015 判断所述操作指令中的操作类型是否为读操作, 如果为读操作, 则判断机械硬盘 中与操作块标识、 起始页标识和操作页个数对应的各个页标识所对应的读操作标识中是否 存在读失败标识, 如果是, 则结束流程。 0016 优选地, 所述控制单元根据 NFTL 的目标 NAND 闪存的型号设置各个块标识对应的 页标识、 以及各个页的页标识对应。
24、的写操作标识为写失败标识或写成功标识, 并且在机械 硬盘中存储各个页的页标识对应的写操作标识 ; 所述操作参数还包括起始页标识和操作页 个数 ; 0017 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操 作之前还包括 : 0018 判断所述操作指令中的操作类型是否为写操作, 如果为写操作, 则判断机械硬盘 中与操作块标识、 起始页标识和操作页个数对应的各个页标识所对应的写操作标识中是否 存在写失败标识, 如果是, 则结束流程。 0019 优选地, 所述控制单元根据 NFTL 的目标 NAND 闪存的型号设置各个块的块标识对 应的擦除操作标识为擦除失败标识或擦除成功标识, 。
25、并且在机械硬盘中存储各个块的块标 识对应的擦除操作标识 ; 0020 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操 作之前还包括 : 0021 判断所述操作指令中的操作类型是否为擦除操作, 如果为擦除操作, 则判断机械 硬盘中与操作指令中的操作块标识对应的擦除操作标识是否为擦除失败标识, 如果是, 则 结束流程。 0022 优选地, 所述控制单元根据 NFTL 的目标 NAND 闪存的型号设置各个块标识对应的 页标识, 并且在机械硬盘中存储各个块标识对应的最大使用页为初始页数 ; 所述操作参数 还包括起始页标识和操作页个数 ; 说 明 书 CN 104021816 A 。
26、6 3/19 页 7 0023 在接收到 NFTL 的操作指令后还包括 : 判断所述操作指令中的操作类型是否为写 操作, 0024 如果是写操作, 则在所述根据所述操作指令中的操作类型和操作参数对机械硬盘 执行相应的操作之前还包括 : 判断所述操作块标识对应的最大使用页是否为初始页数, 如 果为初始页数, 则判断所述起始页标识是否为第 0 页, 如果不为第 0 页, 则返回写操作不为 第 0 页的错误提示, 并且结束流程 ; 如果不为初始页数, 则判断所述起始页标识是否为最大 使用页加一的和, 如果否, 则返回写顺序错误提示并结束流程 ; 0025 如果是写操作, 则在所述根据所述操作指令中的。
27、操作类型和操作参数对机械硬盘 执行相应的操作时, 还包括在机械硬盘将操作指令中的操作块标识对应的最大使用页存储 为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。 0026 优选地, 所述操作参数还包括层类型标识, 所述判断所述操作指令中的操作块标 识对应的状态标识是否为坏块标识之前还包括 : 判断所述层类型标识是否为双层标识, 如 果是, 则判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识时还包括 : 判 断所述操作块标识加一的块标识对应的状态标识是否为坏块标识, 如果是, 则返回操作坏 块提示并结束流程。 0027 优选地, 设置各个块标识对应的页标识, 并且在机械。
28、硬盘中存储各个页标识对应 的数据为初始数据 ; 0028 则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包 括 : 0029 当所述操作指令中的操作类型为写操作时, 在机械硬盘中将与操作块标识、 起始 页标识和操作页个数对应的各个页标识所对应的数据存储为写入数据, 其中, 所述操作参 数还包括写入数据、 起始页标识和操作页个数 ; 0030 当所述操作指令中的操作类型为读操作时, 读取机械硬盘中与操作块标识、 起始 页标识和操作页个数对应的各个页标识所对应的数据, 其中, 所述操作参数还包括起始页 标识和操作页个数 ; 0031 当所述操作指令中的操作类型是擦除操作时, 将操。
29、作块标识对应的所有页标识在 机械硬盘中所对应的数据存储为初始数据。 0032 优选地, 其特征在于, 所述操作参数还包括层标识 ; 0033 当所述操作指令中的操作类型为写操作或读操作时, 若所述操作指令中的层标识 为单层标识, 则所述与操作块标识、 起始页标识和操作页个数对应的各个页标识具体为 : 与 所述操作块标识对应的页标识为 pageid, pageid+pagenum-1 区间的各个页标识 ; 若所 述操作指令中的层标识为双层标识, 则所述与操作块标识、 起始页标识和操作页个数对应 的各个页标识具体为 : 与所述操作块标识对应的页标识为 pageid, pageid+pagenum/。
30、2-1 区间的各个页标识, 以及与所述操作块标识 +1 的块标识对应的标识为 pageid, pageid+pagenum/2-1 区间的各个页标识 ; 其中, pageid 为起始页标识, pagenum 为操作页 个数 ; 0034 当所述操作指令中的操作类型为擦除操作时, 若所述操作指令中的层标识为双层 标识, 则将操作块标识对应的所有页标识在机械硬盘中所对应的数据存储为初始数据时还 包括 : 将操作块标识 +1 的块标识对应的所有页标识在机械硬盘中所对应的数据存储为初 说 明 书 CN 104021816 A 7 4/19 页 8 始数据。 0035 本发明提供了一种测试 NFTL 的。
31、系统, 所述系统包括控制单元和机械硬盘 ; 0036 所述控制单元根据测试 NFTL 的目标 NAND 闪存的型号设置块的个数、 各个块的块 标识以及块的最大擦除次数, 并且在机械硬盘中存储各个块的块标识对应的状态标识为初 始标识、 存储各个块的块标识对应的擦除次数为初始次数, 以及监测是否接收到 NFTL 的操 作指令 ; 其中, 所述操作指令中具有操作类型和操作参数, 所述操作参数中至少具有操作块 标识 ; 0037 如果所述控制单元接收到 NFTL 的操作指令, 所述控制单元判断所述操作指令中 的操作块标识对应的状态标识是否为坏块标识, 如果是, 则返回操作坏块提示并停止工作 ; 如果否。
32、, 则根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作, 并且 判断所述操作指令中的操作类型是否为擦除指令, 如果为擦除指令, 则将机械硬盘中与所 述操作指令中的操作块标识对应的擦除次数加一 ; 0038 其中, 所述控制单元还用于当机械硬盘存储的任一块标识对应的擦除次数达到最 大擦除次数时, 将机械硬盘中该块标识对应的状态标识存储为坏块标识。 0039 优选地, 所述控制单元还用于根据 NFTL 的目标 NAND 闪存的型号设置各个块标识 对应的页标识, 并且在机械硬盘中存储各个块标识对应的最大使用页为初始页数 ; 其中, 所 述操作参数还包括起始页标识和操作页个数 ; 004。
33、0 所述控制单元还用于, 在接收到 NFTL 的操作指令后, 判断所述操作指令中的操作 类型是否为写操作 ; 0041 如果是写操作, 则所述控制单元还用于在所述根据所述操作指令中的操作类型和 操作参数对机械硬盘执行相应的操作之前, 判断所述操作块标识对应的最大使用页是否为 初始页数, 如果为初始页数, 则判断所述起始页标识是否为第0页, 如果不为第0页, 则返回 写操作不为第 0 页的错误提示, 并且停止工作 ; 如果不为初始页数, 则判断所述起始页标识 是否为最大使用页加一的和, 如果否, 则返回写顺序错误提示并停止工作 ; 0042 如果是写操作, 则所述控制单元还用于在所述根据所述操作。
34、指令中的操作类型和 操作参数对机械硬盘执行相应的操作时, 在机械硬盘将操作指令中的操作块标识对应的最 大使用页存储为与所述操作块标识对应的所有的页标识中未写入数据的页标识的个数。 0043 通过上述技术方案可知, 在机械硬盘中存储块标识对应的状态标识和擦除次数, 当控制单元监测到 NFTL 的操作指令后, 判断操作指令中的操作块标识对应的状态标识是 否为坏块标识, 如果是坏块标识, 则返回操作坏块提示并且结束流程, 此时可知 NFTL 向坏 块执行了操作 ; 如果不为坏块标识, 则根据操作类型和操作参数对机械硬盘执行相应的读、 写以及擦除操作, 并且判断操作指令的操作类型是否为擦除操作, 如果。
35、是, 则将机械硬盘中 与操作块标识对应的擦除次数加一。 当机械硬盘中存储的任一个块标识对应的擦除次数达 到了最大擦除次数时, 将机械硬盘中该块标识对应的状态标识存储为坏块标识。 也就是说, 在本发明的技术方案里, NFTL 无需再对 NAND 闪存执行相应的操作, 只需对控制单元发送操 作指令, 控制单元根据操作指令在机械硬盘中执行相应的操作, 并且通过设置各个块的状 态标识使得擦除次数达到最大擦除次数的块成为坏块。由于机械硬盘与 NAND 闪存的物理 结构完全不同, 而且机械硬盘并没有最大擦除次数的限制, 因此, 本发明的技术方案并没有 通过NAND闪存测试NFTL, 并且也不会由于擦除次数。
36、多而损坏机械硬盘, 即使在NFTL的测试 说 明 书 CN 104021816 A 8 5/19 页 9 量很大时, 也能够避免损坏机械硬盘, 更加不会损坏 NAND 闪存, 从而减少资源浪费。 附图说明 0044 图 1 为本发明提供的方法实施例的流程示意图 ; 0045 图 2 为一款 NAND 闪存的物理结构 ; 0046 图 3 为 NAND 闪存双 plane 操作下的 cache 操作的操作对象图 ; 0047 图 4 为本发明提供的另一方法实施例的流程示意图 ; 0048 图 5 为 NAND 闪存的存储数据图 ; 0049 图 6 为本发明提供的另一方法实施例的流程示意图 ; 。
37、0050 图 7 为逆序写、 覆盖写、 和跳写的示意图 ; 0051 图 8A 和图 8B 为本发明提供的另一方法实施例的流程示意图 ; 0052 图 9 为本发明提供的系统实施例的结构示意图。 具体实施方式 0053 请参阅图 1, 本发明提供了一种测试 NFTL 的方法的具体实施例, 在该实施例中, 所 述方法用于测试 NFTL 的系统中, 该系统包括控制单元和机械硬盘。具体地, 所述测试 NFTL 的系统可以为计算机 ( 例如 PC 机 )、 嵌入式硬件板等, 控制单元可以为 ARM(Advanced RISC Machines)、 MCU(Micro Control Unit, 微处理。
38、器)、 FPGA(Field-Programmable Gate Array, 即现场可编程门阵列 ) 等具有控制功能的模块。控制单元根据测试 NFTL 的目标 NAND 闪 存的型号设置块的个数、 各个块的块标识以及块的最大擦除次数。这里, 测试 NFTL 的目标 NAND闪存是指能够用于测试该NFTL的NAND闪存, 块标识为与NAND闪存的每个块唯一对应 的标识号。 0054 并且在机械硬盘中存储各个块标识对应的状态标识为初始标识、 存储各个块的块 标识对应的擦除次数为初始次数。这里, 实际上是在机械硬盘上给每一个块都设置了一个 用来标识块的状态的标识位, 以及给每一个块都设置一个用来记。
39、录块的擦除次数的数据 位。在具体实施时, 可以是在机械硬盘中存储每一个块标识与该块标识对应的状态标识和 擦除次数, 还可以是在机械硬盘中按一定的顺序存储所有的状态标识和擦除次数, 例如, 在 机械硬盘的一个存储位置开始依次存放块标识 0 对应的状态标识, 接下来存放块标识 1 对 应的状态标识, 以此类推, 直到将所有的块标识对应的状态标识都进行存储, 存储擦除次数 可以与存储状态标识的方式类似, 这里不再赘述。 0055 所述方法包括 : 0056 S101 : 控制单元监测是否接收到 NFTL 的操作指令, 其中, 所述操作指令中具有操 作类型和操作参数, 所述操作参数中至少具有操作块标识。
40、。 0057 操作类型包括读操作、 写操作、 和擦除操作。由于对 NAND 闪存执行读操作和写操 作时, 是以 page 为单位进行的, 因此操作类型为读操作时, 操作参数至少具有操作块标识、 起始页标识和操作页个数 ; 操作类型是写操作时, 操作参数至少具有操作块标识、 起始页标 识、 操作页个数和写入数据。而对 NAND 闪存执行擦除操作时以 block 为单位的, 因此操作 类型为擦除操作时, 操作参数至少具有操作块标识。其中, 操作块标识指的是 NFTL 需要执 行具体读、 写或者擦除操作的目标块的块标识, 起始页标识指的是 NFTL 需要执行具体读或 说 明 书 CN 1040218。
41、16 A 9 6/19 页 10 者写操作的目标页标识的起始页的页标识, 操作页个数指的是 NFTL 需要执行具体读或者 写操作的目标页标识的标识个数。 0058 如果该步骤中的控制单元接收到 NFTL 的操作指令后, 则执行 S102。这里, 如果未 接到 NFTL 的操作指令, 则可以持续执行、 也可以是以一定时间为周期循环执行 S101, 均不 影响本发明的实施。 0059 S102 : 判断所述操作指令中的操作块标识对应的状态标识是否为坏块标识, 如果 是, 则执行 S103, 此时操作块标识对应的状态标识为坏块标识 ; 如果否, 则执行 S104, 此时 操作块标识对应的状态标识不为。
42、坏块标识。 0060 S103 : 返回操作坏块提示并结束流程。 此时由于NFTL发送的操作指令中操作块标 识对应的是坏块, 因此结束整个流程。 0061 S104 : 根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作, 并且判断所述操作指令中的操作类型是否为擦除指令, 如果为擦除指令, 则执行 S105。 0062 S105 : 将机械硬盘中存储的、 与所述操作指令中的操作块标识对应的擦除次数加 一。 0063 下面根据操作类型的类别, 分别介绍步骤 S104 中所述对机械硬盘执行相应的操 作这一步骤的具体执行动作。 0064 当操作类型为写操作时, 在步骤 S104 之前设置。
43、各个块标识对应的页标识, 则该步 骤 S104 中的根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包 括 : 在机械硬盘中将与操作块标识、 起始页标识和操作页个数对应的页标识所对应的数据 存储为写入数据。 其中, 与操作块标识、 操作页标识和操作页个数对应的页标识指的是与所 述操作块标识对应的、 页标识为 pageid, pageid+pagenum-1 区间的各个页标识。其中, pageid 为操作参数中的起始页标识, pagenum 为操作参数中的操作页个数。例如, 操作块标 识 blkid 为 2, pageid 为 4, 操作页个数 pagenum 为 5, 则上述与操。
44、作块标识、 操作页标识和 操作页个数对应的页标识指的是, 操作块标识 blkid 为 2 对应的, 页标识 4、 5、 6、 7 和 8。 0065 当操作类型为读操作时, 在步骤 S104 之前设置各个块标识对应的页标识, 则该步 骤 S104 的根据所述操作指令中的操作类型和操作参数对机械硬盘执行相应的操作包括 : 读取机械硬盘中与操作块标识、 起始页标识和操作页个数对应的各个页标识所对应的数 据。这里对与操作块标识、 起始页标识和操作页个数对应的各个页标识的解释与上一段相 同, 因此不再赘述。在该步骤 S104 之前, 还可以在机械硬盘中将各个块标识所对应的各个 页标识对应的数据存储为初。
45、始数据, 例如 0xff。 0066 当操作类型为擦除操作时, 则该步骤 S104 中的根据所述操作指令中的操作类型 和操作参数对机械硬盘执行相应的操作包括 : 擦除机械硬盘中、 所述操作块标识对应的所 有页标识所对应的数据。如果在该步骤 S104 之前已经将机械硬盘中各个块标识对应的各 个页标识所对应的数据存储为初始数据, 例如 0xff, 则上述擦除机械硬盘中、 所述操作块标 识对应的所有页标识所对应的数据可以具体为将机械硬盘中、 所述操作块标识对应的所有 页标识所对应的数据存储为初始数据, 例如 0xff。 0067 在该实施例中, 所述方法还包括 : 当机械硬盘存储的任一块标识对应的擦。
46、除次数 达到最大擦除次数时, 将机械硬盘中该块标识对应的状态标识存储为坏块标识。 具体地, 判 断该块标识对应的擦除次数的过程可以在该实施例中的任一步骤, 由于只有在执行了擦除 说 明 书 CN 104021816 A 10 7/19 页 11 操作后擦除次数才会发生变化, 因此上述判断过程通常在执行擦除操作之前、 或者执行擦 除操作并且擦除次数加一之后执行。下面分别具体介绍 : 若在执行擦除操作之前执行上述 判断过程, 则具体为当步骤 S101 的判断结果为是, 并且在执行步骤 S102 之前执行 : 若所述 操作类型为擦除操作, 则判断所述操作指令中的操作块标识对应的擦除次数是否达到最大 。
47、擦除次数, 如果达到, 则将机械硬盘中该块标识对应的状态标识存储为坏块标识。 若在执行 擦除操作并且擦除次数加一之后执行, 则具体为所述将机械硬盘中与所述操作指令中的操 作块标识对应的擦除次数加一之后还包括 : 判断所述操作指令中的操作块标识对应的擦除 次数是否达到最大擦除次数, 如果达到, 则将机械硬盘中该块标识对应的状态标识存储为 坏块标识。 0068 通过上述技术方案可知, 该实施例中在机械硬盘中存储块标识对应的状态标识和 擦除次数, 当控制单元监测到 NFTL 的操作指令后, 判断操作指令中的操作块标识对应的状 态标识是否为坏块标识, 如果是坏块标识, 则返回操作坏块提示并且结束流程,。
48、 此时可知 NFTL 向坏块执行了操作 ; 如果不为坏块标识, 则根据操作类型和操作参数对机械硬盘执行 相应的读、 写以及擦除操作, 并且判断操作指令的操作类型是否为擦除操作, 如果是, 则将 机械硬盘中与操作块标识对应的擦除次数加一。当机械硬盘中存储的任一个块标识对应 的擦除次数达到了最大擦除次数时, 将机械硬盘中该块标识对应的状态标识存储为坏块标 识。也就是说, 在本发明的技术方案里, NFTL 无需再对 NAND 闪存执行相应的操作, 只需对 控制单元发送操作指令, 控制单元根据操作指令在机械硬盘中执行相应的操作, 并且通过 设置各个块的状态标识使得擦除次数达到最大擦除次数的块成为坏块。。
49、 而机械硬盘与NAND 闪存的物理结构完全不同, 并且机械硬盘与 NAND 闪存相比, 具有非常重要的一项特性, 就 是机械硬盘并没有最大擦除次数的限制, 因此, 本发明的技术方案并没有通过 NAND 闪存测 试 NFTL, 并且也不会由于擦除次数多而损坏机械硬盘, 即使在 NFTL 的测试量很大时, 也能 够避免损坏机械硬盘, 更加不会损坏 NAND 闪存, 从而减少资源浪费。 0069 并且现有技术中, 由于直接在 NAND 闪存上进行测试, 因此无法对测试过程进行调 试, 并且很难判断测试时出现的问题是由 NFTL 造成, 还是由 NAND 闪存本身造成。而在本实 施例中, 还可以在所述系统中安装调试工具, 例如 VisualC+(VC) 等, 以实现方便的跟踪调 试测试中发现的调试问题, 从而确定测试的问题是否由 NFTL 造成。 0070 实际上, NAND 闪存可以具有单层 (plane) 操作和双层 (plane) 操作, 则此时在操 作参数中还包括层 (plan。