一种nand flash存储
芯片坏区检测管理方法
技术领域
1.
本发明涉及一种检测管理方法,尤其涉及一种nand flash存储芯片坏区检测管理方法。
背景技术:
2.nand flash采用的是非线性宏单元模式,能够进行固态的,大容量的存储数据,而且改种存储方式,能够快速的读写操作,在数字信号处理系统中,在雷达、通信、电子战等领域中,都会对射频信号或者中频信号进行接收、采集、处理等,可以将数据存储在nand flash中,在现有的工艺中,nand flahs并不能保证其整个生命周期的数据稳定可靠,所以,在使用过程中,难免会产生坏区,nand flash都需要进行坏区管理,来保证数据的可靠性。
技术实现要素:
3.本发明的目的是提供一种nand flash存储芯片坏区检测管理方法,具有通用性,实用性强的特点,适用于所有nand flash,极大地提升芯片的使用寿命,使得芯片的每一个存储区都能够得到平均化的使用,提升芯片的抗磨损度。
4.本发明为实现上述发明目的采用如下技术方案:
5.本发明提供了一种nand flash存储芯片坏区检测管理方法,包括:
6.根据nand flash存储芯片的使用状态,判断坏区的类型;
7.若判断为固有坏区,进行初始化扫描读取以记录当前nand flash存储芯片的所有坏区
地址;
8.若判断为使用坏区,进行
擦除读取以记录当前nand flash存储芯片的所有坏区地址。
9.进一步地,若判断为固有坏区,进行初始化扫描读取以记录当前nand flash存储芯片的所有坏区地址的方法如下:
10.对存储芯片进行初始化扫描,读取每一页的spare area的第六个字节;
11.如果检测到第六个字节为0xff,继续扫描下一页;
12.如果检测到第六个字节为非0xff,记录此页地址对应的块地址,即为一个坏区地址;
13.继续扫描下一页,直至记录当前nand flash存储芯片的所有坏区地址。
14.进一步地,若判断为使用坏区,进行擦除读取以记录当前nand flash存储芯片的所有坏区地址的方法如下:
15.按照页寻址的方式,擦除每一个地址块;
16.在擦除过程中,每擦写一页,就读取一次该页对应的状态寄存器;
17.如果sr0数值为0,则无需记录,继续往下擦除;
18.如果sr0数值为1,记录下此页地址;
19.继续擦除下一页,直至记录当前nand flash存储芯片的所有坏区地址。
20.进一步地,所述nand flash存储芯片以bit的方式进行数据存储,存储在flash中的memory cell中。
21.进一步地,一个memory cell对应存储一个bit,所述memory cell设置为8个一组,或者16个一组,形成byte,所述byte构成page,多个page构成block。
22.进一步地,所述nand flash存储芯片读写数据是以page作为一个单元,擦除数据是以一个block作为单位,构成的地址构包括列地址、页地址、块地址,通过列地址、页地址作为索引,来实现flash的读取,编程,而当某一页发现坏区时,可通过将页地址转换为块地址进行记录。
23.本发明的有益效果如下:
24.本发明对于nand flash的坏区管理,能够实现新出厂nand flash存储芯片,以及使用中的nand flash存储芯片的坏区检测,具有通用性,实用性强的特点,适用于所有nand flash,极大地提升芯片的使用寿命,使得芯片的每一个存储区都能够得到平均化的使用,提升芯片的抗磨损度。
附图说明
25.图1为根据本发明实施例提供的固有坏区检测流程图;
26.图2为根据本发明实施例提供的使用坏区检测流程图;
27.图3为根据本发明实施例提供的nand256w3a存储示意框图;
28.图4为根据本发明实施例提供的页编程操作时序图;
29.图5为根据本发明实施例提供的块擦写时序图。
具体实施方式
30.下面结合具体实施例对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
31.参照图1至图5,本发明提供了一种nand flash存储芯片坏区检测管理方法,包括:
32.根据nand flash存储芯片的使用状态,判断坏区的类型;
33.若判断为固有坏区,进行初始化扫描读取以记录当前nand flash存储芯片的所有坏区地址;
34.若判断为使用坏区,进行擦除读取以记录当前nand flash存储芯片的所有坏区地址。
35.nand flash的数据存储方式是以bit的方式存储起来的,存储在flash中的memory cell中,一般来说,一个cell只能存储一个bit,这些cell会8个一组,或者16个一组,形成bit line,也就是常说的byte(
×
8)或者word(
×
16),这就是nand flash的位宽,而这些byte会进一步构成page,多个page会构成block,而经常发生错误的地方就在block,比如常用的三星的nand flash型号:k9f5608uod/nand256w3a,组成结构就是,8bit构成一个byte,512个byte构成一个page,32个page构成一个block。
36.而对于nand flash来说,读写数据是以page作为一个单元,擦除数据则是以一个block作为单位,那么地址构成就有以下三种:
37.column address:列地址
38.page address:页地址
39.block address:块地址
40.可以通过列地址,页地址作为索引,来实现flash的读取,编程,而一旦某一页发现坏区,也可以通过将页地址转换为块地址,记录下来,来防止下次读写时,涉及到此坏区。
41.根据nand flash存储芯片的使用状态,判断坏区的类型:坏区检测时,分为芯片出厂未使用,此为固有坏区,以及芯片出厂已经使用(此为使用坏区)两种情况来阐述。
42.1、固有坏区。
43.芯片出厂之后,芯片厂商只能保证block 0不是坏区,其余的block,则都有可能是坏区,nand器件在使用之前,需要进行初始化扫描,来确定坏区的位置,而不能直接对flash进行读写,来防止将出厂时的坏区信息擦除掉。
44.若判断为固有坏区,进行初始化扫描读取以记录当前nand flash存储芯片的所有坏区地址的方法如下:
45.首先对存储芯片初始化扫描,读取每一页的spare area的第六个字节。
46.如果第六个字节为0xff,继续扫描下一页。
47.如果检测到第六个字节为非0xff,即为其他数据,那么记录下此页地址对应的块地址,此块地址,即为一个坏区地址。然后继续往下扫描,以此类推,便可以将所有坏区记录在案。
48.坏区地址表,不断往下一个位置更新,准备好记录下一个坏区地址。
49.2、使用坏区。
50.在对flash器件进行编程,或者擦除的过程中,如果page program或者block erase操作,产生错误,那么就认为是产生了坏区,这个错误会反映到对应的status register中。可以通过读取相应的status register值,可以得到该block是不是坏区。如果是坏区,就可以将此block address记录下来,形成一个坏区表。
51.若判断为使用坏区,进行擦除读取以记录当前nand flash存储芯片的所有坏区地址的方法如下:
52.首先按照页寻址的方式,擦除每一个地址块。
53.在擦除过程中,每擦写一页,就读取一次该页对应的状态寄存器,sr0(以三星的nand flash为例),如果sr0数值为0,则无需记录,继续往下擦除。
54.如果sr0数值为1,那么记录下此页地址,并更新到坏区表中。
55.继续每一页擦除,擦除完毕,也就记录了当前nand flash芯片的坏区地址,在下次写入程序时,可以避开这些坏区地址,可以极大地增加芯片的使用寿命。
56.nand flash的状态寄存器,可以指示该块是否是坏区,比如nand256w3a的sr0,便可以确定该块是否是坏区,擦写或者读取flash的时候,可以根据sr0的状态来决定该块,是否更新到坏区表中。sr0为1,操作错误,记录该块地址,sr0为0,正常操作无需记录。
[0057][0058]
以三星flash(型号:k9f5608uod/nand256w3a)为例,对检测坏区,剔除坏区的方法进行阐述。
[0059]
该flash的存储形式如下所示:
[0060]
每一个page包含512byte(main area),以及16byte(spare area),这里的16个字节,是作为坏区标志等存储其他信息的。每一个block包含32个page,而该芯片共包含2048个block。
[0061]
以vhdl语言为例,来进行建立坏区表,如下所示:
[0062]
type matrix is array(20downto 0)of std_locic_vector(16downto 0)
[0063]
上述语句,建立了21个块的坏区表,每一个块的大小为17bit,而在固有坏区检测之后,便可以将坏区地址存储在这21个块中,在通过读取sr0的状态,来将读写过程中产生的坏区,依次存储到上述表格中。
[0064]
表格建立之后,再次将数据写入到nand flash中的时候,便可以根据表格地址索引,绕过这些坏区位置,从而能够正常使用该flash的目的。
[0065]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
技术特征:
1.一种nand flash存储芯片坏区检测管理方法,其特征在于,包括:根据nand flash存储芯片的使用状态,判断坏区的类型;若判断为固有坏区,进行初始化扫描读取以记录当前nand flash存储芯片的所有坏区地址;若判断为使用坏区,进行擦除读取以记录当前nand flash存储芯片的所有坏区地址。2.根据权利要求1所述的一种nand flash存储芯片坏区检测管理方法,其特征在于,若判断为固有坏区,进行初始化扫描读取以记录当前nand flash存储芯片的所有坏区地址的方法如下:对存储芯片进行初始化扫描,读取每一页的spare area的第六个字节;如果检测到第六个字节为0xff,继续扫描下一页;如果检测到第六个字节为非0xff,记录此页地址对应的块地址,即为一个坏区地址;继续扫描下一页,直至记录当前nand flash存储芯片的所有坏区地址。3.根据权利要求1所述的一种nand flash存储芯片坏区检测管理方法,其特征在于,若判断为使用坏区,进行擦除读取以记录当前nand flash存储芯片的所有坏区地址的方法如下:按照页寻址的方式,擦除每一个地址块;在擦除过程中,每擦写一页,就读取一次该页对应的状态寄存器;如果sr0数值为0,则无需记录,继续往下擦除;如果sr0数值为1,记录下此页地址;继续擦除下一页,直至记录当前nand flash存储芯片的所有坏区地址。4.根据权利要求1所述的一种nand flash存储芯片坏区检测管理方法,其特征在于,所述nand flash存储芯片以bit的方式进行数据存储,存储在flash中的memory cell中。5.根据权利要求4所述的一种nand flash存储芯片坏区检测管理方法,其特征在于,一个memory cell对应存储一个bit,所述memory cell设置为8个一组,或者16个一组,形成byte,所述byte构成page,多个page构成block。6.根据权利要求5所述的一种nand flash存储芯片坏区检测管理方法,其特征在于,所述nand flash存储芯片读写数据是以page作为一个单元,擦除数据是以一个block作为单位,构成的地址构包括列地址、页地址、块地址,通过列地址、页地址作为索引,以实现flash的读取,编程,当某一页发现坏区时,可通过将页地址转换为块地址进行记录。
技术总结
本发明公开了一种NAND FLASH存储芯片坏区检测管理方法,包括:根据NAND FLASH存储芯片的使用状态,判断坏区的类型;若判断为固有坏区,进行初始化扫描读取以记录当前NAND FLASH存储芯片的所有坏区地址;若判断为使用坏区,进行擦除读取以记录当前NAND FLASH存储芯片的所有坏区地址。本发明对于NAND FLASH的坏区管理,能够实现新出厂NAND FLASH存储芯片,以及使用中的NAND FLASH存储芯片的坏区检测,具有通用性,实用性强的特点,适用于所有NAND FLASH,极大地提升芯片的使用寿命,使得芯片的每一个存储区都能够得到平均化的使用,提升芯片的抗磨损度。提升芯片的抗磨损度。提升芯片的抗磨损度。
技术研发人员:
胡红伟 吴智慧 邵星明
受保护的技术使用者:
南京长峰航天电子科技有限公司
技术研发日:
2020.12.09
技术公布日:
2022/6/14