|
-------------------------------------------------------------
SkyEye简介
-------------------------------------------------------------
166.111.68.183是国内教育网中的IP,主要用于放置内部测试软件和文档。如果允许出国访问,需要花钱,我们无法承受。
所以比较稳定的最新软件,demo和文档都放在 gro.clinux.org/projects/skyeye/下
主要的文档在
http://gro.clinux.org/frs/download.php/719/skyeyeinternal-0.6.8.pdf
http://gro.clinux.org/frs/download.php/789/SkyEyelcdtouchscreen4gro.pdf
http://gro.clinux.org/frs/download.php/835/hardwaredoc4skyeye.tar.bz2
也可以到
http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part1/index.shtml
等.
看比较新的skyeye 设计文档。
视频演示教程可到 http://www.lumit.org/dn_video.htm
和 http://gro.clinux.org/frs/download.php/834/demovideo.tar.bz2 下载。
-----------------------------------------------------------------------
SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目”。SkyEye的目标是在通用的Linux和 Windows平台实现一个纯软件模拟集成开发环境,模拟常见的嵌入式计算机系统(这里我们假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行Linux、?clinux以及?C/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配置选项
----------------------------------------------------------------
了解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=xxxxxxx 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
最后进行编辑的是 chyyuu on 2004-01-04, 10:51pm, 总计第 1 次编辑
--------------------------------------------------------------
SkyEye使用简介
--------------------------------------------------------------
1 在linux 下安装skyeye
1.1 从源代码进行安装skyeye
下载最新的skyeye-v0.x.x.tar.bz2源码包,目前最新的为skyeye-v0.4.7.tar.bz2
解开skyeye-v0.x.x.tar.bz2 :
tar jxf skyeye-v0.x.x.tar.bz2
进入解压后的skyeye目录,按照SkyEye.README介绍的步骤做configure,make,make install
cd skyeye
./configure --target=arm-elf --prefix=/usr/local --without-gtk-prefix --without-gtk-exec-prefix --disable-gtktest
make
make install
如果一切正常,则在/usr/local/bin目录下,有一个执行文件skyeye
注意:
需要指出的是,在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来改变安装路径。
1.2 直接安装编译好的skyeye
下载最新的skyeye执行代码skyeye-0.x.x-redhat9.0.bin (目前只提供了在redhat9下编译好的代码),目前最新的版本为 skyeye-0.4.7-redhat9.0.bin
把下载的skyeye-0.4.7-redhat9.0.bin 移动到/usr/local/bin下,并改名为skyeye,改变skyeye的属性:
mv skyeye-0.4.7-redhat9.0.bin /usr/local/bin/skyeye
chmod 755 /usr/local/bin/skyeye
2 安装arm-elf交叉编译器 (用于编译ucosii4skyeye 和 uclinux4skyeye)
下载arm-elf-tools-20030314.sh 位于 ftp://166.111.68.183/pub/embed/uclinux/soft/tools/arm目录下,或到www.uclinux.org处下载
改变文件属性,并执行:
chmod 755 arm-elf-tools-20030314.sh
./arm-elf-tools-20030314.sh
结束后,arm-elf-gcc/gdb....工具会安装到/usr/local/bin下
3 安装 ucosii for skyeye
3.1 从源码安装
下载ucosii for skyeye源代码,目前的最新版本源代码为ucosii4skyeye-v1.8.2.tgz
解压文件:
tar zxf ucosii4skyeye-vx.x.x.tgz
进入解压生成的目录下,编译ucosii for skyeye:
cd ucosii4skyeye
make config
make dep
make
结束后,则生成五个sample的执行文件,分别位于ucosii4skyeye/samples/对应的应用名目录下。
3.2 直接下载编译好的cuosii for skyeye
目前最新的版本为ucosii4skyeye-binary-v1.8.tgz
解压文件:
tar zxf ucosii4skyeye-binary-v1.8.2.tgz
4 调试 ucosii for skyeye
在一个存在 skyeye.conf和*.elf文件(设为simple_test.elf)的目录下,执行:
skyeye simple_test.elf
(skyeye) target sim
(skyeye) load
(skyeye) run
就可以看到程序运行的情况
5 编译并运行uClinux-dist-20020927.tar.gz
运行环境:redhat9
前提:安装了 arm-elf-tools工具
以uClinux-dist-20020927.tar.gz为例。位于 ftp://166.111.68.183/pub/embed/uclinux/soft/目录下,或到www.uclinux.org处下载
将uClinux-dist-20020927.tar.gz下载并解开,比如解开在/usr/src/uclinux-dist/下,然后在/usr/src/uclinux-dist/目录下执行如下命令:
tar zxf uClinux-dist-20020927.tar.gz
cd uClinux-dist
在图形方式下可用命令 make xconfig 或 在命令行方式下可用命令 make menuconfig
在vendor/product中选择GDB/ARMulator,kernel版本选择2.4,save and exit.
------------------------------------------------------------------------------------------------------------------------------------------------
这时在/usr/src/uclinux-dist/linux-2.4.x目录下生成linux文件
如果想一步生成带调试信息的linux kernel执行文件和linux kenel 执行文件映像和磁盘映像文件romfs.img
可简单是运行命令
make dep
make
就行了。可查看/usr/src/uclinux-dist/images/下是否有文件 romfs.img等
在/usr/src/uclinux-dist/linux-2.4.x目录下生成linux的elf格式的内核执行文件
-------------------------------------------------------------------------------------------------------------------------------------------------
在 uclinux-dist 目录下建立仿真AT91的skyeye配置文件 skyeye.conf,内容如下:
cpu: arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=images/romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
这个时候就可以用skyeye来调试运行kernel了,在/usr/src/uclinux-dist执行如下命令:
skyeye linux-2.4.x/linux
(skyeye)target sim
(skyeye)load
(skyeye)run
kernel start.....
注意:
要在 skyeye.conf 所在目录下执行skyeye。
6 下载测试软件集合
目前最新版本的测试软件集合为:
skyeye-binary-testsuits-in-rh9-2003-09-21.tar.bz2
到 ftp:/166.111.68.183/pub/embed/skyeye/binary/下载
解压并测试:
tar jxf skyeye-binary-testsuits-in-rh9-2003-09-21.tar.bz2
cd test
可以看到有编译好的skyeye 和编译好的针对各个硬件平台的内核代码
执行过程与上面类似 |
|