当前位置:首页 > 智能硬件 > 智能硬件
[导读]本文通过分析FLASH介质的自身特性,并结合嵌入式系统的特点,设计实现于兼容性、可靠性以及开销等方面都得到充分优化的FLASH存储系统。

摘要  作为一种新型的存储介质,FLASH以其优良的特性,在嵌入式领域中得到了广泛的应用。本文通过分析FLASH介质的自身特性,并结合嵌入式系统的特点,设计实现于兼容性、可靠性以及开销等方面都得到充分优化的FLASH存储系统。
关键字  嵌入式系统 文件系统 FLASH

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存储系统,非常适合于嵌入式系统的应用。
参考文献
[1]     Mike Ficco.《如何在嵌入式电子设备中建立多媒体文件系统》.电子工程专辑,2004.02
[2]     董明,刘加,刘润生.《适宜于嵌入式多媒体应用的Flash文件系统》.21IC,2003.3
[3]     贾东耀.《uClinux下Nor Flash的JFFS2文件系统构建》.21IC,2004.12
[4]     吴雨俊.嵌入式系统中的线性Flash文件系统设计》.21IC,2004.12
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱

上海2024年5月16日 /美通社/ -- 2024年5月10日至5月13日,富士胶片(中国)投资有限公司携旗下影像产品创新力作亮相北京P&E 2024。在数码相机展览区域,全新制定的集团使命"为世界绽...

关键字: 富士 数码相机 影像 BSP

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP

深爱人才,共赴"芯"程 深圳2024年5月15日 /美通社/ -- 5月11日,深圳国资国企"博士人才荟"半导体与集成电路产业专场活动在深圳市重投天科半导体有限公司(简...

关键字: 半导体 集成电路产业 BSP 人工智能

武汉2024年5月15日 /美通社/ -- 北京时间4月26日-5月4日,2024 VEX 机器人世界锦标赛于美国得克萨斯州达拉斯市举办。本届 VEX 世锦赛为期九天,设有 VIQRC 小学组/初中组、V5RC 初中组/...

关键字: 机器人 BSP RC POWERED

上海2024年5月15日 /美通社/ -- 由生成式人工智能(AI)驱动的临床阶段生物医药科技公司英矽智能宣布,与复星医药(600196.SH;02196.HK)合作开发的潜在"全球首创"候选药物IS...

关键字: ISM BSP PC 人工智能

上海2024年5月13日 /美通社/ -- 5月8日,浦东新区国资委组织陆家嘴集团等9家区属企业与立邦中国召开合作交流会,旨在贯彻落实浦东新区区委、区政府工作要求,进一步放大进博会溢出带动效应,持续扩大区属企业与进博会重...

关键字: BSP 数字化 自动化立体仓库 智慧园区

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化

北京2024年5月13日 /美通社/ -- 5月11日,鲲鹏昇腾开发者大会2024期间,华为举办"昇思AI框架及大模型技术论坛",软通动力数字基础设施与集成事业部总经理谢睿受邀出席、软通动力...

关键字: AI 模型 BSP 精度
关闭
关闭