NANDFlash技术应用文档NANDFlash存储器和使用ELNEC编程器烧录NANDFlash技术应用文档Summer翻译整理深圳市浦洛电子科技有限公司August2006技术应用文档目录一.简介-----------------------------------------------------------------------------------1二.NANDFlash与NORFlash的区别--------------------------------------------1三.NANDFlash存储器结构描叙---------------------------------------------------4四.备用单元结构描叙----------------------------------------------------------------6五.SkipBlockmethod(跳过坏块方式)------------------------------------------8六.ReservedBlockAreamethod(保留块区域方式)-----------------------------9七.ErrorCheckingandCorrection(错误检测和纠正)--------------------------10八.文件系统------------------------------------------------------------------------------10九.使用ELNEC系列编程器烧录NANDFlash--------------------------------10十.InvalidBlockManagementdrop-downmenu--------------------------------12十一.UserAreaSettings3--------------------------------------------------------13十二.SolidAreaSettings---------------------------------------------------------15十三.QuickProgramCheck-box----------------------------------------------16十四.ReservedBlockAreaOptions--------------------------------------------17十五.SpareAreaUsagedrop-downmenu------------------------------------18年由日本东芝公司引入。如今,NANDFlash和NORFlash已经占据了Flash市场的支配地位。NANDFlash是一种高密度,低功耗,低成本,而且可升级的器件,它是多媒体产品导入市场的理想选择。先进的在系统内设计也使得为降低成本,在传统的设计应用上采用NANDFlash来替代NORFlash成为可能。NANDFlash与NORFlash的区别下表是NAND与NOR的主要对比表。它指出了为什么NAND存储器是高容量数据存储的完美解决方案,尽管NOR存储器也可被用来做数据存储和执行。从物理结构上来说,因为它不一定要下拉整个bit-line,所以NANDFlash结构可以使用更小的晶体管。一条NANDbitline就是一些连续的晶体管,每一个晶体管只能流过少于总量的电流。下图介绍了NAND和NOR结构内晶体管是怎样被连接在一起的,以及他们的单元大小有什么不同。得益于NANDFlash这种更有效率的结构,使得它每一单元的大小几乎是NOR单元的一半。这也使得NANDFlash结构在给定的硬模内提供了更高的密度,更高的容量,同样也使得它的生产制程更为简单。高容量存储应用中,NAND结构相对于NOR结构来说更为节省成本。正如上面说介绍的,NANDFlash存储器是大容量数据存储的完美解决方案。(典型应用:MP3播放器,数码相机)技术应用文档上面所描叙的工艺是众所周知的单极单元(SLC)工艺,通过电压的“H”或“L”,一个存储器单元保存1bit的信息。有时候多极单元(SLC)工艺也会被用到。在这样的应用中,每一个存储单元能保存2bit或更多bit的信息,通过存储更多位。相对于基于SLC结构的存储器,MLC存储器传输的速度大大降低了,同时它也产生了更高的功耗。但是,其实这两种工艺都采用相同的I/O接口和指令。在NORFlash中,所有的存储区域都保证是完好的,同时也拥有相同的耐久性。在硬模中专门制成了一个相当容量的扩展存储单元—他们被用来修补存储阵列中那些坏的部分,这也是为了保证生产出来的产品全部拥有完好的存储区域。为了增加产量和降低生产成本,NANDFlash器件中存在一些随机badblock。为了防止数据存储到这些坏的单元中,badblock在IC烧录前必须先识别。在一些出版物中,有人称badblock为“badblock”,也有人称badblock为“invalidblock”。其实他们拥有相同的含义,指相同的东西。从实际的应用上来说,NORFlash与NANDFlash主要的区别在于接口。NORFlash拥有完整的存取-映射访问接口,它拥有专门的地址线和数据线,类似与EPROM。然而在NANDFlash中没有专门的地址线。它发送指令,地址和数据都通过8/16位宽的总线(I/O接口)到内部的寄存器。NANDFlash存储器结构描叙NANDFlash存储器由block(块)构成,block的基本单元是page(页)。通常来说,每一个block由16,32或64个page组成。大多数的NANDFlash器件每一个page(页)内包含512个字节(或称为256个字)的Dataarea(数据存储区域)。每一个page内包含有一个扩展的16字节的Sparearea(备用区域)。所以每一个page的大小为512+16=528字节。我们称这样的page为smallpage。那些大容量的(1Gbig或更多)的NANDFlash,它每page的容量就更大,每page内Data(数据存储区域)的大小为2048字节,Sparearea(备用区域)大小为64字节。NANDFlash的读取和烧录以页为基础,而NOR却是以字节或字为基础—数据I/O寄存器匹配页的大小。NANDFlash的擦除操作是基于block(块)的。在NANDFlash上有三种基本的操作:读取一个页,烧录一个页和擦除一个块。在一个页的读取操作中,该页内528字节的数据首先被传输到数据寄存器中,然后再输出。在一个页的烧录中,该页内528字节的数据首先被写进数据寄存器,然后再存储到存储阵列中。在一个块的擦除操作中,一组连续的页在单独操作下被擦除。通常来说,器件还提供有更多的扩张功能,它们是:z厂商ID读取z器件操作状态读取z复位命令z不考虑CEz高速缓冲寄存器操作zOTP区域z自动读取第0页z块加锁/解锁(备用区域)来标识badblock,所以这些器件被运送到客户手中时已经被标识。从功能上来说,Sparearea(备用区域)内所有的字节都可以像Dataarea(数据存储区域)内的字节一样被用户用来存储数据。关于备用字节的使用,我们推荐使用三星的标准。(Invalidblock)的管理自从NAND结构被设计用来作为低成本的多媒体存储器,它的标准规范中是允许存在badblock的。只要badblock的容量小于总容量的2%那就是允许的。一个block中如果有坏的存储区域,那它就会被标识成badblock。badblock列表可以存储在一个芯片中的一个好的block上,也可以存储在同一系统的另外一颗芯片上。badblock列表是被要求的,这是由于NANDFlash只能执行有限的读和擦除次数。由于所有的Flash存储器昀终都会被磨损而且不能再使用,这个列表需要被用来跟踪记录那些在使用中发现的badblock。允许badblock的存在有利于提高芯片的产量,同时也降低了成本。因为每个block是独立的,而且是被bitlines隔离的,所以badblock的存在并不会影响那些其他block的正常工作。Badblock的一般分为两种:生产过程中产生的;使用过程中产生的。当block被发现是badblock,一般是在该块的前两个page(页)的第517字节处用非FF来标识。一个通用的badblockmapbuilding算法流程如下所示:使用过程中产生的badblock是没有被工厂标识的,这些块是在客户处产生的。因为NANDFlash有一个使用寿命而且它昀终会磨损。每一个块是独立的单元,每一个块都能被擦除和烧录并且不受其它块寿命的影响。一个好的块一般能被烧录100000到1000000次。如果一个块在擦除一个块或烧录一个页时操作失败,那么此块将被标识成badblock并且以后不再访问。如果你对badblock进行擦除,那么非“FFh”字节也会被擦除。如果发生了这样的事情,在没有对块进行测试的特定条件下,对那些badblock进行重新标识是非常困难。所以如果存储badblock列表的badblocktable丢失,重新发现并标识那些badblock是相当困难的。因此,在擦除badblock之前推荐先收集正确的badblock信息,在器件擦除后,那技术应用文档些信息又会被重新标识上去。在嵌入式系统中对badblock进行管理必须要求有特殊的软件层。因此对NANDFlash进行烧录,必须采用正确的方式进行badblock的管理,该方法取决于嵌入式系统中程序的管理方式。对badblock的管理有很多种方式,没有那一种方式被定义成标准方式。例如:一种通用的方式是跳过badblock,把数据写入那些已知的好块中—这种方法被称为“SkipBlock”。另外一种通用的方式叫做“ReservedBlockArea”,这种方法用已知好的block(块)来替代badblock,这些已知好的block(块)是预先保留设置的。除此之外,其他应用需求对每个页内的数据进行ECC计算。当badblock产生时,ECC校验被用来侦测badblock的出现并且做数据的修补。ECC数据也会被写入备用区域。这种目的的算法通常被称作ErrorCorrection/ErrorDetection(EC/ED)algorithms。SkipBlockmethod(跳过坏块方式)这种方法通俗易懂。这个算法开始之前先读取存储器内的所有备用区域。那些被标识成badblock的地址都被收集起来。接下来,数据被连续的写入目标FLASH器件。当目标地址与先前收集的badblock地址一致时,跳过坏块,数据被写到下一个好的块中。然后继续保留badblock中备用区域的标识信息。所以在程序导入执行之前,使用者的系统通过读取Sparearea(备用区域)的信息能建立一个badblock的地址列表。