微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AT91RM9200引导程序的建立(一)建立交叉编译工具链

AT91RM9200引导程序的建立(一)建立交叉编译工具链

时间:11-09 来源:互联网 点击:

写在前面:

本系列文章将详细的讲述AT91RM9200引导程序的建立过程,其中包括建立交叉编译工具链,gdb+gdbserver的编译安装使用,tftp,NFS的安装使用,超级终端或者minicom的使用,内核的编译升级,U-Boot的移植,Ramdisk、根文件系统的建立制作,busybox的编译、应用等。从而重现完整的开发过程。在写这个文档的过程中,本人参考了许多资料,在这里要感谢互联网,感谢所有社区,论坛里无私提供帮助的同行们。特别感谢一下鲁郁先生,是他让我在AT91RM9200上成功的移植了U-Boot1.1.4。本人是从不懂一路走来,走的过程中将开发过程详细记述下来,从一个初学者的角度来写下这个系列的文章,以方便其他初学者能得到一些帮助,少走一些弯路。本系列文章主要讲述开发过程及实际应用,并不能很好的讲述一些原理性的东西,所以您在看这篇文章的时候最好要参考其他资料,以形成一个完整的知识链。祝你旅途愉快。

开发环境

软件环境

宿主机:Redhat9.0,虚拟机vmware5.5.1

U-Boot1.1.4,busybox1.2.2.1

硬件环境

CPU:AT91RM9200 ,180MHz(200MIPS)

存储器:32MSDRAM(MT48LC8M16A2)

64MbitsFlash(SST39VF6401B)

USB接口:USB-HostUSB-Device

网络接口:10/100MDM9161E

DBGU串行调试接口

JTAG接口

移植过程

虚拟机

关于虚拟机的安装使用,这里就不介绍了。使用很方便,网上也有大量的资料。大家可自行查阅。我们使用的是5.5.1版本,当然,你也可以使用最新的版本。

建立交叉编译工具链。

交叉编译工具链就是为了在一个平台体系结构下(如X86 PC机)能编译,链接,处理和调试另一个平台体系结构下(如ARM)的程序,使得编译生成的程序能够在另一平台下运行。

Linux使用的工具链软件是:Binutils,gcc,glibc,gdb。

其中binutils是二进制程序处理工具。gcc是编译器。glibc是应用程序编程的函数库文件软件包。gdb是调试工具。

对交叉编译工具链的编译是很麻烦和琐碎的一件事,如果自己一个一个编译,很可能会遇到各种各样的麻烦。幸好有人做了一套脚本程序,可以很方便的生成你所需要的交叉编译工具链。我们使用的脚本就是crosstool,关于详细内容可以访问http://kegel.com/crosstool/,可以从该网站下载到它的脚本,补丁和文档。

本文以i686平台,虚拟机vmware5.5.1,redhat9.0来建立arm交叉编译工具链。

我们采用crosstool0.42来作为我们编译交叉编译工具链的脚本。详细的用法说明请阅读网站上的文档crosstool-how to。

[zzl@localhost] tar -xzvf crosstool-0.42.tar.gz

[zzl@localhost]cd crosstool-0.42

我们可以看到目录下有很多.sh脚本和.dat配置文件。每一个支持的CPU都有它所相应的脚本,如我们选用demo-arm-softfloat.sh就是建立目标为支持软浮点的arm的交叉编译工具链。其中需要我们记住的三个重要的变量:
TARBALLS_DIR=$HOME/downloads

RESULT_TOP=/opt/crosstool

GCC_LANGUAGES="c,c++"

第一行指明我们放置源代码软件包的目录,我的主目录是/home/zzl。第二行指明我们生成的交叉编译工具链在/opt/crosstool下。第三行表示,我们的交叉编译工具链支持c,c++语言。

我们需要如下压缩包:
gcc-3.4.1.tar.gz glibc-2.3.3.tar.gz linux-2.6.17
binutils-2.15.tar.gz glibc-linuxthreads-2.3.3.tar.gz

所以,你的首要任务是下载这些源代码软件包,并将它们放在/home/zzl/downloads下面,保证这些包的所有者为当前用户而不是根用户。

由于我们以后的内核版本为2.6.17,所以我们还需要下载linux2.6.17的内核包,并放在/home/zzl/downloads/下。

我们选择的配置是:demo-arm-softfloat.sh,其内容具体如下:

#!/bin/sh

set -ex

TARBALLS_DIR=$HOME/downloads

RESULT_TOP=/opt/crosstool

export TARBALLS_DIR RESULT_TOP

GCC_LANGUAGES="c,c++"

export GCC_LANGUAGES

# Really, you should do the mkdir before running this,

# and chown /opt/crosstool to yourself so you dont need to run as root.

mkdir -p $RESULT_TOP

# Build the toolchain.Takes a couple hours and a couple gigabytes.

#eval `cat arm-softfloat.dat gcc-3.3.3-glibc-2.3.2.dat` sh all.sh --notest

#eval `cat arm-softfloat.dat gcc-3.4.0-glibc-2.3.2.dat` sh all.sh --notest

eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notest

#eval `cat arm-softfloat.dat gcc-3.4.1-glibc-20040827.dat`sh all.sh --notest

echo Done.

从这一行eval `cat arm-softfloat.dat gcc-3.4.1-glibc-2.3.3.dat` sh all.sh --notest

可以看出,我们的gcc版

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

网站地图

Top