?????? ??SUPERPRO5000是西尔特出品的新一代USB接口独立式智能极速NAND FLASH编程器.具有编程速度快,烧录稳定,软件集成度高,更智能化的特点。是NAND Flash用户理想的选择。 ????????SUPERPRO5000除了支持算法集成的三个坏块处理方法外,还可以为客户选择定制其他的烧录方法(比如三星平台,高通平台,博通平台, WinCE 烧录等)。算法本生支持ecc512B(Hamming Code),并且支持生成的ecc码在spare区任意连续地址map。算法本生还支持NAND Boot区的只读属性处理,一般表现为Bad block Mark前的OEMReserved的处理。 ????????SUPERPRO5000烧录每64Mbytes仅需80秒,部分芯片时间甚至小于60秒。其中烧录过程包括Erase + Program + Verify. 关于NAND Flash ?????NAND FLASH是一种易失的闪存技术,被广泛使用于U盘,MP3/MP4,GPS,PDA,GSM/3G手机,无线上网设备,笔记本等多个领域。NAND是高数据存储密度的理想解决方案。
???和NOR FLASH相比。NAND FLASH具有以下的特点:
1) NAND FLASH同NOR FLASH相比,NAND FLASH有着容量大、价格低等优势。 2)存在坏块。由于NAND生产工艺的原因,出厂芯片中会随机出现坏块。坏块在出厂时已经被初始化,并在特殊区域中标记为不可用,在使用过程中如果出现坏块,也需要进行标记。 3) 易出现位反转。NAND FLASH更易出现位反转的现象,如果位反转出现在关键文件上,会导致系统挂机。所以在使用NAND FLASH的同时,建议使用ECC/EDC算法确保可靠性。? 4) 存在Spare区。正因为NAND FLASH有着上面的两项特殊的地方,Spare区就扮演作存放坏块标志,ECC值以及芯片信息和文件信息的作用。 5) 多维的空间结构。NAND FLASH一般由block,page,sector等结构组成。所以在有的文件系统中就衍生出各种分区信息和扇区信息等。 SUPERPRO5000下对NAND FLASH 的坏块处理
???NAND FLASH的坏块处理方式有很多,不同的方案公司或者系统提供商都会选择不同的坏块处理方法,来满足产品开发的需要,目前我们公司已经根据客户的要求,解决了近百种的坏块处理方案。并且将常用的三种坏块处理方案,集成到烧录算法里面。 ??本文档以K9F1208U0B为例,详细阐述了SUPERPRO5000下NAND FLASH的烧录方法。 |
1.NAND FLASH编程器烧录软件概述。 选择好K9F1208U0B后,将出现下图(Figure 1)。
?????????????????????????????????????????????????????????????????????????????(Figure 1) Device Information中,提示(1)提供了该芯片使用何种适配器。提示(2)简明扼要的讲述了本软件支持坏块处理方法的种类和技术要点。 下图是主软件界面(Figure 2)
???在主软件界面中,提示1列出了NAND烧录拥有的正常操作, 从上到下包括:自动批处理(Auto),编程写入(Program),读出数据(Read),校验(Verify),空检查(Blank_Check),擦除(Erase),启动代码块检查(Boot Block Check)。 ??其中自动批处理(Auto)必须在提示4(Edit Auto)中设置好才能运行。启动代码块检查(Boot Block Check)在提示2中设置启动代码所占块(Blocks)的范围。 ??提示2(Dev.Config)是NAND Flash烧录的配置中心,坏块处理方法,ECC,设置烧录范围,启动代码范围等的设置都在这个选项里面。 ??提示3是烧录软件的信息输出区,算法的有关信息,烧录过程的有关信息和烧录出错信息都在这个区域打印输出。
2.NAND Flash 的坏块和坏块标志。 |
???由于制造工艺的原因,NAND Flash 在生产过程中可能会产生坏块,坏块在出厂前将会被标记。对于坏块而言,存储的信息可能会丢失,不能正常使用。另外在NAND Flash擦除或者编程过程中,出现操作失败后,表示该块不能正常使用,也应标记成坏块。所以在一般情况下,在操作NAND Flash之前,先要检查一下要操作的是否是坏块,以免坏块标记被破坏。此外,为了保证存储信息的可靠性,从NAND Flash中读取的数据还可以引入ECC校验,ECC码一般存放在该页的spare区。关于ECC,详细介绍见下一章。 ??小页模式的NAND Flash(8bit)的坏块标志(BM)一般放在每个block第一页和第二页的第6个字节。 ??Spare区: |
0 |
1 |
2 |
3 |
4 |
BM |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
???小页模式的NAND Flash(16bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字(双字节)。 |
??Spare区: |
|
??大页模式的NAND Flash(8bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字节。 |
Spare区: |
BM |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
|
??大页模式的NAND Flash(16bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字(双字节)。 ??Spare区: |
BM |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
??一般情况下坏块标志(BM)处为0xFF或者0xFFFF表示好块,非0xFF或者0xFFFF代表坏块。 ??小页模式的NAND Flash(8bit)的坏块标志(BM)处会出现下面的情况。我们在总结多个厂商的要求后也把它作为一种坏块标志进行了集成化处理。 ???Spare区: |
0 |
1 |
2 |
3 |
OEM Reserved |
BM |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
??其中OEM Reserved 标志:为OEM 系统保留块(比如NBOOT,TOC,EBOOT使用),一般可以对外界表示这段代码区为只读属性。 ??BM标志:为0x00当前块为坏块,为0xFF,当前块为好块,但如果此时的OEM Reserved标志处为设定的值的话,此处BM标志为0x00,在烧录过程中做好块。此设置在器件配置字中如下(Figure 3): ??如图,表示OEM Reserved的值为0xFC,在这种设置下,当判断到BM标志为0x00时,前面的OEM Reserved的值读出为0xFC时,在烧录过程中判断其为好块。 |
|
3.常用的三种坏块处理方法 A) 跳过坏块 (Skip bad block)。 |
(Figure 4) |
这是一种最常用的坏块处理方法。它的实现原理比较简单,顺序烧录,发现某一块为坏块后,将相应数据烧录到下有个好块,如果发现连续的坏块的话,也连续的跳过这些坏块,并把数据烧录的下一个出现的好块中。其原理如下图(Figure 5)。 |
|
? 采用这种烧录方法,要关注提示2的设置,以便对NAND的存储区域进行更灵活的访问。 ??其中UBA start blk(hex): 指定文件从那个块开始烧录,Size of UBA blks(hex): 的内容表示烧录的文件占用多少个好块,例如:烧录芯片K9F1208U0B,烧录的文件包含spare区的内容。烧录文件的大小为19M整,烧录的起始块为第0块。K9F1208U0B为小页模式的NAND,每个块包含spare区的大小为0x4200Bytes = 16896(dec)Bytes。那么要烧写的block = 19*1024*1024/16896 = 1179.15,取整为1180(dec) = 0x49C.所以UBA start blk(hex): 0000,Size of UBA blks(hex): 0x49C。 ??注:如果小页模式不包含spare区的内容,则每个块的大小为0x4000Bytes. 大页模式包含spare区的内容,每个块的大小为0x21000Bytes,大页模式不包含spare区的内容,每个块的大小为0x20000. ??采用这种烧录方法的话,坏块标志位是不允许写成非“0xFF”或者“0xFFFF”(16bit),所以在缓冲区(buffer)中的数据,在烧录过程中,坏块标志为都被强制改写0xFF或者0xFFFF。 具有OEM Reserved值的情况下,如果坏块标志的处的值满足其判断要求,将不作强制修改。 B) 硬拷贝 (Hard Copy)。
??Hard Copy的方法在读写过程中,没有判断坏块,而是把它当成一般的Flash进行处理的。但在烧写过程,由于坏块的存在,导致对应的数据无法烧写进去,所以在一般情况下,我们不推荐使用这种方式烧写NANDFLASH。 ??不过在读取芯片(母片)的时候,有时候我们并不清楚该芯片的坏块标志位是不是被改变,不清楚该芯片用的是什么坏块处理方法,我们还是推荐采用这种方法读芯片内容。这种方法可以读出芯片的完全内容,以便进行下一步分析,或者直接拷贝。在读取芯片完全内容时,例如读取芯片K9F1208U0B,该芯片共有4096(0x1000)个block。那么在器件配置字中要设置Size of UBA blks(hex) : 1000 。这样读取的时候就把所有块的内容读出来。 ??用这种方法之间拷贝芯片的时候,要尽量确保目标的芯片是没有坏块的芯片,才能保证拷贝的成功率。 |
|