您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术嵌入式根文件系统的移植和制作详解 正文
嵌入式根文件系统的移植和制作详解

嵌入式根文件系统的移植和制作详解

点击数:7243 次   录入时间:03-04 11:50:53   整理:http://www.55dianzi.com   嵌入式系统-技术

    我们要移植的开发板的存储设备为Nandflash,我们可以用应用比较广泛的cramfs文件系统。

    二.移植准备

    1.目标板

    我们还是使用之前移植过程一直使用的开发板参数。

    2.软件准备

    (1)Busybox

    Busybox被形象的称为嵌入式linux系统中的瑞士军刀,可以从这个称呼中看到busybox是一个集多种功能于一身的东西,它将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中,已经足够了。

    Busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用一种很巧妙的办法减少自己的体积:所有的命令都通过“插件”的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。例如最终生成的可执行文件为busybox,当为它建立一个符号链接ls的时候,就可以通过执行这个新命令实现列目录的功能。采用单一执行文件的方式最大限度地共享了程序代码,甚至连文件头、内存中的程序控制块等其他操作系统资源都共享了,对于资源比较紧张的系统来说,真是最合适不过了。

    在busybox的编译过程中,可以非常方便地加减它的“插件”,最后的符号链接也可以由编译系统自动生成。

    编译busybox

    Busybox的编译过程与内核的编译过程很接近都是先make menuconfig进行配置,然后在make进行编译。

    【1】从http://www.busybox.net/downloads/下载busybox工具。这里我们选择busybox-1.13.4.tar.bz2

    【2】解压busybox-1.13.4.tar.bz2使用命令

    tar jxvf busybox-1.13.4.tar.bz2

    【3】进入busybox目录,修改Makefile 在164行 CROSS_COMPILE=arm-linux-

     

     

    【4】Make menuconfig进行配置,可以选择静态编译,如果是动态编译的话要拷贝相应的库文件,默认配置保存即可。

     

     

    【5】make all install

    这是会在busybox目录下生成_install文件夹。

    (2)文件系统打包工具

    【1】从http://prdownloads.sourceforge.net/cramfs/下载cramfs工具。

    【2】解压cramfs-1.1.tar.gz使用命令:tar zxvf cramfs-1.1.tar.gz

    【3】进入cramfs工具的根目录执行make。

    【4】Make后在cramfs工具的根目录中就会生成一个mkcramfs文件,这个就是我们需要的工具。

    三.制作过程

    1.建立根文件系统目录

    就是之前busybox生成的_install目录 cd …/_install

    2.创建各种必要的系统文件目录。

    mkdir dev lib tmp proc

    3.创建设备文件。

    cd dev

    mknod fb0 c 29 0 建立framebuffer设备文件

    mknod ts0 c 13 128 建立触摸屏设备文件

    mknod console c 5 1

    mknod tty0 c 4 0

    mknod tty1 c 4 1

    mknod tty2 c 4 2

    mknod tty3 c 4 3

    mknod tty4 c 4 4



www.55dianzi.com

    4.添加必要的库文件,由于之前没有选择静态编译busybox,这里要拷贝相应的库文件

    cd lib

    cp –arf …/arm-linux/lib/* .

    5.根据自己需要添加应用程序

    这里我们编写一个简单的应用程序打印一句问候语,程序代码如下:

    #include

    void main()

    {

    printf(“Hello Worldn”);

    }

    注意编译时要使用arm-linux-gCC,由于之前我们把编译器的库文件全部进行拷贝,可以直接动态编译。生成的可执行文件hello放入tmp文件夹。使用的命令:

    rm-linux-gcc hello.c –o hello

    cp –arf …/_install/tmp/

    6.打包

    mkcramfs _install rootfs

    四.烧写过程

    我们采用的烧写方法和烧写内核的方法一样内核的烧,我们采用tftp方式,用网线将目标板和pc机连接起来,配置好目标板的网络参数,主要是serverip、ipaddr。

    首先将rootfs下载到内存中:#tftp 30008000 rootfs

    按照之前内核的nandflash分区进行烧写,将内存中的文件系统烧写到flash中:

    #nand erase 500000 3b00000

    #nand write 30008000 500000 3b00000

    重启uboot使其加载文件系统。

    可以看到内核启动,不在出现panIC,这时会提示回车,回车后进入命令行,我们可以使用一些linux的常用命令,如:ls、cd、vi等。

    如下图所示:

     

     

    注意:我们这里使用的是PUTTY串口显示软件,如果用之前的DNW查看串口信息,会出现下面的错误:

     

     

    可以看到第一个目录 [1;34mbin [0m

    会发现出现的信息除了bin目录外还有其他的内容,这并不是文件系统的问题只是DNW这款软件并不支持这些表示色彩的附加信息,换成PUTTY可以正常显示了。

    我们可以运行一下我们自己的应用程序hello:./hello

    可以看到打印信息Hello World如下图所示:

     



上一页  [1] [2] 


本文关键字:嵌入式  制作  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术

《嵌入式根文件系统的移植和制作详解》相关文章>>>