snifer

【原创】聊聊嵌入式系统的根文件系统

0
阅读(2258)

要使用Cramfs 或YAFFS 文件系统,离不开MTD 驱动程序层的支持。MTD(MemoryTechnology Device)是Linux 中的一个存储设备通用接口层, 虽然也可以建立在RAM 上,但它是专为基于Flash 的设备而设计的。MTD 包含特定Flash 芯片的驱动程序,并且越来越多的芯片驱动正被添加进来。用户要使用MTD,首先要选择适合自己系统的Flash 芯片驱动。Flash 芯片驱动向上层提供读、写、擦除等基本的Flash 操作方法。MTD 对这些操作进行封装后向用户层提供MTD char 和MTD block 类型的设备MTD char 类型的设备包括/dev/mtd0 , /dev/mtdI 等·它们提供对Flash 的原始字符访问;MTD block 类型的设备包括/dev/ mtdblock0、/dev/ mtdblockl 等MTD block 设备是将Flash 模拟成块设备。这样可以在这些模拟的块设备上创建像YAFFS 或Cramfs 等格式的文件系统。

另外,MTD 支持CFI (Common Flash Interface)接口。利用它可以在一块Flash 存储芯片上创建多个Flash 分区。每一个分区作为一个MTD block 设备,可以把系统软件和数据等分配到不同的分区上, 同时可以在不同的分区上采用不同的文件系统格式。

如果您熟悉Linux 操作系统环境,您应该熟悉Linux 下的根文件系统目录结构。文件

系统的顶层目录有其习惯的用法和目的,下边的列表显示了文件系统目录结构及其习惯用法。

目录 习惯用法

bin 用户命令所在目录

dev 硬件设备文件及其它特殊文件

etc 系统配置文件,包括启动文件等

home 多用户主目录

lib 链接库文件目录

mnt 装配点,用于装配临时文件系统或其他的文件系统

opt 附加的软件套件目录

proc 虚拟文件系统,用来显示内核及进程信息

root root 用户主目录

sbin 系统管理员命令目录

tmp 临时文件目录

usr 用户命令目录

var 监控程序和工具程序所存放的可变数据

对于用途单一的嵌入式系统,上边的一些用于多用户的目录可以省略,例如/home、/opt、/root 目录等。而/bin、/dev、/etc、/lib、/proc、/sbin 和/usr 目录,是几乎每个系统必备的目录,也是不可或缺的目录。

步骤

1. UP-NetARM2410-S Linux 文件系统构建方案:

1.1 根文件系统:

根文件系统是系统启动时挂载的第一个文件系统,其他的文件系统需要在跟文件系统目录中建立节点后再挂载。

UP-NetARM2410-S 有一个64M 大小的NANDFLASH,根文件系统和用户文件系统建立在该flash 的后大半部分。该flash 的前小半部分用来存放bootloader 和kernel 映像。根文件系统选用了Cramfs 文件系统格式。

1.2.用户YAFFS 文件系统:

由于Cramfs 为只读文件系统,为了得到可读写的文件系统,用户文件系统采用YAFFS格式。用户文件系统挂载于根文件系统下的/mnt/yaffs 目录。

1.3 临时文件系统:

为了避免频繁的读写操作对Flash 造成的伤害,系统对频繁的读写操作的文件夹采用了Ramfs 文件系统。根目录下的/var,/tmp 目录为Ramfs 临时文件系统的挂载点。

2 文件系统构建流程

在嵌人式Linux 系统中混合使用Cramfs、YAFFS 和Ramfs 三种文件系统的实现思路如

下:

配置内核:将内核对MTD,Cramfs,YAFFS 以及Ramfs 文件系统的支持功能编译进内核。划分Flash 分区:对Flash 物理空间进行分区,以便在不同的分区上存放不同的数据,采用不同的文件系统格式;必要时编写MAPS 文件。今修改系统脚本:在系统启动后利用脚本挂载文件系统。今创建文件系统镜像文件:利用工具生成文件系统镜像文件,并通过Flash 烧写工具将镜像文件烧写到Flash 物理空间。

这几个步骤的详细过程如下。

内核配置(运行make menuconfig)

(1) 配置MTD·要使用Cramfs 和YAFFS 文件系统,首先需要配置MTD.在Memory Technology

Devices (MTD) --->选项中选中如下选项:

<*> Memory Technology Device (MTD) support MTD 支持

[*] MTD partitioning support MTD 分区支持

<*> Direct char device access to MTD devices 字符设备的支持

<*> Caching block device access to MTD devices 块设备支持

NAND Flash Device Drivers ---> 对NAND Flash 的支持

<*> SMC Device Support

<*> Simple Block Device for Nand Flash(BON FS)

<*> SMC device on S3C2410 SMDK

[*] Use MTD From SMC

(2) 配置文件系统。

<*> Kernel automounter version 4 support (also supports v3) 文件系统自动挂载支

<*> DOS FAT fs supportt fs support 对DOS/FAT 文件系统的支持

<*> VFAT (Windows-95) fs support

<*> Yaffs filesystem on NAND 对YAFFS 文件系统的支持

<*> Compressed ROM file system support 对Cramfs 文件系统的支持

[*] Virtual memory file system support (former shm fs) 对temfs 文件系统的支持

<*> Simple RAM-based file system support

[*] /proc file system support 对/proc 和/dev 设备文件系统的支持

[*] /dev file system support (EXPERIMENTAL) /dev 设备文件系统支持

[*] Automatically mount at boot 启动时自动挂载的支持

[*] /dev/pts file system for Unix98 PTYs

Network File Systems ---> 对NFS 网络文件系统的支持

<*> NFS file system support

[*] Provide NFSv3 client support

就写这么多吧,下一次谢谢如何实现跟文件系统。