返回信息流SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目”。SkyEye的目标是在通用的Linux和 Windows平台实现一个纯软件模拟集成开发环境,模拟常见的嵌入式计算机系统(这里我们假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行Linux、uClinux以及uC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。
SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。SkyEye在时钟节拍的时序上不保证与硬件完全相同,对软件透明的一些硬件模拟进行了一定的简化,这样带来的好处是SkyEye的执行效率更高。
在32位嵌入式CPU领域中,ARM系列CPU所占比重相当大,因此SkyEye首先选择了ARM CPU核作为模拟目标CPU核。目前在SkyEye上可运行并进行源码级调试Linux、uClinux、uC/OS-II操作系统和LwIP(一个著名的嵌入式TCP/IP实现)等系统软件。SkyEye可用于学习,分析,开发Linux、uclinux、uC/OS-II操作系统内核和TCP/IP实现,了解ARM嵌入式CPU编程。
SkyEye发展方向
skyEye将支持模拟更多的CPU、开发板和各种外设,提供详细的设计文档,已方便其它开发人员开发各种各样的硬件模拟。除了对SkyEye进一步完善以外,目前我们正在进行的工作是LCD模拟。
对于skyeye开发感兴趣的朋友,可直接与我联系yuchen@ATtsinghua.edu.cn
并看看skyeye的内部实现文档ftp://166.111.68.183/pub/embed/skye...ternal-v0.7.pdf
目前SkyEye还在发展当中,还有许多不完善的地方,需要大家的支持!
SkyEye配置选项
了解SkyEye配置选项,对理解skyeye模拟的硬件和在上skyeye上运行操作系统有帮助。SkyEye仿真的硬件配置和模拟执行行为由配置文件skyeye.conf中的选项确定。根据选项的功能,skyeye.conf的选项分为硬件配置选项和模拟执行选项。
目前skyeye.conf的配置定义如下:
一、基本CPU核配置选项
目前存在的选项有:arm7tdmi、arm720t、strongarm、xscale
格式为:
cpu: cpuname
注:cpuname表示一个代表cpu名字的字符串。
例如:
cpu: arm7tdmi
二、具体的开发板(包括CPU扩展)配置选项
目前存在的选项有:at91、ep7312、adsbitsy、pxa_lubbock
格式为:
mach: machinename
注:cpuname表示一个代表基于特定CPU的开发板名字的字符串。
例如:
mach: at91
三、内存组配置选项
一个内存组内的地址是连续的,类型分为RAM space, ROM space, mapped IO space
格式为:
mem_bank: map=M|I, type=RW|R, addr=0xXXXXXXXX, size=0xXXXXXXXX, file=imagefilename, boot=yes|no
map=M 表示 RAM/ROM space, map=I 表示 mapped IO space,
type=RW,且如果 map=M 则表示 RAM space, type=R,且如果map=M则表示ROM space
addr=0xXXXXXX 表示内存组的起始物理地址(32bit,16进制)
size=0xXXXXXX 表示内存组的大小(32bit,16进制)
file=imagefilename file的值imagefilename是一个字符串,实际上表示了一个文件,一般是一个可以执行的binary image格式的可执行程序或OS内核文件或则是一个binary image格式的根文件系统。如果存在这个文件,SkyEye会把文件的内容直接写到对应的仿真内存组地址空间中
boot=yes/no,如果boot=yes,则SkyEye会把仿真硬件启动后的第一条指令的地址定位到对应的内存组的起始地址。
四、网络芯片8019as的配置
格式为 nic info state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
注:xx表示两位16进制数,dd表示两位10进制数
state表示仿真开始后,网络芯片是否开始工作
mac表示模拟的nic的mac地址
ethmod表示skyeye所处主机上的网络仿真方式, 目前有tuptap和vnet两种模式。tuntap是linux kernel
支持的一个点到点虚拟网络实现,vnet是skyeye实现的一个功能更多的一个基于虚拟HUB的网络。
hostip表示主机方与skyeye交互用的ip地址
例如:
net: state=on, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
五、skyeye的UART控制选项
uart选项可以控制skyeye在另一个与某个串口连接的终端上输入/输出字符
格式:
uart: fd_in=indevname, fd_out=outdevname
fd_in=indevname indevname表示用于输入的设备文件名,其值为实际的串口设备文件/dev/ttySx
fd_out=outdevname outdevname表示用于输出的设备文件名,其值为实际的串口设备文件/dev/ttySx
例如:
uart: fd_in=/dev/ttyS0, fd_out=/dev/ttyS0
六、skyeye的log控制选项
log选项用于控制skyeye输出硬件系统的执行状态信息,包括每次执行指令时的执行指令值、寄存器值、各种硬件状态等。
格式:
log: logon=0|1, logfile=filename, start=number1, end=number2
logon=0|1,如果值等于0表示不进行记录,如果值等于1表示要进行记录
logfile=filename 其值是一个字符串,表示用于记录信息的文件名
start=number1 其值是一个>=0的十进制整数,表示系统执行执行到第number条指令时开始进行记录
end =number 2其值是一个>=0的十进制整数,表示系统执行执行到第number条指令时停止记录
例如:
log: logon=0, logfile=/tmp/sk1.log, start=100000, end=200000
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #200同步于 2008/5/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
skyeye简介
fzylijun886
2008/5/11镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
注意: 以下说明是针对SkyEye 0.1.1以前版本, ucosii4skyeye1.4以前版本,最新软件的安装使用说明可参考最新软件包中的相关文件(installguide.txt, readme, SkyEye.README)
一 在windows环境下安装SkyEye1. 安装 cygwin
Cygwin是一个在windows(包括windows98/windows2000/windowsXP)下的unix 工具集合,支持大多数GNU软件(如gcc,gdb,xfree86,bash,tetex,opengl,perl,python等)。许多以前在unix环境下的软件只需在cygwin环境下重新编译就可以运行了。SkyEye也是通过cygwin的支持实现了可同时在windows和linux上运行。
目前最新的Cygwin版本为1.3.17(2002-11-28),整个环境(包括所有的工具和xfree86有1.3GB)。大家可下载和安装最基本的环境,大约为200~400MB不等。目前国内提供下载的地址有:
ftp://202.38.97.230/netinst/Cygwin/
ftp://166.111.68.183/pub/Cygwin/
必须安装的子目录(sub category): (把子目录旁边的”default”用鼠标点一下,直到变成”install”)
Archive
Base
Devel:包括gcc、make等编译工具
Libs
Net
Shells
Utils: 包括bzip2等实用工具
大家可选择较快的下载地址(希望更多的站点提供最新cygwin的ftp访问)。
必须通过cygwin提供的setup.exe进行安装,可根据安装提示一步一步进行,提供通过internet安装方式或本地安装方式。建议把cygwin整个安装包下载到本地再进行本地安装比较方便。如果无特殊需求,可简单按它的缺省安装方式安装最少数量的软件包。建议不要安装到c:\下。cygwin的问题和解答可参考cygwin FAQ。
2. 安装skyeye
1. 在cygwin环境下安装二进制skyeye
把二进制文件从linux或cygwin的根目录下解开既可使用。如果你选择把cygwin安装到的d:\cygwin目录下。则执行cygwin bash shell后的仿unix环境的根目录“/”实际上就是d:\cygwin目录。
把SkyEye-0.1 for cygwin二进制文件skyeye-0.1.bin.cygwin.1.3.17.tar.bz2下载并拷贝到d:\cygwin目录下后,在cygwin bash shell环境中的根目录“/”下就存在了文件skyeye-0.1.bin.cygwin.1.3.17.tar.bz2。然后在cygwin bash shell环境中的的根目录“/”下执行:
tar jxvf skyeye-0.1.bin.cygwin.1.3.17.tar.bz2
就把skyeye的执行文件安装到cygwin bash shell环境中“/usr/local/bin”下。
用户可试着在根目录下执行命令“skyeye”,如果出现了如下显示则表示安装成功。
2. 在cygwin环境下编译skyeye
如果自己想在cygwin环境下编译skyeye,则比较麻烦,可参考skyeye源码包中的说明文档buildskyeyeoncygwin.txt
3. 建立源码调试环境
A 建立uC/OS-II源码调试环境
注意:如果要重新编译,请选择ucosii for skyeye 1.0.1以上版本!
假设要把uC/OS-II源码调试环境建立在“/tmp/ucos/sourcecode”目录下。
把uC/OS-II for SkyEye VerA 源码 ucosii-verA-skyeye-1.0.tar.bz2或 uC/OS-II for SkyEye VerB源码 ucosii-verA-skyeye-1.0.tar.bz2解压到/tmp/ucos下:
以uC/OS-II for SkyEye VerA为例:
把ucosii-verA-skyeye-1.0.tar.bz2下载并拷贝到d:\cygwin\tmp目录下,则执行cygwin bash shell后的仿unix环境的根目录“/tmp”实际上就是d:\cygwin\tmp目录。
然后在cygwin bash shell环境下执行如下命令:
mkdir /tmp/ucos
cd /tmp/ucos
tar jxvf ../ucosii-verA-skyeye-1.0.tar.bz2
然后把uC/OS-II for SkyEye VerA执行文件 ucosii-verA.elf拷贝到d:\cygwin\tmp\ucos\sourcecode下
最后把uC/OS-II内存布局配置文件拷贝到d:\cygwin\tmp\ucos\sourcecode下,并在cgywin环境下执行改名命令:
cd /tmp/ucos/sourcecode/
mv ucosmemmap.conf memmap.conf
B 建立uclinux源码调试环境
假设要把uclinux源码调试环境建立在“/tmp/uclinux/uClinux-dist-20020816”目录下。
把uclinux-2.4.x精简压缩包uclinux.lightsrc.tar.bz2下载并拷贝到d:\cygwin\tmp目录,即cygwin环境的目录”/tmp”
解压uclinux-2.4.x精简压缩包,命令如下:
cd /tmp
tar jxvf uclinux.lightsrc.tar.bz2
则uclinux相关文件就安装到“/tmp/uclinux/uClinux-dist-20020816”目录下了。
最后把 uclinux内存布局配置文件 uclinuxmemmap.conf拷贝到d:\cygwin\tmp\uclinux\uClinux-dist-20020816下,并在cgywin环境下执行改名命令:
cd /tmp/uclinux/uClinux-dist-20020816/
mv uclinuxmemmap.conf memmap.conf
如果 你想把uclinux-2.4.x精简压缩包解压到/usr/local/目录下,
则把uclinux-2.4.x精简压缩包uclinux.lightsrc.tar.bz2下载并拷贝到d:\cygwin\usr\local目录,即cygwin环境的目录”/usr/local”
解压uclinux-2.4.x精简压缩包,命令如下:
cd /usr/local
tar jxvf uclinux.lightsrc.tar.bz2
ln –s /usr/local/uclinux /tmp/uclinux
注意:/tmp/uclinux是uclinux-2.4.x精简压缩包的缺省安装目录。
4. 执行调试程序
A 调试ucos
在cygwin环境下执行如下操作:
cd /tmp/ucos/sourcecode
skyeye
在skyeye环境中执行:
file ucosii-verA.elf (如果建立的是ucosii-verB环境,则执行file ucosii-verB.elf)
target sim
load
run
然后你可以用”Ctrl-C”中断ucos的执行,通过命令
p x
p y
可以查看task1对x的修改情况,和task2对y的修改情况,
通过命令
p OSCtxSwCtr
可以查看ucos执行上下文切换的次数。
B 调试 uclinux
在cygwin环境下执行如下操作:
cd /tmp/uclinux/uClinux-dist-20020816
skyeye
在skyeye环境中执行:
file linux-2.4.x/linux
target sim
load
run
这时应该可以看到uclinux的启动画面。
如果需要进一步调试,需要学习gdb的命令使用。
5. 从源码生成ucosii的执行码
注意:
l 如果要重新编译,请选择ucosii for skyeye 1.0.1以上版本的源代码。
l ucosii for skyeye 1.1以上版本支持printf功能,但目前不能在cygwin环境下编译通过,但可在linux环境下编译通过后,在cygwin环境下执行。
l uC/OS-II的执行文件和源码要放在一个目录下。
l memmap.conf所在目录和当前执行skyeye的目录要等同。
5.1 建立arm-tools in cygwin 环境
下载 arm-tools in cygwin的软件包
arm-linux-binutils-cygwin-2.9.5.0.37.tgz
arm-linux-gcc-cygwin-2.95.3.tgz
libc6-arm-cross-2.1.3-19.tgz
libc6-dev-arm-cross-2.1.3-19.tgz
如果你选择把cygwin安装到的d:\cygwin目录下。则执行cygwin bash shell后的仿unix环境的根目录“/”实际上就是d:\cygwin目录。把上软件包下载并拷贝到d:\cygwin目录下后,在cygwin bash shell环境中的根目录“/”下就存在上述文件。然后在cygwin bash shell环境中的的根目录“/”下执行:
tar zxvf arm-linux-binutils-cygwin-2.9.5.0.37.tgz
tar zxvf arm-linux-gcc-cygwin-2.95.3.tgz
tar zxvf libc6-arm-cross-2.1.3-19.tgz
tar zxvf libc6-dev-arm-cross-2.1.3-19.tgz
执行命令
tar jxvf ucos_verb_skyeye-1.x.x.src.bz2
解开源码软件包
然后,你可在ucos的安装目录(设安装目录为”/tmp/ucos/sourcecode”)下执行命令:
make
则可在ucos的安装目录下生成ucos.elf ucos.s ucos.r ucos.n
最后在ucos的安装目录下执行skyeye,就可以调试你编译的ucos.elf操作系统和应用程序了(与4中的描述相同)。
注意:ucosii for skyeye 1.1以上版本支持printf功能,但目前不能在cygwin环境下编译通过,但可在linux环境下编译通过后,在cygwin环境下执行。
目前提供的在cygwin环境下的支持arm的交叉编译工具集有两个。
另一个由别人制作的在cygwin环境下的支持arm的交叉编译工具集可在
ftp://166.111.68.183/pub/embed/devtool/gcc-arm-cygwin/
处下载,如果大家想在cygwin环境下重新编译uclinux,大家可以试用一下。
二 在linux环境下安装SkyEye懂linux还不懂如何安装吗? J
注意:
/tmp/uclinux是uclinux-2.4.x精简压缩包的缺省安装目录
建议使用redhat7.1以上版本的系统。
建议使用arm-elf-tools-20011219.tar.gz为交叉编译工具编译arm程序
建议使用gcc2.96 gcc3.2 编译skyeye
1 在linux 下安装 skyeye,编译并运行 ucosii for skyeye
1 在linux 下安装skyeye
解开skyeye-0.1.1.src.tar.bz2,按照SkyEye.README介绍的步骤做configure,make,make install
需要指出的是,在mandrake8.2环境中,make 时会有error,不过不是什么大问题,
error:display.c->tcap.h->termcap.h:no such file or directory
在本机/usr/include下find一下,termcap.h头文件在/usr/include/ncurses目录下,
将termcap.h中的<termcap.h>改成<ncurses/termcap.h>
重新执行make就ok了。
执行make install命令后,skyeye默认安装在/usr/local/bin/目录下,你可以通过改configure命令参数prefix来改变安装路径。
2 安装arm交叉编译器
下载arm-elf-tools-20011219.tar.gz
将arm-elf-tools-20011219.tar.gz在本机的根目录下用tar命令解开,
则相关软件安装在/usr/local/bin和/usr/local/arm-elf目录下。
3 编译 ucosii for skyeye
下载ucosii for skyeye源代码
注意: 1.1以上版本支持printf功能
执行命令
tar jxvf ucos_verb_skyeye-1.x.x.src.bz2
解开源码软件包
然后,你可在ucos的安装目录(设安装目录为”/tmp/ucos/sourcecode”)下执行命令:
make
则可在ucos的安装目录下生成ucos.elf ucos.s ucos.r ucos.n
最后在ucos的安装目录下执行skyeye,就可以调试你编译的ucos.elf操作系统和应用程序了。
2 在mandrake linux8.2 下安装skyeye并运行uClinux-dist-20020927.tar.gz
感谢star提供的SkyEye在linux上的安装使用过程描述
运行环境:mandrake linux8.2
源码包及其他所需文件:ftp://202.99.11.120/pub/mirrors/skyeye/ 或 ftp://166.111.68.183/pub/embed/
skyeye-0.1.1.src.tar.bz2
arm-elf-tools-20011219.tar.gz
uClinux-dist-20020927.tar.gz
romfs.2.4.x.gz
uclinuxmemmap.conf
1 在linux 下安装skyeye
2编译uclinux
先安装交叉编译器,将arm-elf-tools-20011219.tar.gz在本机的根目录下tar开,解到/usr/local/arm-elf目录下。
将uClinux-dist-20020927.tar.gz解开,比如解开在/usr/src/uclinux-dist/下,然后在/usr/src/uclinux-dist/目录下执行如下命令:
在图形方式下可用命令 make xconfig 或 在命令行方式下可用命令 make menuconfig
在vendor/product中选择GDB/ARMulator,kernel版本选择2.4,save and exit.
------------------------------------------------------------------------------------------------------------------------------------------------
方案A
如果带调试信息的linux kernel执行文件
make dep;make linux
这时在/usr/src/uclinux-dist/linux-2.4.x目录下生成linux文件
方案B
如果想一步生成带调试信息的linux kernel执行文件和linux kenel 执行文件映像和磁盘映像文件romfs.img
可简单是运行命令 make dep; make 就行了。可查看/usr/src/uclinux-dist/images/下是否有文件 romfs.img等
-------------------------------------------------------------------------------------------------------------------------------------------------
在/usr/src/uclinux-dist目录下,
cp ulinuxmemmap.conf memmap.conf
------------------------------------------------------------------------------------------------------------------------------------------------
方案A
gunzip romfs.2.4.x.gz
cp romfs.2.4.x boot.rom
romfs.2.4.x其实就是磁盘映像文件。
方案B
也可以在/usr/src/uclinux-dist下make romfs ;make image来生成romfs.img。
如果想使用自己编译的romfs.img,则在目录/usr/src/uclinux-dist下执行命令
ln –s images/romfs.img boot.rom
-------------------------------------------------------------------------------------------------------------------------------------------------
这个时候就可以用skyeye来调试运行kernel了,在/usr/src/linux-dist:
skyeye linux-2.4.x/linux
(gdb)target sim
(gdb)load
(gdb)run
kernel start.....
注意要在 memmap.conf 和boot.rom所在目录下执行skyeye。
你可以在run之前给kernel设置断点来调试。目前skyeye支持的arm core基于arm7tdmi,没有mmu,所以只能跑ucos,uclinux,不过他们正在做更多的努力,相信很快skyeye也可以支持arm linux。
太及时了!昨天还上网找呢。呵呵
【 在 fzylijun886 (北邮人) 的大作中提到: 】
: SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目”。SkyEye的目标是在通用的Linux和 Windows平台实现一个纯软件模拟集成开发环境,模拟常见的嵌入式计算机系统(这里我们假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行Linux、uClinux以及uC
: SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件�
: 在32位嵌入式CPU领域中,ARM系列CPU所占比重相当大,因此SkyEye首先选择了ARM CPU核作为模拟目标CPU核。目前在SkyEye上可运行并进行源码级调试Linux、uClinux、uC/OS-II操作系统和LwIP(一个著名的嵌入式TCP/IP实现)等系统软件。SkyEye可用于学习,分析,开发Linux、ucli
: ...................