微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式Linux开发环境的搭建之:嵌入式开发环境的搭建

嵌入式Linux开发环境的搭建之:嵌入式开发环境的搭建

时间:08-13 来源:3721RD 点击:

在嵌入式Linux中,busybox是构造文件系统最常用的软件工具包,它被非常形象地称为嵌入式Linux系统中的"瑞士军刀",因为它将许多常用的Linux命令和工具结合到了一个单独的可执行程序(busybox)中。虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中已经足够了。busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用一种很巧妙的办法减少自己的体积:所有的命令都通过"插件"的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。例如最终生成的可执行文件为busybox,当为它建立一个符号链接ls的时候,就可以通过执行这个新命令实现列出目录的功能。采用单一执行文件的方式最大限度地共享了程序代码,甚至连文件头、内存中的程序控制块等其他系统资源都共享了,对于资源比较紧张的系统来说,真是最合适不过了。在busybox的编译过程中,可以非常方便地加减它的"插件",最后的符号链接也可以由编译系统自动生成。

下面用busybox构建FS2410开发板的cramfs文件系统。

首先从busybox网站下载busybox源码(本实例采用的busybox-1.0.0)并解压,接下来,根据实际需要进行busybox的配置。

[root@localhost fs2410]# tar jxvf busybox-1.00.tar.bz2

[root@localhost fs2410]# cd busybox-1.00

[root@localhost busybox-1.00]# make defconfig /* 首先进行默认配置 */

[root@localhost busybox-1.00]# make menuconfig

此时需要设置平台相关的交叉编译选项,操作步骤为:先选中"Build Options"项的"Do you want to build Busybox with a Cross Complier?"选项,然后将"Cross Compiler prefix"设置为"/usr/local/arm/3.3.2/bin/arm-linux-"(这是在实验主机中的交叉编译器的安装路径)。

图5.26 busybox配置画面

下一步编译并安装busybox。

[root@localhost busybox-1.00]# make

[root@localhost busybox-1.00]# make install PREFIX=/home/david/fs2410/cramfs

其中,PREFIX用于指定安装目录,如果不设置该选项,则默认在当前目录下创建_install目录。创建的安装目录的内容如下所示:

[root@localhost cramfs]# ls

bin linuxrc sbin usr

从此可知,使用busybox软件包所创建的文件系统还缺少很多东西。下面我们通过创建系统所需要的目录和文件来完善一下文件系统的内容。

[root@localhost cramfs]# mkdir mnt root var tmp proc boot etc lib

[root@localhost cramfs]# mkdir /var/{lock,log,mail,run,spool}

如果busybox是动态编译的(即在配置busybox时没选中静态编译),则把所需的交叉编译的动态链接库文件复制到lib目录中。

接下来,需要创建一些重要文件。首先要创建/etc/inittab和/etc/fstab文件。inittab是Linux启动之后第一个被访问的脚本文件,而fstab文件是定义了文件系统的各个"挂接点",需要与实际的系统相配合。接下来要创建用户和用户组文件。

以上用busybox构造了文件系统的内容,下面要创建cramfs文件系统映像文件。制作cramfs映像文件需要用到的工具是mkcramfs。此时可以采用两种方法,一种方法是使用我们所构建的文件系统(在目录"/home/david/fs2410/cramfs"中),另一种方法是在已经做好的cramfs映像文件的基础上进行适当的改动。下面的示例使用第二种方法,因为这个方法包含了第一种方法的所有步骤(假设已经做好的映像文件名为"fs2410.cramfs")。

首先用mount命令将映像文件挂载到一个目录下,打开该目录并查看其内容。

[root@localhost fs2410]# mkdir cramfs

[root@localhost fs2410]# mount fs2410.cramgs cramfs –o loop

[root@localhost fs2410]# ls cramfs

bin dev etc home lib linuxrc proc Qtopia ramdisk sbin testshell tmp usr var

因为cramfs文件系统是只读的,所以不能在这个挂载目录下直接进行修改,因此需要将文件系统中的内容复制到另一个目录中,具体操作如下所示:

[root@localhost fs2410]# mkdir backup_cramfs

[root@localhost fs2410]# tar cvf backup.cramfs.tar cramfs/

[root@localhost fs2410]# mv backup.cramfs.tar backup_cramfs/

[root@localhost fs2410]# umount cramfs

[root@localhost fs2410]# cd backup_cramfs

[root@localhost backup_cramfs]# tar zvf backup.cramfs.tar

[root@localhost backup_cramfs]# rm backup.cramfs.tar

此时我们就像用busybox所

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top