HR 250-5000 为了解决这一问题,一个较好的方法是将FLASH的各个操作指令以及结构特性按照统一的格式存放到FLASH中固定位置。系统初始化时,将这个结构读入系统,通过分析这个结构,可以获得关于芯片所有相关信息,包括操作指令,区块分布等等。这样,系统可以轻松实现对不同型号FLASH的所有操作,极大地提高了设备的扩展性。
3.2 双模式文件系统设计
嵌入式系统中文件数据的存放一般有两种结构,一种是索引格式的线性结构,一种是非线性的链表式结构。这两种结构各有优缺点。比如对于系统配置、点阵字库等一些具有固定结构的系统数据,索引结构比链表式结构更有效率。但对于经常更新的用户数据,链表式结构要比索引结构更灵活。如果系统能将两种结构集成,势必能将性能发挥到最优。
实现这种集成的方法是将设备定义成若干个分区,每个分区相互独立,不同分区可以使用不同的文件模式。这样,不同类型的数据就可以根据自己的属性选择存放的分区。比如系统数据存放在使用索引线性结构的分区,用户数据存放在使用链式非线性结构的分区。
3.3 坏块处理
FLASH中的坏块处理是一件很棘手的问题,如果没有有效的管理,对系统的稳定性会造成严重影响。一个可行的解决方法是生成一张坏块表,坏块表中记录所有坏块的块号,并且按块号从小到大排序,坏块表在读写过程中动态更新。当读写数据时,遍历坏块表中的块号,将文件的逻辑地址转换成对应FLASH 物理地址,以保证所用的FLASH地址空间不存在坏块。
4 系统实现
4.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,说明该表存在操作异常,可用备份表更正。
----商务热线---厦门兴锐达自动化设备有限公司
联系人:王文光
++QQ:2851759104
手机:15359273780
电话:0592-5580707 400-855-5103转001
传真:0592-5361289
邮箱:2851759103@qq.com
网址:http://www.xmxrdauto.com
FOXBORO IPM2-P0904HA 16
SANYO DENKI 103H548-0410 1
SUMTAK IRH320-1000-203 1
AB 1756-L55M13 5
Yaskawa CP-9200SH/CPU 1
Yaskawa CP-9200SH/SVA 1
AB 1756-M14 1
AB 1756-M13 1
ABB AF100K02 2
siemens 6EW1860-3AA 1
AB 2711-K10C15 1
AB 1756-L62/B 1
AB 80190-320-03-R 1
TELTONE TLS-5D-01 1
AB 1756-L61 1
2013.10.28--11.2
MODICON 416NHM30030 1
AB 1756-L61/B 1
AB 1756-L55M13 1
FOXBORO P0914SY FBM204 15
FOXBORO P0914YM FCM10E 4
FOXBORO P0916TA FBM242 3