SkyEye模拟器开发环境搭建

一、编写目的

由于在外面出差,没有把开发板带在身上,无法继续在空余时间学习ARM+LINUX。想起以前学习MCU的时候,总是用PROTEUS仿真硬件的运行,当时刚接触这个行业的时候,也正常PROTEUS让我对它产生浓厚的兴趣。心里总是想,像ARM9这样的平台是否有相应的仿真平台呢。最终确定使用一款名叫SkyEye的纯软件仿真平台,skyeye是开源软件,现在可以模拟很多种ARM,同时可以调试linux等操作系统,这对于没有开发板的嵌入式学习者是个很好的选择。

本文档主要为记录在CentOS 6.5上搭建SkyEye模拟S3C2440开发板的开发过程。

二、系统搭建

1. 下载相关软件包

skyeye-1.3.5_rc1.tar.bz2: http://sourceforge.jp/projects/sfnet_skyeye/downloads/skyeye/skyeye-1.3.5/skyeye-1.3.5_rc1.tar.bz2/ 

( http://pan.baidu.com/s/1i3zeAHJ )

2. 安装SkyEye

a) 解压源码

# tar -xvf /media/sf_ShareDIR/SkyEye/Source/skyeye-1.3.5_rc1.tar.bz2 -C ./

b) 配置SkyEye

# ./configure -prefix=/usr/local

提示下图所示错误,原因是没有安装C++编译器。使用yum安装C++编译器。

# yum install gcc-c++

 SkyEye模拟器开发环境搭建_第1张图片

配置完成,如下图所示。

 SkyEye模拟器开发环境搭建_第2张图片

c) 编译SkyEye库

# make lib

……经过漫长的等待,编译完成,如下图所示。

 SkyEye模拟器开发环境搭建_第3张图片

d) 编译SkyEye

# make

Ø 编译,提示“/usr/bin/ld: cannot find -lltdl”,安装ltdl即可。

# yum install libtool-ltdl-devel

Ø 编译,提示“SDL_syswm.h:73: error: expected specifier-qualifier-list before”。经BAIDU,说安装libX11-devel即可。

# yum install libX11-devel

Ø 编译,提示“SDL_x11sym.h:168: error: too many arguments to function”。参数数量不一致,怀疑是因为SDL库版本问题,通过yum更新SDL即可。

# yum install SDL-devel

Ø 编译,提示“cannot find -liconv”。安装iconv库即可,在yum服务器上没有libconv库,因此需要从网上(http://www.gnu.org/software/libiconv/#downloading 或 http://pan.baidu.com/s/1mgqladU )下载来安装。

# tar -xvf /media/sf_ShareDIR/SkyEye/Source/libiconv-1.14.tar.gz -C ~

# cd ~./libiconv-1.14/

# ./configure

#./make

#./make install

Ø 编译,提示“error: gtk/gtk.h: No such file or directory”,安装GTK包即可。注意安装GTK后要make clean,make distclean并重新./configure,make lib

# yum install gtk2-devel

Ø 编译,提示“pycli/pycli.c:1:20: error: Python.h: No such file or directory”,安装python库。

# yum install python-devel

e) 安装SkyEye

# make install

# make install_lib

3. 测试

安装完成后,在命令行中输入skyeye并按回车键后,即可进入skyeye。如下图所示。

 SkyEye模拟器开发环境搭建_第4张图片

编译完成后的SKYEYE包含一例程,由于SKYEYE安装在/usr/local目录下(可能与其它软件安装在一起),因此它的例程也在此目录下,这里是在/usr/local/testsuite/目录下(这里有两个例程,我们这里运行arm_hello)。运行例程用以下命令:

# cd /usr/local/testsuite/arm_hello/

# ./skyeye –e arm_hello

# start

提示” SKYEYE Error:We need xterm to run the console of uart.Please check if you installed it correctly.”。安装下xterm即可。

# yum install xterm

# ./skyeye –e arm_hello

# start

# run

 SkyEye模拟器开发环境搭建_第5张图片

 

另外在以下网站中还有一些例程下载。

http://sourceforge.net/projects/skyeye/files/skyeye-testsuits/ 

http://pan.baidu.com/s/1tTn2Y )


4. 重要补充(20150108)

如下图所示,在下载的例程中运行S3C2440linux,当在skyeye中键入start开始运行后,停止在以下画面,无法再输入run去运行,只能通过Ctrl+v退出。经测试,很多例程都是这种情况。经GOOGLE后得知与skyeye相匹配的编译器之一是gcc-3.44.2

使用gcc -v得知我的LINUX中的GCC版本为4.4.7,因此怀疑是编译器版本不对才会导致这些问题出现。接下来更换GCC编译器再重新编译一次skyeye进行测试。

 SkyEye模拟器开发环境搭建_第6张图片

a) 下载gcc 4.2.1

http://pan.baidu.com/s/1eQxRICU 

b) 安装gcc 4.2.1

# ./configure --prefix=/usr/local/gcc-4.2.1 --enable-languages=c,c++ 

# make

Ø 提示“error while loading shared libraries: libiconv.so.2:

缺少libiconv,上网下载此库安装即可。其实在前面安装skyeye的时候已经安装过该库了,只是我现在重装了系统,要重新安装该库。

http://www.gnu.org/software/libiconv/ http://pan.baidu.com/s/1mgiMya0 

# ./configure --prefix=/usr/local

# make 

# make install

安装iconv后,需在/etc/ld.so.conf中加一行/usr/local/lib。然后运行/sbin/ldconfig,否则还是找不到libiconv库。

# make install

c) 删除原来的skyeye

进入skyeye源码目录,需要按照前面的安装路径”./configure -prefix=/usr/local”。

# make uninstall

d) 重新编译并安装skyeye

进入skyeye源码目录

# ./configure -prefix=/usr/local

修改Makefile中的所有gcc为/usr/local/gcc-4.2.1/bin/gcc

修改Makefile中的所有g++为/usr/local/gcc-4.2.1/bin/g++

# make lib

# make 

# make install

#make install_lib

e) 运行linux s3c2440例程

# cd skyeye-testsuite-1.3.4_rc1/skyeye-testsuite/linux/s3c2440/2.6.14/

# skyeye -e vmlinux

# (skyeye) start

# (skyeye) run  这里键入run时还是没显示,但是会响应,直接键入然后回车

如下图所示,run后,可以运行s3c2440 linux,但还是在当前终端上显示输出信息。

 SkyEye模拟器开发环境搭建_第7张图片

修改该例程目录下的skyeye.conf文件,将uart:mod=stdio该为uart:mod=term后运行。如下图所示,改成term后就可以在新窗口中显示arm linux输出信息了,并且可以看到# (skyeye) run键入的信息了。

 SkyEye模拟器开发环境搭建_第8张图片

虽然能运行arm linux但在这个SHELL里不能输入信息,如上图提示的信息”cant’t access tty”。这个问题应该是由文件系统里面的配置文件导致的,不属于skyeye的问题,可以参考其它制作文件系统的文档重新制作文件系统再测试。经过测试,在term窗口不能输入的问题,在多次启动该arm linux后可以正常使用了。重新解压例程后,都可以正常使用了,估计是根CENTOS系统有关,说不定重启就会OK


你可能感兴趣的:(ARM,LINUX,ARM,Linux)