新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于分块管理和状态转换的嵌入式Flash管理

基于分块管理和状态转换的嵌入式Flash管理

作者:时间:2013-02-01来源:网络收藏

1 引言

本文引用地址:http://www.eepw.com.cn/article/170598.htm

系统中通常都需要存放一些非易失性数据, 并且数据量的大小和数据类型根据不同的系统需求差异很大。因此选取合适的存储器是完成数据存储系统的第一步, 更重要的是使存储系统长期稳定、高效的工作, 这就必须寻求一个完备的存储器数据方法[ 1] 。本文介绍了一种适用于无文件系统环境下的N OR 方法, 采用的方法使得 的使用效率和操作可靠性得到大大提高。

2 NOR 存储器及其特性

NOR Flash 和NAND Flash 是目前市场上两种主要的Flash 存储器。一般在非海量存储型的设备中都是直接采用NOR Flash 作为程序代码和非易失性数据的存储器, 这主要是由NOR

Flash 的特点所决定的。NOR Flash 的特点如下:

1) 存储容量较小, 一般在1~ 16MByte 之间。

2) 具有和SRAM 相同的接口, 随机读取速度快, 可以做到芯片内执行( XIP) [ 2] 。

3) 存储单元只能由1 写成0, 因此进行写操作前必须先进行擦除操作, 使对应的单元变成1。

4) 器件有一定的使用寿命, 一般为10~ 100 万次。随着使用次数的增加, 可能有的单元会失效。但是NOR Flash 出厂时器件的每个单元都有效。NOR Flash 的众多特性使得它成为系统设计中首选的存储器器件。由于NOR Flash 的擦除操作都是以块为单位的, 并且不同种类的NOR Flash 器件所支持的擦除单位可能不一样, 但是每种NOR Flash 器件都支持64KB 为单位的擦除[ 3~ 4] , 因此后面介绍的管理方法将以64KB为块基本单位, 从而解决管理方法在不同种类NOR Flash 器件上实现时所出现的数据备份问题。

3 NOR Flash 分块管理方法

为了均衡每个Flash 分块的使用次数, 提高整个存储器件的使用寿命, 对Flash 采用分块管理的方法[ 5] 。以64KB 为单位, 将系统分配用作非易失性数据区域进行分块操作, 其中每个分块又分成16 字节的头部信息与数据区域。分块示意图如图1 所示。

图1 分块示意图

正是利用分块的头部信息, 进行擦除次数均衡与分块的切换。对于头部几个主要字段的定义如下:

1) Block_Flag ( 8bit) : 用于标志分块的, 总共有BF _NOT _ INIT ( 0xFF) 、BF _FREE (0xFE)、BF_COPYING_ DATA ( 0xFC )、BF _ COPY _ FINISHED(0xF8) 、BF_INUSE( 0xF0) 、BF_SRC_DATA ( 0xE0) 、BF_ERASING( 0xC0)、BF_INVALID(0x00) 8 种状态。

2) Blo ck _ Data _ T ype ( 8bit ) 和Blo ck _ Data _Ty pe_Ext ( 8bit ) : 分别表示该分块存储的数据类型和子类型, 这两个字段都由应用程序所存储的数据类型决定。例如学生信息的存储, 可能的一种存储方法是一个分块存储学生的学号信息, 而其它几个分块存储学生的具体信息, 这时它们的数据类型一样, 但是子类型却不一样。

3) Block_Erase_Counter( 32bit ) : 该字段用来动态记录每个分块的擦除次数, 从而方便应用程序对Flash 分块的使用次数进行均衡。

4) Next_Off set ( 16bit ) : 该字段为将来扩展之用, 用来将64K 的分块空间进一步细化, 使得将来1 个64K 空间内可以存储不同类型的数据。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭