8.1 NAND Flash 介绍和NAND Flash 控制器使用
NAND Flash 在嵌入式系统中的地位与PC上的硬盘类似,用于保存系统运行所必需的操作系统、应用程序、用户数据、运行过程中产生的各类数据。与内存掉电后数据丢失不同,NAND Flash中的数据在掉电后仍可以永久保存。
8.1.1 Flash介绍
常用的 Flash 类型有 NOR Flash 和 NAND Flash 两种。NOR Flash 由 Intel 公司在 1988 年发明,以代替当时在市场上占据主要地位的 EPROM (Electrically Programmable Read-Only-Memory,电可编程只读存储器)和 E2PROM (Electrically Erasable Programmable Read-Only-Memory,电可擦可编程只读存储器)。NAND Flash 由 Toshiba 公司在 1989 年发明。两者的主要差别如下表 8.1 所示.
表8.1 NOR/NAND Flash 的差别
- | NOR | NAND |
---|---|---|
容量 | 1MB~32MB | 16MB~512MB |
XIP | Yes | No |
擦除 | 非常慢(5s) | 快(3s) |
写 | 慢 | 快 |
读 | 快 | 快 |
可靠性 | 较高,位反转的比例小于 NAND Flash 的10% | 较低,位反转比较常见,必须有校验措施,比如TNR必须有坏块管理措施 |
可擦除次数 | 10000~100000 | 100000~1000000 |
生命周期 | 低于NAND Flash 的10% | 是NOR Flash 的10倍以上 |
接口 | 与RAM相同 | 与I/O接口相同 |
访问方法 | 随机访问 | 顺序访问 |
易用性 | 容易 | 复杂 |
主要用途 | 常用于保存代码和关键数据 | 用于保存数据 |
价格 | 高 | 底 |
NOR Flash 支持 XIP,即代码可以直接在 NOR Flash 上执行,无需复制到内存中。 这是由于 NOR Flash 的接口与 RAM 完全相同,可以随机访问任意地址的数据。在 NOR Flash 上进行读操作的效率非常高,但擦出和写操作的效率很低;另外,NOR Flash 的容量一般比较小。NAND Flash 进行擦除和写操作的效率更高,并且容量更大。一般而言,NOR Flash 用于存储程序,NAND Flash 用于存储数据。基于 NAND Flash 的设备通常也要搭配 NOR Flash 以存储程序。
Flash 存储器件由擦出单元(也称为块)组成,当要写某个块时,需要确保这个块已经被擦除。NOR Flash 的块大小范围为 64kB ~ 128kB;NAND Flash 的块大小范围为 8kB ~ 64kB,擦/写一个 NOR Flash 块需要 4s,而擦/写一个 NAND Flash 块仅需 2ms。NOR Flash 的块太大,不仅增加了擦写时间,对于给定的写操作,NOR Flash 也需要更多的擦出操作——特别是小文件,比如一个文件只有 1kB,但是为了保存它却需要擦除大小为 64kB~128kB的 NOR Flash 块。