电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 嵌入式系统/ARM技术 > 详细信息
嵌入式系统/ARM技术:基于s3c2410的CramFS根文件系统的移植
来源:   时间: 2008-1-30 2:51:03    

  根文件系统是构建一个 uCLinux嵌入式系统的重要组成部分。目前嵌入式系统可以选择的根文件系统有:Romfs、CramFS、Ramfs、Jffs2、Ext2等等,本系统采用 CramFS作为uCLinux嵌入式系统的只读根文件系统。本文讨论了CramFS文件系统的特点,并详细的说明了Nor Flash上建立一个uClinux的Cramfs根文件系统的一般步骤。

  一、引言

  随着电子产业的不断发展,基于 ARM技术的系统设计和开发平台越来越多地在控制类、消费类、通信类等电子产品中广泛应用。从软件角度上看,构建基于ARM技术的uClinux系统要涉及到引导加载程序、Linux 内核、文件系统、用户应用程序几部分的设计。

  文件系统是操作系统中用来管理用户文件的内核软件层。文件可能存在于磁盘、网络或者是一些虚拟的文件。文件系统包括根文件系统和建立于内存设备之上文件系统。根文件系统是uClinux系统的核心部分,包含系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读写结果的区域。由于嵌入式设备中Flash资源很紧张,如何有效地使用有限的存储空间是嵌入式开发者必须考虑的,合适的文件系统格式是解决这一问题的关键所在。本文讨论了只读压缩CramFS文件系统的特点,并详细的说明了Nor Flash上建立一个uClinux的Cramfs根文件系统的一般步骤。

  二、开发环境简介

  本系统采用的是宿主机+目标板的开发模式,宿主机为PC+Cygwin1.5.1 ,目标板为采用203MHz的ARM920T内核的处理器S3C2410x+uClinux, uClinux版本为2.4.18。在宿主机上将uClinux和应用程序编译后,下载到目标板的Nor Flash中,启动运行。使用的SDRAM是2片16MB的HY57v561620,工作在16bit双字节模式下;使用的Flash是2片AMD AM29LV160DB,大小为2M字节,工作在16bit双字节模式下。在开发的时候,将Boot Loader烧入AM29LV160DB的1-5扇区;将Linux内核映象文件zImage烧入6-17扇区;将CramFS文件系统映象文件烧入18-35扇区。

  三、 Cramfs文件系统简介

  CramFS(Compressed Rom File System)是Linux Torvalds在Transmeta任职时,所参与开发的文件系统。它是针对Linux内核2.4之后的版本所设计的一种新型只读文件系统,采用了zlib 压缩,压缩比一般可以达到1:2,但仍可以作到高效的随机读取,Linux系统中,通常把不需要经常修改的目录压缩存放,并在系统引导的时候再将压缩文件解开。因为Cramfs不会影响系统的读取文件的速度,而且是一个高度压缩的文件系统。因此非常广泛应用于嵌入式系统中。

  在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把Flash上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在Flash中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。

  使用CramFS文件系统就是一种解决这个问题的方式。CramFS是一个压缩格式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在CramFS中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。CramFS中的解压缩以及解压缩之后的内存中数据存放位置都是由CramFS文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。

  一个完整的cramfs文件系统通常包含以下几个目录:

  /linuxrc 启动脚本文件,由Boot Loader核心命令行确定init=/linuxrc,加载/etc目录为ramfs,(cramfs为只读文件系统),拷贝/mnt/etc到/etc,配置文件目录重新加载根文件系统和/etc文件系统,执行init进程。

  /bin 引导启动所需的命令或用户可能用的命令。

  /sbin 系统管理员服务程序,其中最重要的是供内核初始化之后执行的/sbin/init进程,系统启动时由init解释并运行/etc/inittab, inittab将指导int去调用一个系统初始化程序/etc/init.d/rcS。

  /etc 特定机器的配置文件以及用户数据存放目录,其中的所有内容是在内核运行后,由linuxrc 从/mnt/etc拷贝得到的。

  /lib 文件系统上的程序所需的动态库。

  /dev 驱动程序存放目录,可以在这里存放自己编写的驱动程序。

  /usr 用于存放用户程序和配置文件的目录,可以根据需要进行设置。目录下的/usr/etc/rc.local执行本地所需要的初始化,如安装核心模块,进行网络,运行应用程序,启动图形界面等。/etc/modules.conf在系统运行期间自动加载模块。

  /mnt 用于设备安装的目录。/mnt/etc/init.d/rcS完成各个文件系统的Mount,执行/usr/etc/rc.local;通过rcS可以调动dhcp程序配置网络。rcS执行完以后,就会打开Shell。

  /proc 系统状态文件目录, 目录中的文件可以用于访问有关内核的状态、计算机的属性、正在运行的进程的状态等信息。尽管 /proc 中的文件是虚拟的,但它们仍可以使用任何文件编辑器或像'more', 'less'或 'cat'这样的程序来查看。

  四、 Cramfs文件系统的移植过程

  文件系统是紧跟uCLinux内核放置,由内核加载,主要存放用户应用程序和配置信息。CramFS文件系统的基本组成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、链接库、图形界面程序和用户应用程序等。本节将介绍移植CramFS文件系统的具体操作方法。

  4.1、在内核中加入对CramFS文件系统支持

  想要在系统中提供CramFS的能力,我们必须要在编辑uCliunx内核时把支持CramFS的选项加入。尽管uCLinux可以以模块的形式加载各种类型的设备驱动上,但我们选择直接把设备驱动及CramFS文件系统静态地编译进内核中。

  在Memory Technology Devices (MTD)选项中进行配置:

  Memory Technology Device (MTD) support[Y/m/n/?] Y 内存技术设备支持

  MTD partitioning support [Y/m/n/?] Y 支持MTD分区

  Direct char device access to MTD devices[Y/m/n/?] Y MTD字符设备直接访问

  Caching block device access to MTD devices[Y/m/n/?] Y MTD块设备缓冲访问

  在File Systems选项中进行配置:

  Compressed ROM file system support [Y/m/n/?] Y ROM文件系统的支持

  完成上述修改并编译后,完成uCliunx内核对CramFS文件系统的支持。

  4.2、拷贝需要加入的其他文件和链接库

  (1)、Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先开发的。Busybox 编译出一个单个的独立执行程序,就叫做 busybox。但是它可以根据配置,执行 ash shell的功能,以及几十个各种小应用程序的功能。这其中包括有一个迷你的vi编辑器,系统不可或缺的/sbin/init程序,以及其他诸如 ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat等等。而所有这一切功能却只有区区1M左右的大小,Busybox已经成为构建嵌入式Linux文件系统的必备软件。

  首先我们从官方网站(http://www.busybox.org/)上下载BusyBox 的版本1.0.0。

  #tar xvfz busybox-1.00.tar.gz
  #cd busybox-1.00
  #make menuconfig

  下面是需要编译进busybox的功能选项,其他的可以根据需要自选。

  Build Options
  [*] Build BusyBox as a static binary (no shared libs)

  这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库,否则必需要其他库文件才能运行,在单个linux内核不能使他正常工作。
[*] Do you want to build BusyBox with a Cross Compiler
选择你自己定义的交叉编译环境。

  Installation Options
  [*] don’t use /usr

  这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖系统原有的命令。选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接。

  其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。编译BusyBox,如果能成功编译BusyBox,就将编译好的busybox 复制到CramFS文件系统的/bin 目录下,然后创建常用命令的建立快捷方式。建立快捷方式很简单,只要建一个符号链接,比方ln -s /bin/busybox /bin/ls,那么,执行/bin/ls的时候,busybox 就会执行ls的功能,也会按照ls的方式处理命令行参数。

  (2)、拷贝一些管理员控制程序到/sbin目录下,最重要的就是要包含一个init命令,可以使用busybox提供的系统工具。比如 ln -s /bin/busybox /sbin/init,这样我们就有了系统运行不可或缺的 /sbin/init 程序了。

  (3)、拷贝应用程序运行时所需要的库到/lib,库文件可以从PC机上的交叉编译工具安装目录下拷贝,如libc-2.2.2.so、libcryt-2.2.2.so、libm-2.2.2.so、libutil-2.2.2.so等,为部分相应库建立快捷方式,提供一些应用程序按快捷方式名称调用。值得注意的是C库要采用C库的版本glibc, glibc位于/lib/libc.so.6。

  4.3 、利用mkcramfs工具生成cramfs压缩文件系统
  
  一般情况下都要把已经规划好的目录结构转换成一个映象文件,创建Cramfs文件系统需要mkcramfs工具,mkcramfs能把相应的Cramfs目录树压缩成为单一的映象文件,这个映象文件就是我们需要移植的文件系统。Mkcramfs的命令格式为:

  Mkcramfs [-h] [--e edition] [-I file] [-n name] DirName OutFile

  #mkcramfs root cramfs.Img

  用以上的命令就可以生成我们需要的cramfs文件系统映象文件,我们可以发现原本为2.36Mbytes大小的目录内容,被压缩成一个1.08Mbytes的CramFS文件系统映象文件, 通过vivi或测试程序将其写入Flash中就可以验证是否移植成功。

  五、小结

       CramFS是一个压缩格式的文件系统,如果系统存储资源比较紧张的话,采用CramFS作为嵌入式Linux系统的根文件系统是一个不错的选择。

相关信息
发表评论
打印本页 关闭本页
泰克推出业内首个手持式RF干扰查找工具
    泰克公司日前宣布,在其NetTek系列中增加最新产品-RF Scout干扰查找器。据称,这一产品在一个坚固耐用的手持式平台中为查找RF干扰、检查信号质量提供了所有必要的工具,使得网络性能规划和优化团队能够在随时可以用于现场的工具中,探索、发现、分析和存档干扰或其它信号质量问题。   转向速度更高的无线数据业务的发展趋势,正推动着对更干净的RF信号的需求,因为高速数据速率依...
>>详细内容
高性能射频调制器促成多载波通信发送器设计(上)
    蜂窝发送器的设计依赖于能够保持高线性度和高动态范围的高性能RF调制器。随着多载波发送器的增长,RF调制器必须保持低噪声基底,从而提供较高的性能指标,这通常取决于二阶或三阶互调。本文讨论了这些需求,并说明MAX2022能够满足典型四载波WCDMA发送架构的要求。 概述   现有的蜂窝基站大多采用超外差结构发送或接收射频信号。这种结构需要两次变频或更多的上、下变频级、中间滤...
>>详细内容
高性能射频调制器促成多载波通信发送器设计(下)
    蜂窝发送器的设计依赖于能够保持高线性度和高动态范围的高性能RF调制器。随着多载波发送器的增长,RF调制器必须保持低噪声基底,从而提供较高的性能指标,这通常取决于二阶或三阶互调。本文讨论了这些需求,并说明MAX2022能够满足典型四载波WCDMA发送架构的要求。 工作在UMTS波段的多载波WCDMA   多项性能指标综合体现出的优势在于多载波的互调特性。从本文可以看出,MAX2022能够...
>>详细内容
CSR蓝牙技术帮助诺基亚推出高性能蓝牙耳机
    目前已经上市的新款诺基亚蓝牙耳机BH-200采用了CSR公司的BlueCore3-Audio Flash (BlueCore3-AF),其语音通讯完全符合蓝牙v1.2技术规范。诺基亚蓝牙耳机BH-200是采用HFP1.5免提协议的第一款耳机,也是诺基亚公司采用CSR BlueCore技术并且已经上市的高端无线耳机系列之一。   诺基亚蓝牙耳机BH-200仅重14克,尺寸为49x22x21毫米,支持5小时30分钟通话时间及150小时待机时间。该款耳...
>>详细内容
PC-ISDN的接口设计
    摘要:提出了PC与基本速率ISDN连接的软硬件设计方案。介绍了基于PC总线、80C188微处理器、Mitel公司的ISDN通信器件以及IDT公司的EPLD逻辑硬件的ISDN卡的硬件结构,同时对软件的结构、任务和模块以及实现方案也作了说明。   关键词:PC-ISDN   ISDN 数据通信 Intel 80C188   1 系统设计考虑  计算机的普及及促进了远程通信的发展。然而1M字节大小的文件经过目前最快的V.34  ...
>>详细内容
德州仪器 Aureus™ 数字音频解决方案
  德州仪器Aureus™数字音频解决方案助力哈曼卡顿、安桥与雅马哈家庭娱乐新品获奖的音频DSP帮助OEM厂商为客户实现精彩特性。   日前,德州仪器(TI)宣布三家领先的音视频(A/V)接收机制造商(哈曼卡顿、安桥与雅马哈)已采用获奖的Aureus™系列高性能音频DSP产品,并应用在多款新一代A/V接收机与数字媒体中心产品中,从而为创新型家庭娱乐应用带来质量出众的音频体验。   TI高性...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com