欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

嵌入式文件系统

程序员文章站 2022-07-12 10:19:15
...

文件系统的概念

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。

操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

文件系统由三部分组成:

  1. 文件系统的接口 用于管理文件的基础编程接口
  2. 对对象操纵和管理的软件集 使用基础编程接口实现的具有多种复杂功能的软件
  3. 对象及属性 文件对象的存储结构以及保存形式(存储器的物理介质)

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。

具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

嵌入式文件系统

嵌入式文件系统,是嵌入式系统中使用的文件系统,功能与通用的文件系统一样。

嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。

嵌入式系统具有一些通用计算机所不具有的一些特点: 嵌入式系统的特点包括:系统内核小、专用性强、系统精简、实时性等。具体而言,它主要有如下八个特点:

  1. 可裁剪性。支持开放性和可伸缩性的体系结构。
  2. 强实时性。EOS实时性一般较强,可用于各种设备控制中。
  3. 统一的接口。提供设备统一的驱动接口。
  4. 操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用;提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。
  5. 强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。
  6. 固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。
  7. 更好的硬件适应性。也就是良好的移植性。
  8. 嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。

针对以上特点,嵌入式系统中使用的文件系统,需要专门根据不同情况,进行更加优化的设计,以确保文件数据的安全与可靠。

嵌入式文件系统特点

嵌入式文件系统虽然继承了通用文件系统的组织结构,但由于功能和作用与普通桌面操作系统的文件系统不同,同时又有自己的特点

  1. 在嵌入式系统中,文件系统是嵌入式系统的一个组成模块。它是作为系统的一个可加载选项提供给用户,由用户决定是否需要加载它。
  2. 需要满足结构紧凑、代码量小的特点,合理地对文件存储器进行管理。嵌入式系统中的文件存储器空间相对不会太大,必须对其进行高效的管理,以避免对资源的浪费。
  3. 使用简单便捷。用户只要知道文件名、文件路径等简单信息特征,就可以方便地对文件进行操作,不必知道文件在具体物理存储空间的运作过程。
  4. 安全可靠。对文件、数据的保护是文件系统的基本功能。嵌入式系统的应用通常要求系统必须有较高的可靠性。
  5. 支持多种存储设备、可伸缩、可剪裁、可移植等特点。嵌入式应用的领域相当广泛,其采用的硬件环境和操作系统也各不相同。为了适应这种差异性,文件系统应降低对具体硬件环境和操作系统的依赖,具备良好的可移植性。

#小型Flash文件系统 嵌入式文件系统存储介质一般是Flash芯片,常用的嵌入式文件系统比较出名的有Cramfs、JFFS、Yaffs三种文件系统。

Flash芯片是嵌入式系统中广泛采用的主流存储器,主要特点是按整体/扇区擦除和按字节编程、低功耗、高密度、小体积。

1. JFFS2

JFFS2 是 RedHat 的 David Woodhouse 在 JFFS 基础上改进的文件系统,是用于微型嵌入式设备的原始闪存芯片的实际文件系统。 JFFS2 文件系统是日志结构化的可读写的文件系统。

JFFS2 的优缺点如下: 1. 优点 使用了压缩的文件格式。最重要的特性是可读写操作。 2. 缺点 JFFS2 文件系统挂载时需要扫描整个 JFFS2 文件系统,因此当 JFFS2 文件系统分区增大时,挂载时间也会相应的变长。使用JFFS2 格式可能带来少量的 Flash 空间的浪费。这主要是由于日志文件的过度开销和用于回收系统的无用存储单元,浪费的空间大小大致是若干个数据段。 JFFS2 的另一缺点是当文件系统已满或接近满时, JFFS2 运行速度会迅速降低。这是因为垃圾收集的问题。 加载 JFFS2 文件系统时的步骤如下:

  1. 扫描整个芯片,对日志节点进行校验,并且将日志节点全部装入内存缓存。
  2. 对所有日志节点进行整理,抽取有效的节点并整理出文件目录信息。
  3. 找出文件系统中无效节点并且将它们删除。
  4. 最后整理内存中的信息,将加载到缓存中的无效节点释放。

由此可以看出虽然这样能有效地提高系统的可靠性,但是在一定程度上降低了系统的速度。尤其对于较大的闪存芯片,加载过程会更慢。 所以JFFS2比较适用于容量较小的Flash,例如路由器等容量在2MB~64MB级别的存储器中使用的比较多

JFFS2 的制作方法为:

hisilicon$ mkfs.jffs2 -d ./rootfs -l -e 0x20000 -o jffs2-root.img

参数说明

  • d:指定根文件系统
  • l:little-endian 小端模式
  • e:Flash 的块大小
  • o:输出映像文件

2. YAFFS2

YAFFS2 是专门为 NAND Flash 设计的嵌入式文件系统。它是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整性的影响。

YAFFS2 的优缺点如下:

  • 优点
  1. 专门针对 NAND Flash,软件结构得到优化,速度快。
  2. 使用硬件的 spare area 区域存储文件组织信息,启动时只需扫描组织信息,启动比较快。
  3. 采用多策略垃圾回收算法,能够提高垃圾回收的效率和公平性,达到损耗平衡的目的。
  • 缺点 没有采用压缩的文件格式。当包含的内容相同时, YAFFS2 镜像文件要比 jffs2 镜像文件大。

3. SquashFS

SquashFS 是另一种可用于 flash 设备的 Linux 只读文件系统。 SquashFS 具有极高的压缩率,数据(data),节点(inode)和目录(directories)都被压缩。常用于存储介质很有限的场景。

SquashFS 保存了全部的 32 位 UID/GIDS 和文件的创建时间,支持多达 4G 的文件系统, SquashFS 使用简单,响应速度快。

SquashFS 是一种新的文件系统,它对 CramFS 的特点作了进一步的改进,并突破了CramFS 的一些限制。其优点如下:

  1. SquashFS 具有更高的压缩率
  2. SquashFS 的响应速度更快
  3. CramFS 文件系统支持的最大文件为 16M,而 SquashFS 多达 4G
  4. CramFS 文件系统大小限制略大于 256M,而 SquashFS 多达 4G

转载于:https://my.oschina.net/lvsin/blog/1842353