摘 要: 32位微处理器芯片的出现,使得嵌入式系统迅速发展。文件系统是操作系统的核心,本文介绍在触摸屏工业图形显示器系统中文件系统的设计和应用。该系统采用嵌入式领域应用最为广泛的存储设备-flash作为系统的存储器,本文件系统是结合它的特性进行设计的。
关键词: 嵌入式系统; 文件系统; Flash
1. 前言
近几年来,嵌入式操作系统得到飞速的发展,从支持8位微处理器到16位、32位甚至64位,从支持单一的微处理器芯片到支持多品种微处理器芯片,从只有实时内核到除了内核外还提供其它功能模块如:高速文件系统、TCP/IP网络系统、GUI系统等。嵌入式操作系统的文件系统是指嵌入式操作系统中文件的组织与管理结构,它是嵌入式操作系统的核心。从外部看来,文件系统是一组文件和目录的操作。文件可以被读写,目录可以被创建和删除。而在内部看,文件系统却迥然不同。文件系统的设计者,必须考虑到存储区如何分配以及系统如何记录文件、使用了哪些块等。文件系统的可靠性和性能也是一个重要问题。文件系统是操作系统的核心,不同的操作系统其文件系统也不尽相同,这主要体现在文件存储空间的动态分配机制上,各种文件系统各有自己的特点。本文将介绍基于嵌入式实时操作系统µCOS-II的嵌入式应用实例中的文件系统的设计及实现方法。
2.文件系统简介
目前嵌入式操作系统分商用和免费两种。在国内市场占有率第一的商用操作系统是VxWorks,免费的操作系统包括µCOS-II ,QNX和linux。由于商用操作系统价格昂贵,所以很多的研究机构使用免费操作系统。本嵌入式系统的操作系统采用的是对研究机构免费使用的µCOS-II。μC/OS-II是Jean Labrosse编写的一个免费的、源码公开的嵌入式实时内核。对于开发计算机嵌入式应用产品来说是一个实用价值很高的实时嵌入式操作系统ERTOS。
FAT(File allocation table)文件分配表,是一个应用了几十年的商业化软件产品,其MS-DOS 文件系统技术成熟、结构简单、系统资源开销小,易于在嵌入式系统的硬件平台上实现。它不用于表示引导区、文件目录表的信息,也不真正存储文件内容,只反映磁盘空间当前的使用情况,是这个文件系统的核心。文件在磁盘的分布情况是以簇链的方式记录在FAT中。每个文件都有自己的存储簇,可以是连续的也可以是不连续的,通过FAT表来实现其完整性。
JFFS2是为在嵌入式系统中使用flash存储设备而专门设计的一种日志文件系统,作为一种日志结构的文件系统,它的文件由一长串节点组成,每个节点包含文件的部分信息。垃圾收集技术是JFFS2的重要部分,其原理是当需要增添新内容时,就在节点链表的末端添加新的节点、存储新的内容;若要修改文件的某部分,JFFS2将该部分标记为废弃,并在节点链表末端添加修改后的内容。JFFS2如此不断地在flash上添加新的内容,当flash上的存储空间用完时,系统就回收标记为废弃的空间,该过程就称为垃圾收集。
3. Flash的特性
Flash具有高密度和良好的存取速度等优点,是嵌入式领域应用最为广泛的存储设备。 它在读取方面与普通的SRAM 存储器类似,一般可以实现完全随机的读取,最大的不同在于写操作方面。Flash存储器的写操作需要经过“擦除— 写入”两个操作过程。本系统使用的flash是sst39VF160型,如果希望对某一个单元进行写入时,首先必须对这个存储单元所在的扇区(Sector)或块(Block)执行擦除操作,擦除操作成功完成后,整个扇区或块的数据内容都被清空。一般被设置成0XFF;然后对目的单元所在的扇区或块执行写入操作,这就意味着修改数据比单独的写和读操作需要更多的时间。为了提高flash利用率,减少碎片,本系统定义了簇,它是写操作的最小单位,并规定每簇占256type。Sst39VF160的大小是1M×16bit,分32个块(Block,32kword),分512个扇区(Sector,2kword),包含8192个簇。
Sst39VF160提供了Sector-Erase,Block-Erase和Chip-Erase三种擦除方式,Chip-Erase是把整个Flash擦除,内容设置为1;Block-Erase和Sector-Erase分别以块和扇区为单位删除flash,而且flash的擦除次数是有限的。当一个块或扇区提前达到擦除次数的上限时将导致整个flash无法使用。通常上限为每个块可擦除100000次。为了避免任意一个块在其它块之前达到这个极限,文件系统必须保证擦除次数在各擦除块之间尽可能均匀分布,这一过程称为“均衡磨损 (Wear Leveling) 。 ”
4.触摸屏的简介:
触摸屏工业图形显示器,简称触摸屏,它是一种连接人和设备(主要是PLC)的人机界面(Human and Machine Interface/Man and Machine Interface ,简称HMI/MMI)。它是用来替代传统的控制面板和键盘的智能化操作显示器,是工业场合常用的操作台,一般用来连接PLC、变频器等设备。
图1 触摸屏系统
主要的功能包括:
·设备监视功能 以数据曲线、图形或动画的形式来反映设备的内部状态;
·设备控制功能 通过触摸操作来改变设备(如PLC的寄存器)的内部寄存器,从而参与控制过程;
· 数据记录功能 通过标准的大容量CF卡存储配方数据,实时采样的数据和历史报警信息。
通常,在上位机(pc)用组态软件(HMI/MMI)设计控制系统,然后将系统(包括系统文件、画面文件、通讯协议等)下载到触摸屏,此时PC和触摸屏是上位机和下位机的关系。触摸屏运行时实时与PLC 通讯,根据情况读写PLC寄存器,并把寄存器值的变化在显示器内部以图形、画面、曲线等形式表现出来,此时触摸屏和PLC是主机和从机的关系。
5.文件系统
本论文嵌入式系统使用的CPU是三星的ARM7系列的S3C44B0,存储器采用的是sst39VF160型flash,操作系统选用的是实时操作系统µCOS-II。该文件系统在基本结构上与MS-DOS的FAT文件系统类似。本flash文件系统的基本结构如表1所示:
表1 本Flash文件系统的结构
Flash的空间分配如表2:
表2 Fl ash 空间分配
Flash前面的32k存放bootloader程序,bootloader程序是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
簇表记录了除文件首簇以外文件使用的所有簇的情况(文件的首簇使用情况记录在文件分配表中),簇表的序号与文件所使用的簇号有一一对应的关系。图2给出了本文件系统中簇表和文件分配的关系,配合这个例子,可以清楚的了解簇表在文件系统中的作用及文件系统是如何利用簇表来完成工作的。例子中文件的起始簇号为4,占用4个簇的空间(第4簇到第7簇)。
图2 簇表和文件分配的关系
根据簇表可以知道某簇的使用情况,是使用还是未使用。在进行文件操作时,根据文件分配表中找到文件的起始簇,然后在簇表中查出链接簇号。簇表内容见表3。
表3 簇表
系统信息表:存放媒质信息和最重要的文件系统信息。媒质信息诸如flash存储器的类型、容量,划分成多少个区块,每区块包含多少个扇区等。文件系统信息包括版本信息、保留区块的数目和位置、文件分配表和文件登记表所在的位置和大小、数据区域的位置和大小等。
簇表:本flash系统定义256type为一簇,簇表存放着flash存储器的簇的占用与空闲情况。FAT文件系统中有12 位、16 位、32位三种不同的FAT 格式。考虑到在微处理器上实现的方便及本系统使用的flash是16bit,所以将簇表固定为16位的格式。由于flash的前32k用来固定存放bootloader,簇表的前128项被闲置,现在用来存放系统信息表内容。
数据区域:用于存放文件的数据内容。本flash文件系统中,数据分配的最小单位是簇,而扇区(sector)是一个基本擦除单位。
本flash文件系统提供:文件系统的格式化,文件的打开、关闭、删除、建立、读、写。针对系统的特点和需求,本文件系统未提供目录访问功能。
文件系统运行时,首先上位机通过Jtag口把bootloader程序烧写flash中,然后上位机通过RS232串口将系统下载到下位机,下载过程中生成文件系统。簇表类似FAT格式,当文件系统要建立文件时,它总是首先进入簇表,然后搜索簇表寻找可用簇,尽量找连续的可用簇(其簇表项值为0),并将该簇簇号作为该文件的起始簇号写到文件分配表中的起始簇号项中,并将数据存入该簇中。如果一个连续空簇还未存下此文件则找下一个连续空簇,这样就形成了一个簇链。前一个簇对应的簇表项中总是记录着下一个簇的簇号,而在最后一个簇表项中填入文件结束标志0xFFFF,访问文件时,顺着这条扇区链就可以找到全部文件的内容。
为了解决flash存在先擦除再写的缺陷和“均衡磨损”问题。本文件系统在修改某个画面文件并下载到下位机时,文件系统检查到flash存在这个文件的旧数据,这个时候,遵循先写后擦除的原则。即在簇表寻找未使用的空簇,写入新的文件数据,同时,修改簇表,将存放原来文件对应的簇表项置0x1111(脏数据),自动修改文件分配表,将该文件的起始簇由原来的簇号改为现在的簇号。虽然不能完全达到“均衡磨损”,但在一定程度上缓解了这个问题,满足实际的需求。当文件比较多而flash的空间紧张时,借鉴JFFFS2文件系统的垃圾集回收技术的思想,规定当空的扇区数少于6个,激活一个任务,开始回收脏空间,始终保证系统有至少6个扇区的空间使用。
6.结论
本文件系统针对flash本身先擦除再写的缺陷和“均衡磨损”的特性,同时结合了FAT文件系统和JFFF2文件系统的特点,实现了对文件的组织与管理,保证了系统的正常运行。
本文件系统应用于触摸屏产品当中,实际运行效果良好,同时,也可以作为其他嵌入式文件系统的参考。
[参考文献]
[1].李桂良,刘发贵,JFFS2文件系统的关键技术及其在嵌入式系统的应用,计算机应用,2003年7月
[2] 董明,刘加等,适宜于嵌入式多媒体应用的Flash文件系统,电子技术应用,2002年第9期
[3] Jean J.Labrosse 著,邵贝贝等译,嵌入式实时操作系统µCOS-II ,北京航空航天大学出版社,2003年5月
[4] sst39VF160技术手册