目前,ARM Linux 支持包括A R M 6 1 0 、A R M 7 1 0、A R M 7 2 0 Tcores、ARM920T cores、StrongARM110、StrongARM 1100、XScale 等系列的 ARM 处理器。这些处理器都具有M M U 单元,与之相对应是NO MMU 的uClinux,主要是支持ARM7TDMI 系列的微处理器。在ARM Linux 的基础上,很多开发者将其移植到了自己的硬件平台上,并提交相应的 Machine Type。
本实例分析完整地介绍了移植的过程,对于准备在 ARM Linux 上做应用开发的技术人员有一定的借鉴作用。
一、. ARM Linux 的移植过程
将ARM Linux 移植到特定的硬件平台上,大致需要分成四个步骤:
1)首先是准备工作,包括下载源码、建立交叉编译环境等;
2)然后是配置和编译内核,必要时还要对源码做一定的修改;
3)第三步就是需要制作 RAM disk 来挂接根文件系统;
4)最后是下载、调试内核并在 RAM disk中添加自己的应用程序。
本文以StrongARM 为例,说明如何将 ARM Linux 移植到 SA1110 微处理器上。
下面分四个部分介绍移植工作:
01.内核源码及交叉编译环境的准备
02.ARM Linux 的内核配置与编译
03.制作RAM Disk
04.内核下载和运行
1.内核源码交叉编译环境和准备
1.1 内核源码下载
标准Linux 的内核源码可以从ftp://ftp.kernel.org 下载,在很多的镜像ftp 站点上也可以方便地获得,建议使用 2.4 版本的内核。ARM Linux 是基于标准Linux、内核为ARM 做的补丁,在ftp://ftp.arm.linux.org.uk上可以下载。当然也可以直接下载已经针对标准内核打好补丁的ARM Linux源码包,例如 SkyEye 上提供的 linux-2.4.18-rmk7.tar.bz2,就是基于 2.4.18内核和 rmk7 补丁,可以直接解压之后进行编译。
1.2 交叉编译环境的建立
移植前需要在宿主机上建立ARM 的交叉编译环境,主要用到的开发工具包括三个部分:binutils、gcc、glibc。其中,binutils 是二进制文件的处理工具;gcc 是编译工具;glibc 是链接和运行库。所有需要用到的工具既可以下载源码自行编译,也可以直接下载已经编译好的二进制工具。
1.2.1. binutils 的安装
binutils主要包含了一些辅助开发工具,例如objdump显示反汇编码、nm列出符号表、readelf显示elf文件信息及段信息、strip将不必要的代码去掉以减少可执行文件大小等。这些工具在嵌入式开发初期,尤其是移植调试操作系统时非常有用。
安装的步骤:
1) 下载安装包文件: binutils-2.11.2.tar.gz;
2) 解开安装包到当前目录下:
tar zxf binutils-2.11.2.tar.gz,此时在当前目录下生成一个 binutils-2.11.2目录。
3) 配置安装包:./configure --target=arm-linux --prefix=/usr/local
target 选项表示选定的目标代码格式,一般是 arm-linux,prefix 表示在执行 make install 时的安装根路径。
4) 编译和安装:make、make install
注意安装时可能需要 root 权限,在prefix目录下当前用户有写权限,安装成功后,binutils工具将安装在/usr/local/arm-linux 目录下。 |