嵌入式交叉开发环境的建立.doc
文本预览下载声明
实验四 嵌入式交叉开发环境的建立
与通用计算机上的软件开发不同,嵌入式的编译过程被称为交叉编译,嵌入式系统的软件开发环境被称为嵌入式交叉开发环境。交叉编译就是把在宿主机上编写的高级语言程序编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序。交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。
宿主机(Host)是用于开发嵌入式系统的计算机。一般为PC机(或者工作站),具备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。目标机(Target)即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的。物理连接是指宿主机与目标机通过物理线路连接在一起,连接方式主要有串口、以太网接口和OCD(On Chip Debug)三种方式。逻辑连接指宿主机与目标机间按某种通信协议建立起来的通信连接。在开发过程中,目标机端需接收和执行宿主机发出的各种命令如设置断点、读内存、写内存等,将结果返回给宿主机,配合宿主机各方面的工作。
宿主机上用于嵌入式软件开发的工具软件一般包括:文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等。
当我们建立完成了嵌入式交叉开发环境后,我们就可以按照如图1所示,在宿主机上编写程序的源代码,使用交叉编译器编译成各个目标模块,使用交叉链接器链接生成可供下载调试或固化的目标程序,通过目标机和宿主机之间的物理连接(串口或网络接口)将目标程序下载到目标机。
图1嵌入式软件编译过程
在这里中,我们是在宿主机的虚拟机(VMware Workstaion 6.5)上安装Red Hat Enterprise Linux
5。在Linux环境下,我们一般采用arm-linux-gcc作为交叉编译器,glibc是应用程序编程的函数库文件软件包,binutils用作二进制程序处理工具。这样一些软件构成了Linux下的交叉编译工具链。
通常构建交叉工具链有3种方法:
(1)分步编译和安装交叉编译工具链所需要的
库和源代码,最终生成交叉编译工具链;
(2)通过Crosstool脚本工具来实现一次编译生成交叉编译工具链;
(3)直接通过网上下载已经制作好的交叉编译工具链。
Crosstool是一组脚本工具集,可构建和测试不同版本的gcc和glibc,用Crosstool构建交叉工具链要比分步编译容易得多,也方便许多。
本次实验采用cross-0.43来制作基于gcc4.1.1和glibc-2.3.2 的工具链。主要步骤如下:
1.从/crosstool上下载crosstool-0.43.tar.gz压缩包,并在/opt下解压。由于S3C2440是基于ARM920T内核的,所以要建立基于ARM9TDMI的工具链。在crosstool-0.43目录下,打开demo-arm9tdmi.sh,修改如下内容:
(1)在第37行后面添加一行:(第37行应该为注释) eval `cat arm9tdmi.dat gcc-4.1.1-glibc-2.3.2.dat` sh all.sh –notest
上面语句表示执行demo-arm9tdmi.sh后,它将根据arm9tdmi.dat、gcc-4.1.1-glibc-2.3.2.dat这两个文件中定义的环境变量调用all.sh脚本来进行编
译。gcc-4.1.1-glibc-2.3.2.dat文件指明了要下载或使用的文件。出的
(2)修改第7、8行内容如下: TARBALLS_DIR=/opt/downloads
RESULT_TOP=/opt/crosstool
其中,TARBALLS_DIR表示要使用文件源码存放的位置,RESULT_TOP表示编译结果存放位置。
2.修改arm9tdmi.dat文件。打开arm9tdmi.dat,将第2行修改为:
TARGET=arm-linux
修改后,编译生成的工具样式为arm-linux-gcc、arm-linux-ld等。
3.修改gcc-4.1.1-glibc-2.3.2.dat文件,并下载相关源码。打开gcc-4.1.1-glibc-2.3.2.dat文件,由于我们要移植的Linux内核版本为2.6.24,所以修改第5行为:
LINUX_DIR=linux-2.6.24
在编译过程中,系统会根据gcc-4.1.1-glibc-2.3.2.dat文件内容下载所需要的相关源代码,但系统自动下载速度较慢,所以我们应根据该文件的内容自行下载文件代码,将其放在/opt/downloads下。须下载的源代码包括:
binutils-2.16.1.tar.bz2
glibc-2.3.2.tar.bz2
gcc-3.3.6.tar.bz2
glibc-linuxth
显示全部