电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 存储/缓存技术 > 详细信息
存储/缓存技术:基于FLASH介质嵌入式存储方案的设计与实现
来源:   时间: 2007-10-26 1:45:55    

1 引言

  FLASH(闪速存储器)作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点,已成为嵌入式系统中数据和程序最主要的载体。由于FLASH在结构和操作方式上与硬盘、E2ROM等其他存储介质有较大区别,使用FLASH时必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优。

2 FLASH
的特点
  FLASH是一种非易失性存储器NVM(Non-Volatile Memory),根据结构的不同可以将其分成NOR FLASH和NAND FLASH两种。但不管哪一种都具有如下特点:

1.区块结构
  FLASH在物理结构上分成若干个区块,区块之间相互独立。比如NOR FLASH把整个Memory分成若干个Sector,而NAND FLASH把整个Memory分成若干个Block;

2.先擦后写
  由于FLASH的写操作只能将数据位从1写成0,不能从0写成1,所以在对存储器进行写入之前必须先执行擦操作,将预写入的数据位初始化为1。擦操作的最小单位是一个区块,而不是单个字节。

3.操作指令
  除了NOR FLASH的读,FLASH的其它操作不能像RAM那样,直接对目标地址进行总线操作。比如执行一次写操作,它必须输入一串特殊的指令(NOR FLASH),或者完成一段时序(NAND FLASH)才能将数据写入到FLASH中。

4.位反转
  由于FLASH固有的电器特性,在读写数据过程中,偶然会产生一位或几位数据错误。这就是位反转。位反转无法避免,只能通过其他手段对结果进行事后处理。

5.坏块
  FLASH在使用过程中,可能导致某些区块的损坏。区块一旦损坏,将无法进行修复。如果对已损坏的区块进行操作,可能会带来不可预测的错误。尤其是NAND FLASH在出厂时就可能存在这样的坏块(已经被标识出)。

3
关键设计
3.1 FLASH通用设计
  对于一个嵌入式系统,设备的兼容性越好,系统可行性就越好,产品也就越有竞争力。所以,为了兼容不同类型的FLASH设备,对FLASH进行通用设计至关重要。

  对于NOR FLASH,数据的读操作可以通过独立的数据总线和地址总线快速完成,然而NOR FLASH的其他操作需要通过特殊的指令来完成,更糟糕的是不同厂商生产的芯片这些指令互不相同。这就导致了设备的不兼容。

  对于NAND FLASH,也存在这样的问题。NAND FLASH可以根据相同的指令读取芯片的厂商号和设备号,从而通过识别设备号调用对应的时序流程实现操作。但是,系统中太多的判断,会使得程序的结构变得非常复杂。所以,在一定的条件下,NAND FLASH设备还是不兼容的。

  为了解决这一问题,一个较好的方法是将FLASH的各个操作指令以及结构特性按照统一的格式存放到FLASH中固定位置。系统初始化时,将这个结构读入系统,通过分析这个结构,可以获得关于芯片所有相关信息,包括操作指令,区块分布等等。这样,系统可以轻松实现对不同型号FLASH的所有操作,极大地提高了设备的扩展性。

3.2 
双模式文件系统设计
  嵌入式系统中文件数据的存放一般有两种结构,一种是索引格式的线性结构,一种是非线性的链表式结构。这两种结构各有优缺点。比如对于系统配置、点阵字库等一些具有固定结构的系统数据,索引结构比链表式结构更有效率。但对于经常更新的用户数据,链表式结构要比索引结构更灵活。如果系统能将两种结构集成,势必能将性能发挥到最优。

  实现这种集成的方法是将设备定义成若干个分区,每个分区相互独立,不同分区可以使用不同的文件模式。这样,不同类型的数据就可以根据自己的属性选择存放的分区。比如系统数据存放在使用索引线性结构的分区,用户数据存放在使用链式非线性结构的分区。

3.3
坏块处理
  FLASH中的坏块处理是一件很棘手的问题,如果没有有效的管理,对系统的稳定性会造成严重影响。一个可行的解决方法是生成一张坏块表,坏块表中记录所有坏块的块号,并且按块号从小到大排序,坏块表在读写过程中动态更新。当读写数据时,遍历坏块表中的块号,将文件的逻辑地址转换成对应FLASH 物理地址,以保证所用的FLASH地址空间不存在坏块。

4
系统实现
4.1 结构定义

图1 - 存储结构
  系统的存储结构如图1所示,在FLASH的Block0位置存放整个系统最重要的数据——系统记录SR(System Record)。选择Block0的原因是一般FLASH出厂时,都能保证Block0是完好的,因此可以避免坏块问题带来的不便。SR其实就是一个定义好的数据结构,它包括媒质信息和文件系统信息两部分。媒质信息包括FLASH存储器的类型、容量、块类型的大小和数量(BlockInfo)、FLASH 操作命令(CommandInfo)等。文件系统信息包括版本信息、各逻辑分区的起始地址(物理地址)和结束地址。FLASH设备可以被分成一个或多个逻辑分区,每个逻辑分区采用的操作方式可以互不相同,如图1中Device0分区采用的是线性文件系统,Device1分区采用的是链式文件系统。如果采用的是线性文件系统,在分区信息后面加入文件索引表INDEX起始地址、大小等信息;如果采用的是链式文件系统,则加入文件系统页大小、文件分配表FAT和文件登记表FRT所在的位置等信息。

  文件登记表FRT位于FAT后的页中,存放着逻辑分区中文件的信息,如文件总数、每个文件的文件代号、位置、长度以及校验模式。其中,校验模式用来标识文件读写时采用差错校验的级别。不同类型的文件采用不同级别的校验方式。0级不进行校验,1级ECC校验,2级逐个字节比较。

  对于线性文件系统分区,所有文件顺序存储,读取数据时,直接通过INDEX索引得到某个文件的逻辑起始地址,然后从这个地址开始顺序搜索,获取某个偏移位置下的n个连续Byte。链式文件系统是将地址空间分成若干个等分,即Sector,它是操作的最小单位;一个大文件可以分布在不连续的多个 Sector中,然后通过FAT表将它们连接起来;在FLASH介质上实现链式文件系统,Sector大小的选择是一个关键,由于FLASH的写操作,擦操作是以Page,Block为单位的,设小了使大块结构的FLASH写操作复杂,设多了又浪费空间,因此最好的选择是将Sector大小设为擦操作的最小单位16K。

  整个逻辑分区中,INDEX,FAT,FRT表中的内容非常重要,一旦因为异常产生错误,可能会影响到所有文件;所以,这三个文件都做了备份处理,备份存放于不同的Block中。同时,在对他们处理时,改写表中的更新状态。0xff表示开始更新,0x00表示更新结束。在文件系统初始化时,读取它们的更新状态,如果表中的更新状态为0xff,说明该表存在操作异常,可用备份表更正。

4.2 
层次接口
  整个存储系统分成三层,如图2所示。

图2 – 层次结构

1. 操作系统层

  在整个存储系统中,操作系统扮演的是使用者的角色。当需要数据时,它通过调用文件系统层提供的接口函数获取数据,它不关心数据的来源和正确性。

2. 文件系统层
  文件系统层的任务是实现它和操作系统层的函数接口。在实现方式上,线性文件系统和链式文件系统有较大区别。比如文件读取mfread,线性文件系统直接读取所要的字节,而链式文件系统是每次先把对应的整个页读到文件缓冲区,然后再把所需数据拷贝到读到指定内存。文件删除mfdelete,线性文件系统需要重新整理,不然就会因为大量的数据空洞(由于空间太小,无法放入新文件的小块区域)使得系统很快没有可用空间。链式文件系统只需修改文件系统的 FAT和FRT,而不用做其他任何处理,当下次写入操作用到该块时,自动完成擦除。

3. 驱动层
  驱动层的任务是完成与FLASH之间的通讯协议,实现它和文件系统层的函数接口。接口函数包括页面读mPageRead,页面写 mPageWrite, 块擦除mBlockErase, 随机读取mRnRead, 随机写入mRnWrite。mPageRead,mPageWrite,mBlockErase对整页或块进行操作,在链式文件系统中调用; mRnRead, mRnWrite对字节单位进行操作,在线性文件系统中调用。其中mRnWrite比较麻烦,以写一个Byte为例,它的操作分三步,首先将目标块中的所有数据读到内存Buffer中,然后将要写入的数据更新到Buffer,擦除目标块,最后将已更新的Buffer写回到目标块,这里的Buffer大小是一个Block。由于嵌入式系统的内存资源比较紧张,系统采用了块交换技术以降低成本,方法是在FLASH中搜索一个空闲块,用它充当Buffer的角色。

5
结论
  通过上面的设计,所实现的存储系统具有以下的特点:
1.使用通用模式设计,增强了系统对FLASH设备的兼容性;
2.使用双模式文件结构设计,使不同类型的数据处理效率同时达到最优;
3.使用地址映射表,屏蔽了坏块带来的隐患,增强了系统的健壮性;
4.对重要数据采用备份保护,保证不会因为断电等异常导致系统的崩溃,增强了系统稳定性;
5.采用块交换技术,节约系统成本;
6.进行分级差错校验,提高了系统的执行效率;
因此,本文所设计的FLASH存储系统,非常适合于嵌入式系统的应用。
相关信息
发表评论
打印本页 关闭本页
戴尔推出面向小企业用奔腾D双内核服务器
  戴尔近日推出了安装英特尔奔腾D处理器的双内核服务器,此举使戴尔双内核处理器的促销攻势又出新彩,双内核处理器将增强通用型服务器的处理能力。 新型戴尔PowerEdge SC430服务器的市场目标是小企业,起价499美元。与前一型号PowerEdge SC420相比,戴尔将服务器储存能力和高速数据传输通道数量提高了两倍。经设计,SC430可运行Windows Sever 2003、红帽子或Suse Linux操作系统。 该新...
>>详细内容
变频器在中央空调系统的节能应用
  一、 水泵节能改造的必要性  中央空调是大厦里的耗电大户,每年的电费中空调耗电占60%左右,因此中央空  调的节能改造显得尤为重要。  由于设计时,中央空调系统必须按天气最热、负荷最大时设计,并且留10-20%设计余量,然而实际上绝大部分时间空调是不会运行在满负荷状态下,存在较大的富余,所以节能的潜力就较大,其中,冷冻主机可以根据负载变化随之加载或减载,冷冻水泵和...
>>详细内容
APS发布可露天使用的新型开关电源
    Advanced Power Solutions公司的APS150RS-IND系列AC/DC开关电源为移动射频基站、露天电子柜及其它恶劣环境下的电子设备设计。其额定工作温度为-40℃到85℃(满负载最大工作温度为70℃)。   这种紧凑型(5X3.2X1.5英寸)U框架式电源能持续提供150W输出,单输出电压为3.3Vdc到48Vdc。该产品采用通用AC输入,有效功率因子修正符合EN61000-3-2(A级)标准。这种产品标准内置了过流、过热和...
>>详细内容
艾默生变频器在某啤酒厂制冷机上的应用
    食品的冷冻、冷藏要使用冷冻机,因而在食品行业,制冷机的使用非常普及,其制冷机机的控制正越来越多地采用变频器。     一.变频器使用的目的:   对制冷机内的压缩机采用变频控制(压缩机能力可变控制),可以使制冷机对于冷冻负载的变动始终以接近设计条件的高效率进行运行。这就是将变频器应用于冷冻压缩机的主要目的。变频器控制制冷机的主要优点如下    1) 节能 相...
>>详细内容
NPC面向便携式应用推出两款D类扬声器放大器
    Nippon Precision Circuits (NPC)公司推出两款D类扬声器放大器——SM6801AB和SM6802AB。SM6801AB目前发售样片,SM6802AB已开始量产。SM6801AB和SM6802AB均采用小型封装,适用于便携式设备中小尺寸的PC板。SM6802AB在片上集成了立体声输入/输出功能。   SM6801AB和SM6802AB和NPC的其它D类放大器一样具有可选的动态范围压缩功能,可自动实时跟踪输入电平而优化输出电平。该产品还具...
>>详细内容
丹佛斯变频器应用于加弹假捻机
    中国是世界上最大的纺织品制造国和纺织机械市场,产品竞争非常激烈,这就要求纺织机械制造厂家以合理的价格提供高性能的产品,上海津信变频器有限公司最近就成功地为江苏某南纺机有限公司配套了加弹假捻机的电控系统。  一台加弹假捻机总体控制120根原料丝,分为两组,其中每组60根丝,工艺框图如图1所示。             如图1所示,一套系统要用到9台丹佛斯VLT2800系...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com