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