SkyEye 简介

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

对于那些想进行嵌入式系统软件开发和学习,或者想研究嵌入式Linux等操作系统和一些底层系统软件(如TCP/IP等)的研究和开发人员来说,可能存在如下几方面的问题:(1)经常苦于经费不足,缺少足够的硬件开发板和完善的软件开发环境,相关的书籍对一些最新软件的分析还不够全面,无法深入研究和开发嵌入式软件。(2)高层次的软件设计和开发一般不用太考虑底层硬件的实现细节,如果直接处于一个具体的硬件环境下,在开发和研究中可能会陷入硬件的具体细节中不能自拔,而不能把精力放到高层次的软件设计和开发上。(3)如果硬件开发环境不太稳定(这种情况经常见到),且对具体的硬件不是很了解,则可能在排除问题上花费大量的不必要的时间。(4)如果你想自己尝试设计一个操作系统,则先在一个提供源码级调试的软件仿真器上进行开发,可能会大大提高你的开发进度。<br><br>对于想了解、学习一般操作系统的实现原理,Linux/μCLinux操作系统或TCP/IP等系统级软件的实现的人员,目前一般采用的方法是看书和读源代码,这是一种静态的学习方法,效率较低,比较枯燥,缺少亲自实践的感觉。要想深入分析和开发软件,就要动手编程,不能只是看看书,读读代码,只有通过亲手实践才能够掌握软件设计的核心内容。上面所指出的问题和需求促使SkyEye项目的诞生。 <br><br>3.SkyEye的目标和意义 <br>SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定"仿真"和"模拟"的意思基本相同);可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。<br><br>3.SkyEye的目标和意义 <br>SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定"仿真"和"模拟"的意思基本相同);可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。<br><br>纯软件的模拟器有许多种,如模拟一个芯片时序逻辑的模拟器、只模拟CPU指令的模拟器、模拟整个硬件开发板的模拟器、模拟一个PDA的模拟器等。存在一些纯软件的仿真器或模拟器,如Stanford大学的SimOS模拟器,它仿真的是MIPS系列CPU和相关外设,可以在其上运行SGI公司的Irix操作系统和软件,目前基本上停止了进一步的开发;PSIM是一个仿真PowerPC指令集的模拟器,目前只支持简单的命令行应用程序;xcopilot是一个PDA模拟器,它是由Greg Hewgill出于个人喜好编写的,它仿真的是M68K CPU,通过它可以给基于PalmOS的软件开发者提供一个模拟开发环境。Bochs是一个仿真x86 CPU的开源项目,目前还支持AMD64 CPU,在它上面可以运行Linux操作系统。其它一些商业的仿真软件如vmware和virtualPC可以仿真一个真实的x86计算机,而Virtutech Simics仿真器可以仿真多种CPU和硬件,功能强大,可用于硬件和系统软件的评测。<br><br>SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。SkyEye在时钟节拍的时序上不保证与硬件完全相同,对软件透明的一些硬件仿真进行了一定的简化。这样带来的好处是SkyEye的执行效率更高。SkyEye的推出具有下面三方面的意义:<br><br>通过SkyEye仿真集成环境可以很方便地进入到嵌入式系统软件学习和开发的广阔天地中。尤其对于缺少嵌入式硬件开发环境和软件开发环境的用户来说,它将是一个非常有效的学习工具和开发手段,因为SkyEye的整个软件系统都是Open Source的,且基于GPL协议(μCOS-II除外)。因此,如果要学习Linux操作系统或者进行嵌入式系统开发,但苦于没有硬件支持,SkyEye仿真环境软件是一个很好的选择! <br>如果想研究与具体硬件无关的系统软件(如TCP/IP协议栈等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值