一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种nandflash坏块管理方法及系统与流程

2022-05-31 23:30:49 来源:中国专利 TAG:

一种nand flash坏块管理方法及系统
技术领域
1.本发明涉及数字通信技术领域,具体涉及一种nand flash坏块管理方法及系统。


背景技术:

2.当前存在nor flash和nand flash两种闪存(flash),这两种flash各有利弊,在需要大容量的存储时,nor flash的弊端就会显现出来:首先在价格方面,nor flash的价格远高于nand flash的价格;其次在需要进行大量的数据进行连续存储时,由于对nand flash的操作都是以块(block)和页(page)为单位的,所以在向nand flash闪存进行大量数据的读写时,nand flash的速度要快于nor flash。
3.相对来说,由于nor flash型闪存的接口简单,数据操作少,位交换操作少,因此可靠性高,极少出现坏区块,一般用在对可靠性要求高的地方。nand flash型闪存接口和操作均相对复杂,位交换操作也很多,关键性数据更是需ecc(纠错码)算法来确保数据的完整性,因此出现问题的几率要大得多,坏区块也是不可避免的,而且由于坏区块是随机分布的,连纠错也无法做到。很多厂商出厂的nand flash都会有出厂的坏块参数,也就是意味着出厂的nand flash可能就存在着坏块,而且在nand flash的使用过程中,擦除均是以block为单位,就会导致实际没有使用到的位置也在同样被擦除,进而缩短了nand flash的使用寿命。
4.如果nand flash出厂含有坏块以及在使用过程中也会出现nand flash的某些地址存在异常,但用户如果不对nand flash进行坏块的扫描与检查,那么就会认为当前nand flash存储是正常的,如果在坏块的位置存储了关键的信息,那么有可能就会造成数据的丢失,造成不可逆的影响。


技术实现要素:

5.针对现有技术中的上述不足,本发明提供的一种nand flash坏块管理方法及系统解决了使用过程中nand flash出现坏块可能造成数据丢失的问题。
6.为了达到上述发明目的,本发明采用的技术方案为:
7.提供一种nand flash坏块管理方法,其包括以下步骤:
8.s1、读取nand flash中存储的坏块表信息,判断是否存在坏块表,若是则将坏块表读取到ram并进入步骤s2;否则进入步骤s7;
9.s2、解析cpu发送的数据中的数据信息、操作信息和访问对象;
10.s3、根据ram中的坏块表判断当前访问对象是否为坏块,若是则对访问对象进行地址映射,进入步骤s4;否则直接进入步骤s4;
11.s4、将解析得到的数据信息转换成spi的接口时序,根据操作信息,使用异步fifo进行时序和时钟域的转换对nand flash进行访问;
12.s5、判断访问过程中nand flash是否产生坏块,若是则进入步骤s6;否则返回步骤s2;
13.s6、对使用过程中nand flash产生的坏块地址进行重新映射至正常块,将使用过程中nand flash产生的坏块的数据迁移至正常块的存储区域,返回步骤s2;
14.s7、扫描整片nand flash,判定是否存在坏块,若是则将扫描出的坏块进行标记并映射到新的正常块地址中,进入步骤s8;否则返回步骤s2;
15.s8、将标记的坏块数据暂存在ram中,待扫描完成后,读取并将ram中暂存的坏块数据存储到映射的正常块中,返回步骤s2。
16.进一步地,步骤s3中根据ram中的坏块表判断当前访问对象是否为坏块的具体方法为:
17.根据ram中的坏块表判断当前访问对象的地址是否为原地址,若为原地址,则判定当前块为正常块,结束当前块管理;若为新映射地址,则判定当前块为坏块,进入步骤s4。
18.进一步地,步骤s5中判断访问过程中nand flash是否产生坏块的具体方法为:
19.当出现工厂坏块标记、擦除失败、编程失败,或者读页时错误的字节超过了纠错码的最大值时,判定该块为坏块。
20.进一步地,步骤s3、步骤s6和步骤s7中映射的具体方法为:
21.将当前坏块地址映射至nand flash中位置最靠后的空闲正常块地址;当nand flash中不存在位置最靠后的空闲正常块时,判定当前的nand flash所有好块均已使用完,无可用地址。
22.进一步地,步骤s6中数据迁移的具体方法为:
23.若当前操作信息为读/写,且特征寄存器的值表示读/写错误,则直接将使用过程中nand flash产生的坏块的数据迁移至正常块的存储区域;
24.若当前操作信息为擦除,且特征寄存器的值表示擦除错误,则只进行重新映射,不进行数据迁移。
25.提供一种nand flash坏块管理系统,其包括输入接口解析模块、坏块管理模块、ram存储模块和nand flash接口模块;输入接口解析模块的输出端与坏块管理模块的输入端相连;坏块管理模块分别与ram存储模块和nand flash接口模块相连;
26.输入接口解析模块,用于解析cpu发送的数据中的数据信息、操作信息和访问对象;
27.坏块管理模块,用于读取nand flash中存储的坏块表信息,将坏块表读取到ram;对访问对象进行地址映射,根据ram中的坏块表判断当前访问对象是否为坏块;判断访问过程中nand flash是否产生坏块,对使用过程中nand flash产生的坏块地址进行重新映射至正常块,将使用过程中nand flash产生的坏块的数据迁移至正常块的存储区域;扫描整片nand flash,判定是否存在坏块,若是则将扫描出的坏块进行标记并映射到新的正常块地址中,将标记的坏块数据暂存在ram中,待扫描完成后,读取并将ram中暂存的坏块数据存储到映射的正常块中;
28.ram存储模块,用于存储坏块表和坏块数据;
29.nand flash接口模块,用于将解析得到的数据信息转换成spi的接口时序,根据操作信息,使用异步fifo进行时序和时钟域的转换对nand flash进行访问。
30.本发明的有益效果为:
31.1、不需要重复的进行扫描,只需要第一次扫描产生坏块即可,可以从坏块表的统
计中确定当前具体哪些块为坏块,避免数据误写入坏块,也便于用户了解当前nand flash的坏块情况。
32.2、在数据传输过程产生的坏块,可以对坏块进行及时的更新与重新映射。
33.3、用户不需要关注当前的地址是否为坏块,本发明可以实现自动实现映射,便于用户操作。
34.4、接口输入的模块以及nand flash的时序访问模块相对独立,只需修改相应的参数即可支持不同型号、不同接口、不同容量的nand flash,兼容性好。
35.5、对发现已经是坏块的存储区域,可以进行数据的迁移,避免了用户数据丢失的风险。
36.6、各级模块中间存在通过fifo进行缓存,当fifo将满后不在进行写fifo操作,因此可以根据fifo的将满信号可以得知是否可以继续写操作,避免了数据覆盖的情况发生。
附图说明
37.图1为本方法的流程示意图;
38.图2为本系统的结构示意图。
具体实施方式
39.下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
40.如图1所示,该nand flash坏块管理方法包括以下步骤:
41.s1、读取nand flash中存储的坏块表信息,判断是否存在坏块表,若是则将坏块表读取到ram并进入步骤s2;否则进入步骤s7;
42.s2、解析cpu发送的数据中的数据信息、操作信息和访问对象;
43.s3、根据ram中的坏块表判断当前访问对象是否为坏块,若是则对访问对象进行地址映射,进入步骤s4;否则直接进入步骤s4;
44.s4、将解析得到的数据信息转换成spi的接口时序,根据操作信息,使用异步fifo进行时序和时钟域的转换对nand flash进行访问;
45.s5、判断访问过程中nand flash是否产生坏块,若是则进入步骤s6;否则返回步骤s2;
46.s6、对使用过程中nand flash产生的坏块地址进行重新映射至正常块,将使用过程中nand flash产生的坏块的数据迁移至正常块的存储区域,返回步骤s2;
47.s7、扫描整片nand flash,判定是否存在坏块,若是则将扫描出的坏块进行标记并映射到新的正常块地址中,进入步骤s8;否则返回步骤s2;
48.s8、将标记的坏块数据暂存在ram中,待扫描完成后,读取并将ram中暂存的坏块数据存储到映射的正常块中,返回步骤s2。
49.步骤s3中根据ram中的坏块表判断当前访问对象是否为坏块的具体方法为:根据ram中的坏块表判断当前访问对象的地址是否为原地址,若为原地址,则判定当前块为正常
块,结束当前块管理;若为新映射地址,则判定当前块为坏块,进入步骤s4。
50.只要一个block中,有一个或多个page出现数据读写错误的,这个block就应该标记为坏块。一般出厂时,坏块比例:1024block中最多有20个坏的。
51.步骤s5中判断访问过程中nand flash是否产生坏块的具体方法为:当出现工厂坏块标记、擦除失败、编程失败,或者读页时错误的字节超过了纠错码的最大值时,判定该块为坏块。
52.映射的具体方法为:在外部访问nand flash,地址是依次递增,写地址依次递增,不会出现跳变。映射的地址最后的block进行递减,扫描整片nand flash,确定当前哪些block为坏块并进行标记。如果扫描未出现错误,所有的block映射地址均为原block地址。如果出现错误,需要判断地址为last_block(初始值为最后一个block,即位置最靠后的空闲正常块)的block是否为坏块:
53.a.如果不是坏块,则将出现错误的block的映射到地址为last_block的block中,同时last_block减一;
54.b.如果是坏块,则需要对last_block减一,重复进行判断,直至有一个last_block等于当前出现坏块的值,此时会输出nand flash满信号,告知外部当前的nand flash所有的好块均已使用完,无可用地址。
55.步骤s6中数据迁移的具体方法为:
56.若当前操作信息为读/写,且特征寄存器的值表示读/写错误,则直接将使用过程中nand flash产生的坏块的数据迁移至正常块的存储区域;
57.若当前操作信息为擦除,且特征寄存器的值表示擦除错误,则只进行重新映射,不进行数据迁移。
58.例如block1为坏块,它映射的地址为0x3d,0x3d开始为好块,使用过程中变成了坏块。其它块均为好块,在检测到0x3d变为坏块后,可以将block1重新映射,映射的新地址为0x3c,如果当前操作是读写错误,同时可以将block1的映射地址改为0x3c,block 0x3d的映射内容为1'b1,3'b0,12'h3d,同时修改位置最靠后的空闲正常块的数值,并将block地址为0x3d中的数据迁移到block地址为0x3c的存储区域中,如果是擦除错误,则数据不迁移,只修改映射关系。
59.如图2所示,该nand flash坏块管理系统包括输入接口解析模块、坏块管理模块、ram存储模块和nand flash接口模块;输入接口解析模块的输出端与坏块管理模块的输入端相连;坏块管理模块分别与ram存储模块和nand flash接口模块相连;
60.输入接口解析模块,用于解析cpu发送的数据中的数据信息、操作信息和访问对象;
61.坏块管理模块,用于读取nand flash中存储的坏块表信息,将坏块表读取到ram;对访问对象进行地址映射,根据ram中的坏块表判断当前访问对象是否为坏块;判断访问过程中nand flash是否产生坏块,对使用过程中nand flash产生的坏块地址进行重新映射至正常块,将使用过程中nand flash产生的坏块的数据迁移至正常块的存储区域;扫描整片nand flash,判定是否存在坏块,若是则将扫描出的坏块进行标记并映射到新的正常块地址中,将标记的坏块数据暂存在ram中,待扫描完成后,读取并将ram中暂存的坏块数据存储到映射的正常块中;
62.ram存储模块,用于存储坏块表和坏块数据;
63.nand flash接口模块,用于将解析得到的数据信息转换成spi的接口时序,根据操作信息,使用异步fifo进行时序和时钟域的转换对nand flash进行访问。
64.在本发明的一个实施例中,对坏块进行标记的具体方法为:扫描到的坏块用一个16bit的数据进行存储,第16位,即bit[15]表示当前的block是否为好块,0表示为当前块为好块,1表示当前块为坏块;第12位,即bit[11:0]表示映射新的block地址,第15位到第13位,即bit[14:12]为保留位,可根据实际nand flash容量确定是否使用。以4gbit容量的nand flash为例,坏块表会存储在flash中,同时也会存储在bbtm的ram中。对于4g的nand flash有2048个block,一个page有(4k 256)个byte,其中256byte为备用空间(spare area),在打开ecc时仅有(4k 128)byte可供用户操作。因此定义的映射表是2048*16bit,在ram中的形式,地址范围为0~2047,对应nand flash的block地址为0~2047。
[0065]
综上所述,本发明不需要重复的进行扫描,只需要第一次扫描产生坏块即可,可以从坏块表的统计中确定当前具体哪些块为坏块,避免数据误写入坏块,也便于用户了解当前nand flash的坏块情况。可以对在数据传输过程产生的坏块进行及时的更新与重新映射。用户不需要关注当前的地址是否为坏块,本发明可以实现自动实现映射,便于用户操作。对发现已经是坏块的存储区域,可以进行数据的迁移,避免了用户数据丢失的风险。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献