嵌入式系统中的Flash存储管理
发布时间:2008/5/26 0:00:00 访问次数:2799
来源:单片机及嵌入式系统应用 作者:北京方岳科技有限公司 陈 峰 北京航天信息股份有限公司 君 寒摘要:以tri公司的基于nor flash的flash管理软件fmm为例,详细介绍嵌入式系统中如何根据flash的物理特性来进行flash存储管理。
关键词:嵌入式系统 flash fmm
引言在当前数字信息技术和网络技术高速发展的后pc(post-pc)时代,嵌入式系统已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文件艺术、娱乐业以及人们的日常生活等方方面面中。随着嵌入式系统越来越广泛的应用,嵌入式系统中的数据存储和数据管理已经成为一个重要的课题摆在设计人员面前。
flash存储器作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点。目前已经逐步取代其它半导体存储元件,成为嵌入式系统中主要数据和程序载体。
作为嵌入式系统的一部分,flash存储管理的主要功能是针对flash自身的物理特性,利用一些特定的算法来提高flash的使用效率,加快操作速度和管理flash各单元的使用频率。
1 flash存储器简介嵌入式系统中使用的flash主要分为nor和nand两种类型。这里我们以nor型flash为例进行介绍。nor型flash主要特点如下:
*体积小、容量大,目前可以达到十几mb。
*掉电数据不丢失,数据可以保存10~100年。
*有独立的地址和数据总线,可以快速地通过总线读取数据。因此它具有和静态ram相同的读取速度,既可以作为数据存储器也可以作为程序存储器使用。
*写入操作必须通过指令序列来完成,以字节(byte)或字(word)为单位,每写入一个byte或word需十几μs。
*擦除也通过指令序列完成,以块(block)为单位,通常块的大小为64k。每擦除一个块需要十几ms。
*由于flash有一定的使用寿命,一般为10~100万次。所以随着使用次数的增加,会有一些单元逐渐变得不稳定或失效,因此必须能够对其状态加以识别。
2 flash存储管理的作用由flash特点可以看出,操作flash需要注意以下几点:
*必须以几k~几十k的块为单位进行数据的操作;
*擦除操作耗时较多,应减少擦除操作;
*尽量避免频繁地对同一地址操作,以免造成局部单元提前损坏。
另外,大部分嵌入式操作系统所挂接的文件系统是建立在以扇区(sector)为单位的磁盘操作基础上(通常为512字节/扇区)。因此也需要一段特殊的flash存储管理程序来解决以扇区为单位的文件系统接口和以块为单位的flash物理特性之间的矛盾;同时,完成各块之间的擦写次数均衡和坏块管理等工作。flash存储管理程序在系统中的位置如图1所示。
本文以tri公司的fmm为例,说明flash存储管理模块和如何完成这些功能的。
3 fmm介绍
fmm(flash media manager)是由tri公司开发的专门针对nor型flash的管理软件,其主要特点如下:
*动态映射os的逻辑扇区到物理地址;
*所有物理块进行寿命均衡,同时可记录flash的擦写次数;
*掉电数据恢复,可以保证系统的稳定性;
创建坏块表进行坏块管理,保证系统的可靠性。
为了更好地介绍fmm的操作流程,这里先作几点说明。
(1)存储空间管理
为了实现以扇区为基础的数据管理,fmm首先对flash中的块内存储空间逻辑上进行了重新定义,每个物理块内部又重新划分成了若干物理扇区。每个物理块内部又重新划分成了若干物理扇区。每个物理扇区由512+4字节=516(0x204)字节组成。512字节为有效数据空间,另外4字节(32位)用于存放逻辑扇区另和当前状态。定义如下:
扇区状态
逻辑扇区号
数字空间
4位
28位
125字节扇区状态有4种,用于进行掉电数据恢复:
free—空扇区(0xf);
dvalid—扇区数据无效(0xe);
inuse—扇区数据有效(0xc);
dirty—扇区数据无用,可擦除(0x8)。
以64k大小的块为例,可以计算出每个块中可以划分出127个扇区;另外,还会有4字节的空间,专门用于标志下一个被整理块。标记为0x80,否则为0xffffffff。
因此可以得出物理扇区和绝对地址之间的对应关系:
绝对地址=flash基地址+物理扇区号×0x204+所在块号×4
(2)扇区分类
fmm中将扇区分为id扇区和数据扇区两类:
①fmm会占用n个扇区作为标识i
来源:单片机及嵌入式系统应用 作者:北京方岳科技有限公司 陈 峰 北京航天信息股份有限公司 君 寒摘要:以tri公司的基于nor flash的flash管理软件fmm为例,详细介绍嵌入式系统中如何根据flash的物理特性来进行flash存储管理。
关键词:嵌入式系统 flash fmm
引言在当前数字信息技术和网络技术高速发展的后pc(post-pc)时代,嵌入式系统已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文件艺术、娱乐业以及人们的日常生活等方方面面中。随着嵌入式系统越来越广泛的应用,嵌入式系统中的数据存储和数据管理已经成为一个重要的课题摆在设计人员面前。
flash存储器作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点。目前已经逐步取代其它半导体存储元件,成为嵌入式系统中主要数据和程序载体。
作为嵌入式系统的一部分,flash存储管理的主要功能是针对flash自身的物理特性,利用一些特定的算法来提高flash的使用效率,加快操作速度和管理flash各单元的使用频率。
1 flash存储器简介嵌入式系统中使用的flash主要分为nor和nand两种类型。这里我们以nor型flash为例进行介绍。nor型flash主要特点如下:
*体积小、容量大,目前可以达到十几mb。
*掉电数据不丢失,数据可以保存10~100年。
*有独立的地址和数据总线,可以快速地通过总线读取数据。因此它具有和静态ram相同的读取速度,既可以作为数据存储器也可以作为程序存储器使用。
*写入操作必须通过指令序列来完成,以字节(byte)或字(word)为单位,每写入一个byte或word需十几μs。
*擦除也通过指令序列完成,以块(block)为单位,通常块的大小为64k。每擦除一个块需要十几ms。
*由于flash有一定的使用寿命,一般为10~100万次。所以随着使用次数的增加,会有一些单元逐渐变得不稳定或失效,因此必须能够对其状态加以识别。
2 flash存储管理的作用由flash特点可以看出,操作flash需要注意以下几点:
*必须以几k~几十k的块为单位进行数据的操作;
*擦除操作耗时较多,应减少擦除操作;
*尽量避免频繁地对同一地址操作,以免造成局部单元提前损坏。
另外,大部分嵌入式操作系统所挂接的文件系统是建立在以扇区(sector)为单位的磁盘操作基础上(通常为512字节/扇区)。因此也需要一段特殊的flash存储管理程序来解决以扇区为单位的文件系统接口和以块为单位的flash物理特性之间的矛盾;同时,完成各块之间的擦写次数均衡和坏块管理等工作。flash存储管理程序在系统中的位置如图1所示。
本文以tri公司的fmm为例,说明flash存储管理模块和如何完成这些功能的。
3 fmm介绍
fmm(flash media manager)是由tri公司开发的专门针对nor型flash的管理软件,其主要特点如下:
*动态映射os的逻辑扇区到物理地址;
*所有物理块进行寿命均衡,同时可记录flash的擦写次数;
*掉电数据恢复,可以保证系统的稳定性;
创建坏块表进行坏块管理,保证系统的可靠性。
为了更好地介绍fmm的操作流程,这里先作几点说明。
(1)存储空间管理
为了实现以扇区为基础的数据管理,fmm首先对flash中的块内存储空间逻辑上进行了重新定义,每个物理块内部又重新划分成了若干物理扇区。每个物理块内部又重新划分成了若干物理扇区。每个物理扇区由512+4字节=516(0x204)字节组成。512字节为有效数据空间,另外4字节(32位)用于存放逻辑扇区另和当前状态。定义如下:
扇区状态
逻辑扇区号
数字空间
4位
28位
125字节扇区状态有4种,用于进行掉电数据恢复:
free—空扇区(0xf);
dvalid—扇区数据无效(0xe);
inuse—扇区数据有效(0xc);
dirty—扇区数据无用,可擦除(0x8)。
以64k大小的块为例,可以计算出每个块中可以划分出127个扇区;另外,还会有4字节的空间,专门用于标志下一个被整理块。标记为0x80,否则为0xffffffff。
因此可以得出物理扇区和绝对地址之间的对应关系:
绝对地址=flash基地址+物理扇区号×0x204+所在块号×4
(2)扇区分类
fmm中将扇区分为id扇区和数据扇区两类:
①fmm会占用n个扇区作为标识i