嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而使用flash闪存芯片,小型闪存等专为嵌入式系统设计的存储装置。根据不同目录存放的内容不同及文件属性,确定使用何种文件系统。
构建嵌入式linux文件系统2关键点:文件系统类型的选择,关系到文件系统的读写性能,尺寸大小;根文件系统内容的选择,关系到根文件系统所能提供的功能及尺寸大小。
flash的主要特点:按整体/扇区擦除和字节编程,具有低功耗、高密度、小体积特点。nor(以字为单位操作) ,nand(以块为单位)
Blkmem区东层
RAMdisk驱动层
MTD驱动层(memory technology device),提供一致且统一的接口,让底层的mtd芯片驱动程序无缝的与较高层次接口组合在一起。
JFFS2,Cramfs,YAFFS文件系统都可以被安装成mtd块设备。
MTD char 设备包括/dev/mtd0,dev/mtd1
MTD block 设备包括/dev/mtdblock0,/dev/mtdblock1
flash文件系统
传统的linux文件系统已经不时和应用在嵌入式系统中,像ext2fs文件系统是为像IDE那样的块设备设计的,这些设备的逻辑块为512个字节、1024字节大小,没有提供很好的扇区擦除支持,不支持损耗平衡,没有掉电保护....
Romfs
Cramfs 每一页被单独压缩,可以随机访问,以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有应用程序要求被考到ram中运行
ramfs/tmpfs
JFF2
YAFFS 专为嵌入式系统使用nand闪存而设计的一种日志型文件系统,自带nand芯片驱动
tmpfs
当 Linux 运行于嵌入式设备上时,该设备就成为功能齐全的单元,许多守护进程会在后台运行并生成许多日志消息。另外,所有内核日志记录机制,象 syslogd、dmesg 和 klogd,会在 /var 和 /tmp 目录下生成许多消息。由于这些进程产生了大量数据,所以允许将所有这些写操作都发生在闪存是不可取的。由于在重新引导时这些消息不需要持久存储,所以这个问题的解决方案是使用 tmpfs。
tmpfs 是基于内存的文件系统,它主要用于减少对系统的不必要的闪存写操作这一唯一目的。因为 tmpfs 驻留在 RAM 中,所以写/读/擦除的操作发生在 RAM 中而不是在闪存中。因此,日志消息写入 RAM 而不是闪存中,在重新引导时不会保留它们。tmpfs 还使用磁盘交换空间来存储,并且当为存储文件而请求页面时,使用虚拟内存(VM)子系统。
tmpfs 的优点包括:
动态文件系统大小 — 文件系统大小可以根据被复制、创建或删除的文件或目录的数量来缩放。使得能够最理想地使用内存。
速度 — 因为 tmpfs 驻留在 RAM,所以读和写几乎都是瞬时的。即使以交换的形式存储文件,I/O 操作的速度仍非常快