Nand Flash作为一种安全、快速的存储体,因其具有体积小、容量大、成本低、掉电数 据不丢失等一系列优点,已逐步取代其它半导体存储元件,成为嵌入式系统中数据存储的主 要载体。尽管Nand Flash的每个单元块相互独立,且每块一般可擦除次数高达10~100万次, 但是随着擦写次数增加,会有一些单元块逐渐变得不稳定或失效从而形成永久性坏块。因此, 要避免频繁地对同一块进行操作,尽量达到擦写次数均衡;同时,由于擦除操作耗时较多, 会对系统的实时性造成影响。为此,本文介绍了一种基于磨损均衡思想的Nand Flash存储管 理方式,并深入讨论了该方式在Ti公司的DSP TMS320F28x中的程序实现。 1 器件介绍
本文中采用的Nand Flash芯片K9F6408U0C是一块拥有8M(8,388,608)×8bit存储空间及 256K(262,144)×8bit辅用存储空间的存储芯片,电源电压为1.8V-3.3V。芯片内部按块和 页的方式来组织的,如图1所示,共分成1024个块,每块包含16个页,每页内有528个字节。 F28x系列DSP是美国TI公司最新推出的C2000平台上的定点DSP芯片。
图1 K9F6408UOC内部结构示意图 F28x系列芯片具有 低成本、低功耗和高效能等特点,特别适用于有大量数据处理的测控场合。
2 Flash的特点及存储管理的作用
由K9F6408U0C的基本结构可以知道,它的基本单位有块、页、字节等。 Nand Flash 芯片具有如下特点:
Flash写:通过写命令将每个字节存储单元中的1变为0;写操作不能把0变为1。
Flash擦除:擦除命令是Flash中存储单元0变为1的唯一途径,一旦对某一块中的某一位 写0,要再改变成1,则必须执行擦除命令。
通常,对于容量较小的Flash块的操作过程是:先把整个块的数据读到RAM中,在RAM中 修改数据内容,再擦除整个块,最后写入修改后的数据。显然,这样频繁复杂的读-擦除- 写操作,对于Flash的使用寿命以及系统性能是很不利的,而且微处理器中通常RAM大小有限。 因此在硬件条件苛刻的嵌入式系统中就迫切需要一种合理的存储管理方式以便有效地均衡 Flash各个存储块的擦写次数,提高Flash的使用寿命,从而提高数据存储的安全性。 |