嵌入式文件系统选择
在进行嵌入式系统开发过程中,文件系统的选择和制作与硬件条件息息相关。根据硬件(Flash 或 RAM)的特性来指定相应的文件系统,能够充分利用硬件资源及提高系统效率。因为目前大部分的嵌入式文件系统都是建立在 Flash 之上,下面介绍 Flash 硬件方案比较与 Flash 的特点。
1. Flash硬件方案比较
- Flash(闪存)是嵌入式系统的主要存储介质,其特点为写操作只能把对应位置的 1修改为 0,而不能把 0 修改为 1。因此,对于 Flash 的擦除操作是把对应存储块的内容恢复为 1。
- 一般情况下, 向 Flash 写入内容时, 首先必须擦除对应的存储区间, 擦除是以块(block)为单位进行。
- 闪存技术主要有 NOR 和 NAND 两种技术。 Flash 存储器的擦写次数是有限的,NAND 闪存设备有特殊的硬件接口和读写时序。因此,必须根据 Flash 硬件特性设计符合应用要求的文件系统。
- 选择硬件方案的原则: 数据存储(如用户文件系统等)用 NAND Flash,代码(如引导程序和根文件系统等)存储采用 NOR Flash。 为了获得最高的性价比,设计师在速度、存储密度、成本、开发周期等多种因素之间进行权衡。 以手机的存储解决方案为例: NOR Flash 采用支持 XIP(eXecute In Place,芯片内执行)技术能够直接运行操作系统,速度快,既简化了设计,又降低了成本,所以许多手机硬件方案都采用 NOR Flash+RAM。
- NOR Flash和NAND Flash比较:
- NOR Flash:读取简单快速,可直接在上面允许程序(即支持XIP),但存储密度低,接口复杂,成本高。
- NAND Flash:存储密度高,接口简单,成本低;但使用起来需要专门的驱动程序,读取数据复杂较慢,且不可片内执行,坏扇区较多,需要纠错程序。
磁 盘 类 型 | NOR Flash | NAND Flash |
---|---|---|
使用难易程度 | 接口时序同 SRAM,易使用 | 地址/数据线复用,数据位较窄 |
读速度 | 读取速度比较快 | 读取速度比较慢 |
擦除速度 | 擦除速度慢,以 64KB~128KB 的块为单位 | 写(编程)和擦除操作的速率快, 以8KB~32KB 的块为单位 |
写速度 | 写入速度慢(因为一般要先擦除) | 写入速度快 |
应用场合 | 随机存取速度较快, 支持 XIP(eXecute In Place,芯片内执行),适用于代码存储。在嵌入式系统中,常用于存放引导程序、根文件系统等 | 顺序读取速度较快,随机存取速度慢,适用于数据存储(如大容量的多媒体应用)。用于嵌入式系统中时,通常存放用户文件系统等 |
存储密度 | 单片容量较小, 1KB~32MB | 单片容量较大, 8MB~128MB,提高了单元密度 |
使用成本 | 成本高 | 成本低 |
使用寿命 | NOR 的擦写次数为十万次 | NAND 闪存中每个块的最大擦写次数为一百万次 |
软件支持 | 在 NOR 器件上运行代码时不需要其他驱动程序支持 | 在 NAND 器件上进行同样操作时, 通常需要驱动程序,也就是内存技术驱动程序(MTD), NAND 和 NOR 器件在进行写入和擦除操作时都需要 MTD 驱动程序支持 |
2. 嵌入式文件系统的分层结构
- 根据系统需求、 采用的存储设备的硬件特性、文件系统不同的特点等,采用不同的文件系统或者文件系统组合。 在嵌入式 Linux 应用中,主要的存储设备为 RAM(DRAM, SDRAM)和 ROM(常采用 Flash 存储器),常见的基于存储设备的文件系统类型包括 Ramdisk、 JFFS2、 YAFFS、 Cramfs、 Romfs 和 Ramfs/Tmpfs 等。
- 嵌入式文件系统主要有基于 Flash 的文件系统和基于 RAM 的文件系统。下面给出 Linux 系统下文件系统的分层结构
文件系统。下面给出 Linux 系统下文件系统的分层结构