基于Linux的嵌入式文件系统构建与设计

摘 要:
Linux是当今一种十分流行的嵌入式操作系统。由于其具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,因此被广泛应用于工业控制领域。该文对其文件系统进行了简单的介绍,结合嵌入式系统应用中的实际情况,建立起一套简单的文件系统。
引言:
在便携电子设备中,随着系统复杂性的增加,存储容量的扩大,嵌入文件系统成为一种必然趋势。而Flash存储器由于具有存储容量大、掉电数据不丢 失、何种小以及可多次擦写等许多优点,正逐步取代其他半导体存储器件而广泛应用于便携电子产品中。在Flash存储器中使用文件系统,可将存储空间当作直 观的名称空间,不用在每次应用开发中都从头使用存储器,还可方便地利用标准接口同主系统通信。
一、文件系统:
文件系统(File system)指代贮存在计算机上的文件和目录。文件系统可以有不同的格式,叫做文件系统类型(file system types)。这些格式决定信息是如何被贮存为文件和目录。某些文件系统类型贮存重复数据,某些文件系统类型加快硬盘驱动器的存取速度。因此文件系统就是 操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。

上图是一个完整操作系统的文件系统构架,下文中将对文件系统中各个部件进行一定的介绍。

1.1 Linux 系统文件类型

● Linux系统中文件的类型包括:普通文件、目录文件、连接文件、设备文件、管道(FIFO)文件和套接字文件。
● 普通文件:是流式文件,
● 目录文件:用于表示表示和管理系统中的全部文件
● 连接文件:用于不同目录下文件的共享
● 设备文件:包括块设备文件和字符设备文件。块设备文件表示磁盘、关盘等,字符设备文件联系着按照字符进行操作的终端、键盘等设备。
● 管道(FIFO)文件:提供进程间通信的一种方式。
● 套接字(socket)文件和网络通信有关。

1.2 逻辑文件系统:


件的逻辑结构是用户可见结构,即从用户角度观察到的文件系统。可以分为两大类:字节流式的无结构文件和记录式有结构文件。由字节流(字节序列)组成的文件
是一种无结构文件或流式文件,不考虑文件内部的逻辑结构,只是简单地看作式一系列字节的序列,便于在文件任意位置添加内容。很多操作系统多采用这种形式,
如UNIX/Linux、DOS、Windows等。由记录组成的文件称为记录式文件,记录是这种文件的基本信息单位,记录式文件通常用于信息管理。

1.3 虚拟文件系统:

Linux在传统的逻辑文件系统的基础上,增加了一个虚拟文件系统(Virtual File System,VFS)的接口层,VFS在
最上层,管理各种逻辑文件系统,屏蔽了他们之间的差异,为用户命令、函数调用和内核其他部分提供访问文件和设备的统一接口,使得不同的逻辑文件系统按照同
样的模式呈现在使用者面前,对于用户来讲,觉察不到逻辑文件系统的差异,可以使用同样的命令来操作不同的逻辑文件系统所管理的文件,可以在他们之间自由地
复制文件。

二、文件系统:
嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而是使用Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置。因此在嵌入式系统很少使用PC上常用的文件系统,取而代之是根据其特点定制的文件系统。

2.1 嵌入式系统存储设备及其管理机制分析

构建适用于嵌入式系统的Linux文件系统,必然会涉及到两个关键点,一是文件系统类型的选择,它关系到文件系统的读写性能、尺寸大小;另一个就是根文件系统内容的选择,它关系到根文件系统所能提供的功能及尺寸大小。
   
    嵌入式设备中使用的存储器是像Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置。Flash是目前嵌入式系统中广泛采用的主流存储 器,它的 主要特点是按整体/扇区擦除和按字节编程,具有低功耗、高密度、小体积等优点。目前,Flash分为NOR, NAND两种类型。
   
   NOR型闪存可以直接读取芯片内储存的数据,因而速度比较快,但是价格较高。NOR型芯片,地址线与数据线分开,所以NOR型芯片可以像SRAM一样连 在数据线上,对NOR芯片可以“字”为基本单位操作,因此传输效率很高,应用程序可以直接在Flash内运行,不必再把代码读到系统RAM中运行。它与 SRAM的最大不同在于写操作需要经过擦除和写入两个过程。
   
NAND型闪存芯片共用地址线与数据线,内部数据以块为单位进行存储,直接将NAND芯片做启动芯片比较难。NAND闪存是连续存储介质,适合放大文件。 擦除NOR器件时是以64-128KB的块进行的,执行一个写入/擦除操作的时间为5s;擦除NAND器件是以8-32KB的块进行的,执行相同的操作最 多只需要4ms。

NAND Rash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。NOR flash占据了容量为1―16MB闪存市场的大部分,而NAND flash只是用在8―128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储。

寿命(耐用性),在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。

所有嵌入式系统的启动都至少需要使用某种形式的永久性存储设备,它们需要合适的驱动程序,当前在嵌入式Linux中有三种常用的块驱动程序可以选择。

Blkmem 驱动层 :

Blkmem驱动是为uclinux专门设计的,也是最早的一种块驱动程序之一,现在仍然有很多嵌入式Linux操作系统选用它作为块驱动程,尤其是在 uClinux中。它相对来说是最简单的,而且只支持建立在NOR型Flash和RAM中的根文件系统。使用Blkmem驱动,建立Flash分区配置比 较困难,这种驱动程序为Flash提供了一些基本擦除/写操作。
   
RAMdisk 驱动层 :

RAMdisk驱动层通常应用在标准Linux中无盘工作站的启动,对Flash存储器并不提供任何的直接支持, RAM disk就是在开机时,把一部分的内存虚拟成块设备,并且把之前所准备好的档案系统映像解压缩到该RAM disk环境中。当在Flash中放置一个压缩的文件系统,可以将文件系统解压到RAM,使用RAM disk驱动层支持一个保持在RAM中的文件系统。
   
MTD 驱动层 :
   
为了尽可能避免针对不同的技术使用不同的工具,以及为不同的的技术提供共同的能力,Linux内核纳入了MTD子系统(memory Technology Device)。它提供了一致且统一的接口,让底层的MTD芯片驱动程序无缝地与较高层接口组合在一起。
JFFS2, Cramfs, YAFFS等文件系统都可以被安装成MTD块设备。MT
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值