搭建mips平台编译环境及生成相关

本文详细介绍了在MIPS平台上搭建编译环境的过程,包括工具链配置、Bootloader编译、文件系统建立及内核编译等步骤,并提供了将编译好的代码烧录到目标板的具体指令。
一、搭建mips平台编译环境及生成相关
准备工作
1、在home目录下建立一个mute目录,用于项目开发相关开发的一个目录
2、拷贝西格码公司提供的SMP8634平台相关开发源码包到刚才新建的目录mute下。
第一步:建立编译环境
1、在mute目录下解压smp86xx_toolchain_2.8.0.1.tar.bz2 包
debian:/home/mute# tar jxvf smp86xx_toolchain_2.8.0.1.tar.bz2
2、进入解压后的目录
debian:/home/mute# cd smp86xx_toolchain_2.8.0.1
3、拷贝以下源码包到dl目录下(说明:)
binutils-2.15.91.0.2.tar.bz2  gcc-3.4.2.tar.bz2  linux-libc-headers-2.6.11.0.tar.bz2
ccache-2.3.tar.gz             gdb-6.5.tar.bz2    uClibc-0.9.27.tar.bz2
debian:/home/mute/smp86xx_toolchain_2.8.0.1# cp -ar /8634/smp86xx_toolchain_2.8.0.1/dl/* ./dl/
4、配置交叉工具链
debian:/home/mute/smp86xx_toolchain_2.8.0.1# make menuconfig

5、编译
debian:/home/mute/smp86xx_toolchain_2.8.0.1# make
debian:/home/mute/smp86xx_toolchain_2.8.0.1# source toolchain-path.env
第二步:编译bootloader
1、
debian:/home/mute#tar zxvf CPU_KEYS_SMP8634_xosMc0-1.tar.gz
debian:/home/mute# cd CPU_KEYS_SMP8634_xosMc0-1
debian:/home/mute/CPU_KEYS_SMP8634_xosMc0-1# source CPU_KEYS.env
debian:/home/mute# tar jxvf smp86xx_boot_loader_2.8.0.1.tar.bz2
debian:/home/mute# cd smp86xx_boot_loader_2.8.0.1
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# ls
Makefile  README  inc.gnxnv.Makefile  inc.yamon.Makefile  inc.zboot.Makefile  pf  tools  zboot
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# ln -s tools/genxenv/configs/852-E2.config  xenv.config
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# make zboot
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# mkdir sources
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# cp /8634/smp86xx_boot_loader_2.8.0.1/sources/yamon-src-02.06.tar.gz  sources/
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# ls /8634/smp86xx_boot_loader_2.8.0.1/reference/
eBIOS_v1.5_LED  eBIOS_v1.5_LED.tar.gz
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# mkdir reference
debian:/home/mute/smp86xx_boot_loader_2.8.0.1# cp /8634/smp86xx_boot_loader_2.8.0.1/reference/eBIOS_v1.5_LED.tar.gz  reference/

debian:/home/mute/smp86xx_boot_loader_2.8.0.1# make yamon

debian:/home/mute/smp86xx_boot_loader_2.8.0.1# cp bin/* /tftpboot/mute/

第三步:建立文件系统
debian:/home/mute# tar jxvf smp86xx_rootfs_2.8.0.1.tar.bz2
debian:/home/mute# cd smp86xx_rootfs_2.8.0.1
debian:/home/mute/smp86xx_rootfs_2.8.0.1# ls
Config.in  Makefile  README  package  target  test_if_zlib_is_available.sh  toolchain  tools  xbin
debian:/home/mute/smp86xx_rootfs_2.8.0.1# mkdir dl
debian:/home/mute/smp86xx_rootfs_2.8.0.1# ls
Config.in  Makefile  README  dl  package  target  test_if_zlib_is_available.sh  toolchain  tools  xbin
debian:/home/mute/smp86xx_rootfs_2.8.0.1# cp /8634/smp86xx_rootfs_2.8.0.1/dl/* ./dl/
debian:/home/mute/smp86xx_rootfs_2.8.0.1# ls dl
bash-3.0.tar.gz        cramfs-1.1.tar.gz  linux-libc-headers-2.6.11.0.tar.bz2  uClibc-0.9.27.tar.bz2
busybox-1.5.0.tar.bz2  gdb-6.5.tar.bz2    ncurses-5.2.tar.gz
debian:/home/mute/smp86xx_rootfs_2.8.0.1# make menuconfig
Package Selection for the target  --->
    busybox version (busybox 1.00)  --->
      (X) busybox 1.5.0
[*] customize

debian:/home/mute/smp86xx_rootfs_2.8.0.1# cd target/generic/target_skeleton/
debian:/home/mute/smp86xx_rootfs_2.8.0.1/target/generic/target_skeleton# mkdir tango cdrom
debian:/home/mute/smp86xx_rootfs_2.8.0.1# make      
debian:/home/mute/smp86xx_rootfs_2.8.0.1# source rootfs-path.env

第四步:编译内核
debian:/home/mute# tar jxvf smp86xx_kernel_source_2.8.0.1.tar.bz2
debian:/home/mute/smp86xx_kernel_source_2.8.0.1# cd smp86xx_kernel_source_2.8.0.1
debian:/home/mute/smp86xx_kernel_source_2.8.0.1# cp /8634/smp86xx_kernel_source_2.8.0.1/linux-2.6.15.tar.gz  ./
debian:/home/mute/smp86xx_kernel_source_2.8.0.1# tar zxvf linux-2.6.15.tar.gz
debian:/home/mute/smp86xx_kernel_source_2.8.0.1# cd linux-2.6.15
debian:/home/mute/smp86xx_kernel_source_2.8.0.1/linux-2.6.15# make menuconfig
debian:/home/mute/smp86xx_kernel_source_2.8.0.1/linux-2.6.15# make vmlinux
debian:/home/mute/smp86xx_kernel_source_2.8.0.1/linux-2.6.15# make modules
debian:/home/mute/smp86xx_kernel_source_2.8.0.1/linux-2.6.15# make modules_install
debian:/home/mute/smp86xx_kernel_source_2.8.0.1/linux-2.6.15# make zbimage-linux-xrpc


debian:/home/mute/smp86xx_kernel_source_2.8.0.1/linux-2.6.15# cp arch/mips/boot/zbimage-linux-xrpc  /tftpboot/mute/

debian:/home/mute/smp86xx_kernel_source_2.8.0.1# cp -ar /8634/smp86xx_kernel_source_2.8.0.1/linux-2.6.15 ./
debian:/home/mute/smp86xx_kernel_source_2.8.0.1# make kernel-source-2.6.15

debian:/tftpboot# ls mute/
zbimage-linux-xrpc  zbimage-yamon  zboot2.bin

二、烧写目标代码到目标板
1、启动目标板,在等待5S过程中按ESC键,使之进入yamon命令行下,如:
YAMON>
2、在yamon命令行下输入net init,初始化网络配置。
YAMON> net init
Ethernet driver for EM86XX (v1.0)
(MAC 00:16:e8:2e:fe:d3, tx_desc/rx_desc = 16/32)

em86xx_eth::open(em86xx_eth) - Full-duplex mode
em86xx_eth::open(em86xx_eth) - 100 Mbit/s
em86xx_eth ethernet start
DHCP was successfully configured.
ipaddr:      = 192.168.0.71
subnetmask:  = 255.255.255.0
gateway:     = 192.168.0.1
3、烧写zboot
3.1、按下面命令通过tftp下载目标代码到目标板
YAMON> load -b tftp://192.168.0.37/zboot2.bin 0xb0100000
About to load tftp://192.168.0.83/zboot2.bin
Press Ctrl-C to break
.....

Start = 0xb0100000, range = (0xb0100000,0xb012f193), format = BINARY
Length = 0x2f194 (192916)
Checksum = 0x86457147
3.2、按下面命令烧写目标代码到目标板
YAMON> pflash write 0x0 0xb0100000 0x2f194
  0x00000000 - 0x0002ffff will be erased
  0x00000000 - 0x0002f193 will be written
Erasing :
..........
Writing :
.................................................
Verifying (RAM 0xb0100000, size 0x2f194) : OK.
YAMON>
4、烧写yamon
4.1、按下面命令通过tftp下载目标代码到目标板
YAMON> load -b tftp://192.168.0.37/zbimage-yamon 0xb0100000
About to load tftp://192.168.0.83/zbimage-yamon
Press Ctrl-C to break
......

Start = 0xb0100000, range = (0xb0100000,0xb01303ff), format = BINARY
Length = 0x30400 (197632)
Checksum = 0xd5974852
4.2、按下面命令烧写目标代码到目标板
YAMON> pflash write 0x40000 0xb0100000 0x30400
  0x00040000 - 0x0007ffff will be erased
  0x00040000 - 0x000703ff will be written
Erasing :
....
Writing :
..................................................
Verifying (RAM 0xb0100000, size 0x30400) : OK.
YAMON>
5、烧写内核及文件系统
5.1、按下面命令通过tftp下载目标代码到目标板
YAMON>load -b tftp://192.168.0.37/zbimage-linux-xrpc 0xb0100000
5.2、按下面命令烧写目标代码到目标板
YAMON>pflash write -f 0x80000 0xb0100000 0x46e400  //Length = 0x46e400 

驱动器 D 中的卷是 LINUX 卷的序列号是 4471-561B D:\桌面\mips交叉编译环境 的目录 2009-10-22 20:27 <DIR> . 2009-10-22 20:27 <DIR> .. 2009-10-22 20:09 27,425,338 gcc-3.4.3.tar.bz2 2009-10-22 20:08 7,421,782 binutils-2.10.91.0.2.tar.bz2 2009-10-22 20:08 242,445 glibc-linuxthreads-2.5.tar.bz2 2009-10-22 20:10 20,544,628 glibc-2.5.tar.gz 2009-10-22 20:20 1,720 elf-machine-rela-mips.dpatch 2009-10-22 20:26 4,727 建立基于linux的MIPS交叉编译环境 .txt 6 个文件 55,640,640 字节 2 个目录 6,793,084,928 可用字节 三、构建过程 1、准备环境 目标平台: mipsel-linux(即little endian,x86也是little endian的,不懂的话自己到网上查资料吧) 安装目录: /usr/local/crossdev 源代码安装目录: /usr/local/src 注:没有的目录请自行建立。 2、准备MIPS环境的头文件 我们是在i386下编译的,但要使用MIPS的头文件定义才能正确编译MIPS的交叉编译工具。这些头文件都在kernel源程序中。 cd /usr/local/src/ tar xzvf linux-2.4.2.tar.gz cd linux/ make ARCH=mips menuconfig 在"CPU selection"中, 选中"(R3000) CPU type",也可以选你实际的MIPS平台的CPU类型 在"General setup"中, 选中"Generate little endian code" make dep mkdir -p /usr/local/crossdev/mipsel-linux/include cp -r /usr/local/src/linux/include/asm-mips /usr/local/crossdev/mipsel-linux/include/asm cp -r /usr/local/src/linux/include/linux /usr/local/crossdev/mipsel-linux/include/ 3、编译binutils cd /usr/local/src/ tar xzvf binutils-2.11.90.0.31.tar.gz cd binutils-2.11.90.0.31/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev make make install export PATH=/usr/local/crossdev/bin:$PATH 4、编译自举的(bootstrap)gcc 因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后就可以再编译一个完成的gcc了。 cd /usr/local/src/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c --with-newlib --disable-shared make make install 注:以上编译安装的工具已经可以直接编译MIPS的kernel(make zImage)了。 5、编译glibc 现在可以使用刚才建立的binutils和gcc来编译MIPS的glibc了。 cd /usr/local/src/ tar xzvf glibc-2.2.3.tar.gz cd glibc-2.2.3/ tar xzvf ../glibc-linuxthreads-2.2.3.tar.gz patch -p1 < ../glibc-2.2.3-mips-base-addr-got.diff CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --prefix=/usr/local/crossdev/mipsel-linux --enable-add-ons=linuxthreads make make install 6、重新编译完整的gcc cd /usr/local/src/ rm -rf gcc-3.0.2/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c,c++ make make install 以上就构建好了一套自己的MIPS交叉编译环境,目录在/usr/local/crossdev下,你可以把它打包拷贝到其它i386的Linux系统下也能使用。 要使用其来交叉编译时请先加上PATH环境变量:export PATH=/usr/local/crossdev/bin:$PATH
驱动器 D 中的卷是 LINUX 卷的序列号是 4471-561B D:\桌面\mips交叉编译环境 的目录 2009-10-22 20:27 <DIR> . 2009-10-22 20:27 <DIR> .. 2009-10-22 20:09 27,425,338 gcc-3.4.3.tar.bz2 2009-10-22 20:08 7,421,782 binutils-2.10.91.0.2.tar.bz2 2009-10-22 20:08 242,445 glibc-linuxthreads-2.5.tar.bz2 2009-10-22 20:10 20,544,628 glibc-2.5.tar.gz 2009-10-22 20:20 1,720 elf-machine-rela-mips.dpatch 2009-10-22 20:26 4,727 建立基于linux的MIPS交叉编译环境 .txt 6 个文件 55,640,640 字节 2 个目录 6,793,084,928 可用字节 三、构建过程 1、准备环境 目标平台: mipsel-linux(即little endian,x86也是little endian的,不懂的话自己到网上查资料吧) 安装目录: /usr/local/crossdev 源代码安装目录: /usr/local/src 注:没有的目录请自行建立。 2、准备MIPS环境的头文件 我们是在i386下编译的,但要使用MIPS的头文件定义才能正确编译MIPS的交叉编译工具。这些头文件都在kernel源程序中。 cd /usr/local/src/ tar xzvf linux-2.4.2.tar.gz cd linux/ make ARCH=mips menuconfig 在"CPU selection"中, 选中"(R3000) CPU type",也可以选你实际的MIPS平台的CPU类型 在"General setup"中, 选中"Generate little endian code" make dep mkdir -p /usr/local/crossdev/mipsel-linux/include cp -r /usr/local/src/linux/include/asm-mips /usr/local/crossdev/mipsel-linux/include/asm cp -r /usr/local/src/linux/include/linux /usr/local/crossdev/mipsel-linux/include/ 3、编译binutils cd /usr/local/src/ tar xzvf binutils-2.11.90.0.31.tar.gz cd binutils-2.11.90.0.31/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev make make install export PATH=/usr/local/crossdev/bin:$PATH 4、编译自举的(bootstrap)gcc 因为这时还没有MIPS的glibc库可以使用,只能编译一个最简单的gcc,用这个gcc编译出glibc后就可以再编译一个完成的gcc了。 cd /usr/local/src/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c --with-newlib --disable-shared make make install 注:以上编译安装的工具已经可以直接编译MIPS的kernel(make zImage)了。 5、编译glibc 现在可以使用刚才建立的binutils和gcc来编译MIPS的glibc了。 cd /usr/local/src/ tar xzvf glibc-2.2.3.tar.gz cd glibc-2.2.3/ tar xzvf ../glibc-linuxthreads-2.2.3.tar.gz patch -p1 < ../glibc-2.2.3-mips-base-addr-got.diff CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --prefix=/usr/local/crossdev/mipsel-linux --enable-add-ons=linuxthreads make make install 6、重新编译完整的gcc cd /usr/local/src/ rm -rf gcc-3.0.2/ tar xzvf gcc-3.0.2.tar.gz cd gcc-3.0.2/ ./configure --target=mipsel-linux --prefix=/usr/local/crossdev --enable-languages=c,c++ make make install 以上就构建好了一套自己的MIPS交叉编译环境,目录在/usr/local/crossdev下,你可以把它打包拷贝到其它i386的Linux系统下也能使用。 要使用其来交叉编译时请先加上PATH环境变量:export PATH=/usr/local/crossdev/bin:$PATH
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值