SkyEye模拟器开发环境搭建_lshiceman的博客-程序员秘密

技术标签: Linux  ARM LINUX  ARM  

一、编写目的

由于在外面出差,没有把开发板带在身上,无法继续在空余时间学习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++

 

配置完成,如下图所示。

 

c) 编译SkyEye库

# make lib

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

 

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包含一例程,由于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

 

 

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

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进行测试。

 

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

 

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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lshiceman/article/details/39231947

智能推荐

UVA 12563 Jin Ge Jin Qu hao 01背包_leodestiny的博客-程序员秘密

题意:在KTV里,你还剩余T秒的时间来唱歌。现在有N首歌曲,给出每首曲子的时间。同时还有一首必唱的,时间为678秒的歌曲。现在让你最大化唱的歌曲的数量,在此前提下,让自己唱的时间足够长。思路:对于每首歌曲的选择,只有两种,选或者不选,这就是标准的01背包。因为最终要的要求是最大化歌曲的数量,所以我们定义状态dp[i]为唱歌时间小于等于i的时候,唱的最多的歌曲数目。然后记录最大值即可。代码如

西厢记之 Ubuntu Linux下编译安装西_厢_计_划_allenny的博客-程序员秘密

  介绍: 由于众所周知的原因,我们上网的时候经常会遇到连接重置的情况,西_厢_计_划(west-chamber)是一个旨在通过技术手段解决此类问题的开源项目。项目主页:http://code.google.com/p/scholarzhang 为便于说明而不带来问题,我把重置连接的系统称之为maxtrix,就是电影《黑客帝国》中的那个,你懂的。 我花了几天的时间把...

python爬虫(破解百度翻译)_菜鸡陶的博客-程序员秘密

首先进入百度翻译,分析翻译部分存在Ajax请求(AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。)通过F12抓包工具分析Ajax请求确定URL和使用POST方法如图:查看参数:结果如下:代码如下:import requestsimport js...

while 语句的三种控制/结束循环方式_while语句什么时候结束循环_XvAier的博客-程序员秘密

while语句若一直满足条件,则会不断的重复下去。但有时,我们需要停止循环,则可以用下面的三种方式:1.在while语句中设定条件语句,条件不满足,则循环自动停止: ie: 只输出3的倍数的循环;范围:0到20.current_number = 0while current_number < 20: current_number += 1 if curren...

BeanUtils报InvocationTargetException错误解决办法_beanutils.populate 异常invocationtargetexception_躁动的生灵的博客-程序员秘密

正常导入BeanUtils包和logging包后,执行如下程序,抛出异常 User user = new User(); System.out.println("注入之前:" + user); try { /* 把所有请求的参数都注入到user对象中 */ BeanUtils.populate(user, request.getParameterMap()); } catch (IllegalAccessE

新加载页面$(window).focus()无效问题的解决_window.focus() 方法失效_Ajian的博客-程序员秘密

新打开了一个页面,需要在页面的focus事件中触发函数,代码如下:$(function(){ var end=null; //页面失去焦点则停止提交 $(window).blur(function(){ clearInterval(end); }); //页面得到焦点开始提交 $(

随便推点

Android 性能优化 -- MMKV使用与原理_tencent:mmkv:1.0.22_清霜之辰的博客-程序员秘密

一. 集成与测试依赖注入初始化获取实例CURDSP 的迁移数据测试二. 初始化目录的创建三. 实例化一) 文件映射到内存二) 数据的载入三) 回顾四. encode一) 数据的编码二) 键值对的更新数据的重整与扩容三) 回顾五. decode思考六. 进程读写的同步一) 文件共享锁二) 文件排它锁三) 读写效率表现总结参考文献

《算法》第4版__环境搭建_fang0jun的博客-程序员秘密

《算法》第四版中为了提高代码的可读性,尽量减少java的特性,减少不同语言使用者的阅读障碍,官方提供了algs4.jar,包含了众多方法库。它们将经常在代码中出现针对Eplices用户:1,Eplices《算法》第4版 环境搭载https://blog.csdn.net/qwe641259875/article/details/81229976针对Intellij IDEA用户:1,在I...

java 设计模式_gyzhang_csdn的博客-程序员秘密

http://www.vincehuston.org/dp/https://coolshell.cn/articles/8961.html

programming in lua 之 lua api函数_unsv29的博客-程序员秘密

《programming in lua 》的第24章讲C语言的API函数。那么什么叫做lua解释器?书中的意思lua解释器就是除了lua脚本和lua库之外的C语言程序。lua脚本(由用户输入的字符串或文件组成)    lua解释器  lua库(比如V5.1.4版本的库)====================================================

mysql 慢查询 sql语句_MySQL5.6 怎样优化慢查询的SQL语句 -- SQL优化_hua yang的博客-程序员秘密

在实际的日志分析中,通常慢日志的log数量不少,同一时候同样的查询被记录的条数也会非常多。这里就须要怎样从慢日志查询中找到最有问题,最须要优化的日志。在这方面,有非常多分析工具,最主要的分析工具就是MySQL自带的mysqldumpslow,mysqldumpslow(Perl脚本)的输出演示样例:[[email protected] bin]# ./mysqldumpslow -s t -t 1 /usr...

推荐文章

热门文章

相关标签