Chinaunix首页 | 论坛 | 博客

分类: LINUX

2011-09-05 09:56:43

4-1 编译Bootloader

对于本开发板,提供Bootloader为龙芯的PMON 

4-1-1 工具与依赖库安装

  1)建立交叉编译环境(第三章 3-3 建立交叉编译环境)。

2解压BSP/Bootloader/1b-pmon.tar.gz,并安装pmon编译依赖的工具。 

tar zxvf 1b-pmon.tar.gz

因为编译过程需要使用到工具pmoncfg,该工具1b-pmon/1b-pmon-bsp-pmon/tools/pmoncfg目录下,编译该工具又需要依赖下面的工具: 

apt-get install bison 

apt-get install flex 

现在可以编译pmoncfg工具了: 

cd 1b-pmon/1b-pmon-bsp-pmon/tools/pmoncfg

make 

编译完成后会在当前目录下生成pmoncfg,拷贝该工具至用户工具目录或交叉编译工具链的bin目录下。(推荐拷贝至交叉编译工具链目录中) 

cp pmoncfg /opt/gcc-3.4.6/bin

3库依赖 

pmon编译还依赖于下面的库,我们提前安装好。 

apt-get install xutils-dev 

 

4-1-2 配置与编译pmon 

解决库与工具依赖以后,现在可以开始编译pmon了: 

cd 1b-pmon/1b-pmon-bsp-pmon/zloader.ls1f

(1) 编译bin格式的pmon 

#make cfg all tgt=rom 

执行后就在当前目录下生成了gzrom.bin。 

(2) 编译elf格式的pmon 

#make cfg all tgt=ram 

执行后就在当前目录下生成了gzram

4-2 编译Linux内核

BSP提供2.6版本的Linux 内核源码,  Linux2.6.21,位于BSP/Linux_Kernel 目录。Linux 内核的编译分为两个步 骤,一、内核配置;二、内核编译。开发包默认提供一个配置文件,用户可以根据此配置文件对内核进行裁剪或者增 

加新的功能。下面以Linux2.6.21内核为例,描述整个Linux系统的配置编译过程: 

4-2-1 配置内核 

1 建立交叉编译环境(第三章 3-3 建立交叉编译环境)。

2进入Linux 源代码树根目录: 

       #tar zxf 1b-linux.tar.gz

     #cd 1b-linux-bsp-kernel

3一般采用make menuconfig 对内核进行配置: 

     #make menuconfig 

   详细参考《附录内核配置详细说明            

4-2-2 编译linux内核 

   #make 

        

最终生成的内核映像文件就在内核源代码的根目录下,名为vmlinux 

这里需要说明的是:如果您在linux2.6 上加了sdcard支持的话,则在启动linux2.6时必须在sdcard接口处接上sdcard,否则linux2.6在启动到检测sdcard时检测不到,便会停在那里,不能继续运行。如果没有加sdcard支持功能,则不需要在启动时插入sd卡。 

        该编译过程使用默认设置,如果你想改变kernel的某些配置,可以执行“make menuconfig”来进行定制。  

4-3 制作文件系统镜像

制作方法:先制作根文件系统“附录4  制作文件系统”,再利用不同的文件系统镜像制作工具对根文件系统目录制作成对应类型的文件系统镜像。

4-3-1 准备交叉编译工具及相应的镜像文件制作工具

Tools/mkfs_tool目录下:

1)  gcc-3.4.6.tgz                         编译kernel 的交叉编译工具) 

2)  mtd-snapshot-20050519.tar(制作编译控制mtd 分区及   jffs2文件系统工具) 

3)  yaffs2.tar.gz                      (制作yaffs2 文件系统工具) 

4)  cramfs-1.1.tar                      (制作cramfs 文件系统工具 ) 

5)  busybox-1.00.tar                 (制作rootfs 文件系统工具) 

4-3-2 镜像文件制作工具本机安装

在主机上编译安装镜像文件制作工具,无须交叉编译。可以使用命令安装,也可使用源码安装。

4-3-3 制作文件系统镜像文件

    cramfs: 

        #mkfs.cramfs rootfs rootfs-cramfs.img 

    

    yaffs2

        #mkyaffs2image rootfs rootfs-yaffs.img 

     jffs2

        #mkfs.jffs2 -d rootfs -o rootfs-jffs2.img -e 0x20000 --pad=0x1000000 -n

阅读(2130) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~