Linux+Skyeye嵌入式系统开发环境的实现!
以下是我最近学习SkyEye的一些经验当中参考了许多网上的实例 ,其中还有不完善的地方,有待改进!
一.所需工具
要实现Linux+SkyEye嵌入式系统开发环境,需要一下工具:
1.SkyEye
2. Arm-elf-tools
二.SkyEye简介
SkyEye是一个开源软件项目,中文名字是“天目”。SkyEye的目标是在通用的Linux和Windows平台实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统;可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试;SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。
三.实现过程
1.建立交叉编译环境
(1).什么是交叉编译
嵌入式系统的开发与我们一般软件的开发有着很大的不同,那就是交叉编译和交叉调试。由于嵌入式的产品要求成本低,所以为了节省成本我们在开发嵌入式系统的时候不是在目标板上建立调试及编译环境的,那样的话会造成浪费,因为我们开发完以后就是成品了,不再需要开发环境,除非有特殊需求的,因此我们要在一般的PC机上编译然后通过一定的通讯手段将主机和目标机连接起来,在主机上编译后进行调试,通过主机调试目标板上的程序(要将程序下载到目标板上,就像前面说的一样)
发现什么错误以后在在主机上编译,在交叉调试,直到程序能满足我们的需求后再固化到我们要开发的产品中,这样就不用在目标板上安装个编译和调试环境就能开发嵌入式的产品了。因此说交叉编译和交叉调试不像一般PC机上的编译、调试一样,例如c++,我们可以在PC机上直接编译然后进行调试,发现错误后直接在程序上改造在进行编译、调试。因此我们要进行嵌入式系统开发就要建立交叉编译环境!
(2).安装Arm-elf-tools
在Linux上利用SkyEye进行嵌入式系统开发就要对Linux进行一定的配置。首先要在Linux中安装Arm-elf-tools(把很多工具打包在一起发布的方便开发)。用root权限进行安装,到目前为止在Linux安装Arm-elf-tools都会出现一个问题,即使是最新版本的Linux,会出现如下错误提示: tail: cannot open `+43' for reading: No such file or directory
这是由于脚本中的tail没写对,必须对Arm-elf-tools进行修改,加一个 -n 参数,解决方法有两种。
方法一:重新打包解压
#tail -n+43 arm-elf-tools-20040427.sh >> 1.tar.gz
#tar zxvf 1.tar.gz
得到一个usr的文件夹。。
然后运行 cp -R usr /
方法二:对Arm-elf-tools.sh的第39行改写
vi +39 Arm-elf-tools.sh打开Arm-elf-tools
将第39行的代码:
tail +${SKIP} ${SCRIPT} | gunzip | tar xvf -
改成如下:
tail -n +${SKIP} ${SCRIPT} | gunzip | tar xvf -
保存退出
然后运行#sh Arm-elf-tools.sh进行安装。
(2).安装ARM-Linux-GCC
嵌入式系统的开发有专用的编译器,因此要安装ARM-Linux-GCC。
解压arm-linux-gcc-3.4.4.tar.bz2,解压后的文件形成了 usr/local/ 文件夹 进入该文件夹将arm文件夹考到/usr/local/下现在交叉编译程序集都位于/usr/local/arm/3.4.4/bin下面,导出/usr/local/arm/3.4.4/bin到环境变量,在/etc/profile最后添加PATH=$PATH:/usr/local/arm/3.4.4/bin。也可以通过make命令进行安装。
2.安装SkyEye
解压skyeye-1.2.6_rc1,jar jxvf skyeye-1.2.6_rc1.tar.bz2
进入skyeye-1.2.6_rc1目录,然后运行./configure –target=arm-elf —prefix=usr/local生成Makefile文件,执行make命令运行Makefile,最后执行安装命令make install。这样SkyEye就安装到系统中了。如果一切正常,则在/usr/local/bin目录下,有一个执行文件skyeye。SkyEye默认安装在/usr/local/bin/目录下,可以通过改configure命令参数prefix来改变安装路径。这样安装完以后可以在任何目录下运行SkyEye了。有时候可能找不到skyeye,那么可以发现有个arm-skysye或arm-elf skyey的也可以。