NOWOTEK.(苏州诺动力电子科技有限公司) 2011/3/29 NAND FLASH 烧录说明(D2800)(中文版REV1.00)本文档是引导客户如何正确使用D2800系列编程器烧录NAND Flash,可以满足客户在研发和生产中遇到的NAND Flash烧录的一般需求本文档版权归苏州诺动力电子科技有限公司( SuZhou Nowotek Electronic Co., Ltd.)所有,受《中华人民共和国著作权法》保护由于本文档编写人员的水平和对技术细节理解上的主观原因,本文档难免会出现的错误和不妥之处,恳请客户以及经销商、代理商提出修改意见第一章 关于D2800系列D2800系列是诺动力出品的新一代USB接口独立式智能极速通用编程器,具有编程速度快,烧录稳定,软件集成度高,更智能化的特点是NAND Flash用户理想的选择D2800除了支持算法集成的三个坏块处理方法外,还可以为客户选择定制其他的烧录方法(比如三星平台,高通平台,博通平台, WinCE 烧录等)算法本生支持ecc512B(Hamming Code),并且支持生成的ecc码在spare区任意连续地址map。
算法本生还支持NAND Boot区的只读属性处理,一般表现为Bad block Mark前的OEMReserved的处理D2800烧录每1Gbit仅需125秒,部分芯片时间甚至小于60秒其中烧录过程包括Erase + Program + Verify.第二章 关于NAND FlashNAND 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等结构组成所以在有的文件系统中就衍生出各种分区信息和扇区信息等第三章 D2800下对NAND FLASH 的坏块处理NAND FLASH的坏块处理方式有很多,不同的方案公司或者系统提供商都会选择不同的坏块处理方法,来满足产品开发的需要,目前我们公司已经根据客户的要求,解决了近百种的坏块处理方案并且将常用的三种坏块处理方案,集成到烧录算法里面本文档以K9F1208U0B为例,详细阐述了D2800下NAND FLASH的烧录方法1.烧录软件概述选择好K9F1208U0B后,将出现下图(Figure 1)Figure 1) (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区:01234BM6789101112131415小页模式的NAND Flash(16bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字(双字节)。
Spare区:BM1234567大页模式的NAND Flash(8bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字节Spare区:BM123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263大页模式的NAND Flash(16bit)的坏块标志(BM)一般放在每个block第一页和第二页的第1个字(双字节)Spare区:BM12345678910111213141516171819202122232425262728293031一般情况下坏块标志(BM)处为0xFF或者0xFFFF表示好块,非0xFF或者0xFFFF代表坏块小页模式的NAND Flash(8bit)的坏块标志(BM)处会出现下面的情况我们在总结多个厂商的要求后也把它作为一种坏块标志进行了集成化处理Spare区:0123OEMReservedBM6789101112131415其中OEM Reserved 标志:为OEM 系统保留块(比如NBOOT,TOC,EBOOT使用),一般可以对外界表示这段代码区为只读属性。
BM标志:为0x00当前块为坏块,为0xFF, 当前块为好块,但如果此时的OEM Reserved标志处为设定的值的话,此处BM标志为0x00,在烧录过程中做好块此设置在器件配置字中如下(Figure 3):如图,表示OEM Reserved的值为0xFC,在这种设置下,当判断到BM标志为0x00时,前面的OEM Reserved的值读出为0xFC时,在烧录过程中判断其为好块Figure 3)3.常用的三种坏块处理方法A) 跳过坏块 (Skip bad block)Figure 4)这是一种最常用的坏块处理方法它的实现原理比较简单,顺序烧录,发现某一块为坏块后,将相应数据烧录到下有个好块,如果发现连续的坏块的话,也连续的跳过这些坏块,并把数据烧录的下一个出现的好块中其原理如下图(Figure 5)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) (Figure 6)Hard Copy的方法在读写过程中,没有判断坏块,而是把它当成一般的Flash进行处理的。
但在烧写过程,由于坏块的存在,导致对应的数据无法烧写进去,所以在一般情况下,我们不推荐使用这种方式烧写NANDFLASH不过在读取芯片(母片)的时候,有时候我们并不清楚该芯片的坏块标志位是不是被改变,不清楚该芯片用的是什么坏块处理方法,我们还是推荐采用这种方法读芯片内容这种方法可以读出芯片的完全内容,以便进行下一步分析,或者直接拷贝在读取芯片完全内容时,例如读取芯片K9F1208U0B,该芯片共有4096(0x1000)个block那么在器件配置字中要设置Size of UBA blks(hex) : 1000 这样读取的时候就把所有块的内容读出来用这种方法之间拷贝芯片的时候,要尽量确保目标的芯片是没有坏块的芯片,才能保证拷贝的成功率如下图((Figure 7, Figure 8).(Figure 7)(Figure 8)C.分区模式 (Partition)(Figure 9)分区模式是一种较为复杂的坏块处理方法,支持多个文件组成的可烧录文件(*.img、*.mbn、*.bin等)的块地址定位烧录D2800支持的可烧录的分区模式映象文件是由两部分构成的第一部分是控制烧录的配置分区文件主要是分区表信息。
第二部分是烧录到芯片中的映像文件,是烧录到NAND Flash 的内容其中第二部分是由多个文件构成的,每个文件的起始信息在第一部分的分区表信息中定义,由分区表控制其烧录,所以使用分区模式进行烧录,UBA start blk(hex),Size of UBA blks(hex)这两项设置将不再有意义D2800支持的可烧录的分区模式映象文件兼容高通MSM6260&6245&6280&7200等平台,由高通的QFIT工具生成的factoryImage.mbn和partitionTa。