新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 对ROMFS文件系统的分析和改进

对ROMFS文件系统的分析和改进

作者:时间:2012-03-26来源:网络收藏

针对这点我们可以做一些适当的改进工作,的基本结构十分紧凑,能够改动的范围比较有限。为了尽可能保留原有代码的结构,我们没有在 的文件结构中添加新字段,只是利用了文件名的填充字段作为对文件寻址的补充。在构造时在实际文件名后加上1个字节作为文件名的附加段,实际文件名加上附加段后写入作为该文件的文件名。附加段的前4位用来作为文件首地址的低4位。这样如果文件名不是16个字节整数倍则可以利用对文件名的填充字节,不会额外占用空间;如果文件名长度刚好为16字节的整数倍,那么加上一个字节的附加段后必须再填充15个字节以符合文件名保持16字节对齐的要求。这会浪费15个字节的空间,但文件名本身恰好满足16字节对齐的机会并不大,从概率角度讲只有1/16,因此是可以接受的。修改后的文件结构如下:

在对文件寻址时,将next filehdr 字段的前28位和additional 字段的前4位合并起来作为下一个文件头起始地址,这样文件的寻址可以达到32位,ROMFS能够容纳的最大文件可以达到4G。

5.2 试验分析:

使用ROMFS生成一个。我们使用普通的Linux操作系统,内核版本为2.4.20-8,编译时选择支持ROMFS文件系统。至于romfs工具和源代码,可以从http://romfs.sourceforge.net得到。我们使用修改后的代码,同时对Linux中ROMFS的代码也要进行适当的修改,并重新编译内核。试验可以建立一个简单的目录FSROOT,目录结构如下:

FSROOT

FILE1

FILE2

SUBDIR1

FILE3

FILE1 和FILE2 大小为100M,FILE3大小为512M

生成romfs的命令如下(在当前目录下):genromfs -f romfs.bin –d FSROOT/

程序会根据目录FSROOT内容生成一个名为 romfs.bin的映像文件。选择一个挂载点,如/home目录,将生成的romfs.bin挂载到该目录下,命令为 mount –t romfs romfs.bin /home,将指定的映像文件挂载到/home目录下。可以用ls命令查看该目录。

[root@linuxserver home]# ls

[root@linuxserver home]# DIR1 FILE1 FILE2

[root@linuxserver home]# cd DIR1

[root@linuxserver DIR1]# ls

[root@linuxserver DIR1]# FILE3

可以看到新修改的ROMFS文件系统工作的很好,能够容纳超过256M的文件,达到了我们预期的目的。

6.结束语

ROMFS是众多应用于嵌入式的文件系统之一,目前Linux和ucLinux都支持ROMFS。本文从数据的组织方式,基本数据结构,重要的操作的实现等方面详细分析了ROMFS的原理。同时指出了ROMFS一些局限性并做了一些改进工作。但是ROMFS本身的设计使其难以被修改为可擦写的文件系统,如果要在文件系统中提供可擦写功能,可以使用其它支持读写的嵌入式文件系统(比如JFFS2)以适应需要对闪存进行读写的应用。

本文的创新点在于对ROMFS 文件系统中文件寻址方法的改进,使得ROMFS可以支持更大的文件,满足了嵌入式设备中对存储系统更高的需求。

参考文献:

[1] 杨途军,郑明.嵌入式文件系统在触摸屏中的应用[J].微计算机信息.2005,5:100-101

[2] 孙建恒.嵌入式系统应用研究及实例[J].微计算机信息,2004,6:65-66

[3] 美 Moshe Bar《Linux文件系统》清华大学出版社

[4] Jonathan Corbet,Alessandro Rubini Greg Kroah-Hartman《Linux设备驱动程序》 O’REILLY 中国电力出版社

[5] Linux Kernel 2.4.20-8 Source Code[CP/OL].http://lxr.1inux. no/source/fs

[6] Janos Farkas ,Jakub Jelinek Genromfs 源代码. http://romfs.sourceforge.net

[7] 毛德操、胡希明,《linux内核源代码情景分析》浙江大学出版社


上一页 1 2 3 4 下一页

关键词: ROMFS 文件系统

评论


相关推荐

技术专区

关闭