由于在外面出差,没有把开发板带在身上,无法继续在空余时间学习ARM+LINUX。想起以前学习MCU的时候,总是用PROTEUS仿真硬件的运行,当时刚接触这个行业的时候,也正常PROTEUS让我对它产生浓厚的兴趣。心里总是想,像ARM9这样的平台是否有相应的仿真平台呢。最终确定使用一款名叫SkyEye的纯软件仿真平台,skyeye是开源软件,现在可以模拟很多种ARM,同时可以调试linux等操作系统,这对于没有开发板的嵌入式学习者是个很好的选择。
本文档主要为记录在CentOS 6.5上搭建SkyEye模拟S3C2440开发板的开发过程。
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 )
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
安装完成后,在命令行中输入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 )
如下图所示,在下载的例程中运行S3C2440的linux,当在skyeye中键入start开始运行后,停止在以下画面,无法再输入run去运行,只能通过Ctrl+v退出。经测试,很多例程都是这种情况。经GOOGLE后得知与skyeye相匹配的编译器之一是gcc-3.4或4.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。
题意:在KTV里,你还剩余T秒的时间来唱歌。现在有N首歌曲,给出每首曲子的时间。同时还有一首必唱的,时间为678秒的歌曲。现在让你最大化唱的歌曲的数量,在此前提下,让自己唱的时间足够长。思路:对于每首歌曲的选择,只有两种,选或者不选,这就是标准的01背包。因为最终要的要求是最大化歌曲的数量,所以我们定义状态dp[i]为唱歌时间小于等于i的时候,唱的最多的歌曲数目。然后记录最大值即可。代码如
介绍: 由于众所周知的原因,我们上网的时候经常会遇到连接重置的情况,西_厢_计_划(west-chamber)是一个旨在通过技术手段解决此类问题的开源项目。项目主页:http://code.google.com/p/scholarzhang 为便于说明而不带来问题,我把重置连接的系统称之为maxtrix,就是电影《黑客帝国》中的那个,你懂的。 我花了几天的时间把...
首先进入百度翻译,分析翻译部分存在Ajax请求(AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。)通过F12抓包工具分析Ajax请求确定URL和使用POST方法如图:查看参数:结果如下:代码如下:import requestsimport js...
while语句若一直满足条件,则会不断的重复下去。但有时,我们需要停止循环,则可以用下面的三种方式:1.在while语句中设定条件语句,条件不满足,则循环自动停止: ie: 只输出3的倍数的循环;范围:0到20.current_number = 0while current_number < 20: current_number += 1 if curren...
正常导入BeanUtils包和logging包后,执行如下程序,抛出异常 User user = new User(); System.out.println("注入之前:" + user); try { /* 把所有请求的参数都注入到user对象中 */ BeanUtils.populate(user, request.getParameterMap()); } catch (IllegalAccessE
新打开了一个页面,需要在页面的focus事件中触发函数,代码如下:$(function(){ var end=null; //页面失去焦点则停止提交 $(window).blur(function(){ clearInterval(end); }); //页面得到焦点开始提交 $(
一. 集成与测试依赖注入初始化获取实例CURDSP 的迁移数据测试二. 初始化目录的创建三. 实例化一) 文件映射到内存二) 数据的载入三) 回顾四. encode一) 数据的编码二) 键值对的更新数据的重整与扩容三) 回顾五. decode思考六. 进程读写的同步一) 文件共享锁二) 文件排它锁三) 读写效率表现总结参考文献
《算法》第四版中为了提高代码的可读性,尽量减少java的特性,减少不同语言使用者的阅读障碍,官方提供了algs4.jar,包含了众多方法库。它们将经常在代码中出现针对Eplices用户:1,Eplices《算法》第4版 环境搭载https://blog.csdn.net/qwe641259875/article/details/81229976针对Intellij IDEA用户:1,在I...
http://www.vincehuston.org/dp/https://coolshell.cn/articles/8961.html
《programming in lua 》的第24章讲C语言的API函数。那么什么叫做lua解释器?书中的意思lua解释器就是除了lua脚本和lua库之外的C语言程序。lua脚本(由用户输入的字符串或文件组成) lua解释器 lua库(比如V5.1.4版本的库)====================================================
如何在vi编辑器中编辑和移动光标
在实际的日志分析中,通常慢日志的log数量不少,同一时候同样的查询被记录的条数也会非常多。这里就须要怎样从慢日志查询中找到最有问题,最须要优化的日志。在这方面,有非常多分析工具,最主要的分析工具就是MySQL自带的mysqldumpslow,mysqldumpslow(Perl脚本)的输出演示样例:[[email protected] bin]# ./mysqldumpslow -s t -t 1 /usr...