分类: LINUX
2009-05-31 10:10:24
第五章 嵌入式ARM-Linux交叉编译设计
ARM linux是linux内核2.6版本以后推出的新版本,加强了对无MMU处理器的支持,主要针对带有MMU的ARM9以上系列的处理器进行开发的仿真环境。与上一章节所建立的μClinx源码调试环境有本质的区别。μClinux主要针对无MMU的处理器,如ARM7系列处理器。ARM9系列处理其与ARM7系列处理其相比不仅多了MMU,还有其处理速度都有很大改善,新一代的ARM9处理器,通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。因而ARM Linux环境的建立不能继续沿用头两章节所用的SkyEye仿真环境,需要开发新的SkyEye的仿真环境。
而且不同的嵌入式系统是针对不同的硬件内核而定制的,以经典的ARM9内核处理器S3C2410为例,在Linux系统的虚拟环境Cygwin中开发SkyEye仿真软件下的ARM-Llinux的嵌入式仿真环境。下面将详细介绍整个设计过程。
在cygwin下首先要建立arm-linux的交叉编译环境,在交叉编译环境能够对程序进行二进制处理,编译,调试。程序的运行需要有相应的工具进行对其进行相应的操作,这些工具的建立需要在cygwin中分别安装。下面开始建立arm-linux的交叉编译环境。
需要分别下载 arm-tools in cygwin如下四种软件包:
(1) 二进制程序处理工具:arm-linux-binutils-cygwin-2.9.5.0.37.gz;
(2) 编译器:arm-linux-gcc-cygwin-2.95.3.gz;
(3) 应用程序库编程的软件包:libc6-arm-cross-2.1.3-19.gz和libc6-dev-arm-cro ss-2.1.3-19.gz;
(4) 调试工具:skyeye-0.9.8-gdb-6.4.tar。
如果你选择把cygwin安装到的目录下。则执行cygwin bash shell后的仿unix环境的根目录“/”实际上就是f:\cygwin目录。把上述软件包下载并拷贝到f:\cygwin目录下后,在cygwin bash shell环境中的根目录“/”下就存在上述文件。然后在cygwin bash shell环境中的的根目录“/”下分别执行一下语句:
#tar zxvf arm-linux-binutils-cygwin-2.9.5.0.37. gz
#tar zxvf arm-linux-gcc-cygwin-2.95.3.gz
#tar zxvf libc6-arm-cross-2.1.3-19.gz
#tar zxvf libc6-dev-arm-cross-2.1.3-19.gz
#tar zxvf skyeye-0.9.8-gdb-6.4.tar.gz
最后出现下图5.1所示的界面,则交叉编译环境建立完成。然后可在cygwin bash shell环境中进行用指令arm-linux-gcc对交叉编译环境进行检测出现无输入的英文提示,即告成功。否则失败。
图5.1 解压调试工具
移植SkyEye
在http://的官方网站中选择下载skyeye的稳定的新软件包skyeye-1.2.6_rc1.tar并拷贝到cygwin的根目录下解压得到skyeye-1.2.6_rc1的文件夹。此文件还没有生成相应的二进制文件,所以需要对解压的文件进行配置编译安装。在配置中可选择的配置文件有arm-elf和arm-linux等多种目标文件,在此选择配置的目标文件是arm-linux,在cygwin bash shell中执行下面的语句完成skyeye的仿真环境。
#tar jxvf skyeye-1.2.6_rc1.tar.bz2
#cd skyeye-1.2.6_rc1
#./configure --target=arm-linux ;配置,并指定交叉工具的目标板体系结构是arm-linux
#make ;编译
#make install ;安装
然后执行arm-linux-skyeye,显示如下图5.2所示,skyeye对其指令做完简单介绍退出skyeye的环境,说明配置基于arm-linux编译环境的skyeye安装成功。
图5.2 arm-linux-skyeye的执行界面
SkyEye的测试软件包中包含多种测试文件,通过上面建立的SkyEye环境可对其中的内核文件进行一一测试。此次开发主要是针对基于S3C2410的ARMLinux进行开发,所以只对文件中的S3C2410为目标开发。下面介绍它的详细开发过程。
在http://下载skyeye的测试软件包skyeye-testsuite-1.2.5.tar到下解压,在cygwin bash shell环境中执行:
#tar jxvf skyeye-testsuite-1.2.5.tar
进入中用ls可以看到有三个文件,其中名为vmlinux的文件就是S3C2410的内核文件,然后执行:
#skyeye –e vmlinux ;执行基于S3C2410开发板的内核文件vmlinx
执行数分钟后弹出一个带小企鹅的图框,如图5.3所示。并在cygwin bash shell中显示ARMLinux的字体,如图5.4所示,从而进入ARMLinux的编译环境中了。
图5.4 ARM-Linux的开发界面(2)
在ARMLinux环境中进行类Linux操作系统下的简单操作对ARM-Linux进行测试,如cd改变当前目录,pwd显示当前所在目录,mkdir创建目录,cp拷贝文件或目录,cat显示文件内容,vi进入编辑环境等等。部分操作截图如下图5.5所示。
图5.5 ARM-Linux的测试界面
然后按“Ctrl+C”退出ARM-Linux的编译环境。至此ARM-Linux的交叉编译环境建立成功。