Skyeye安装笔记和使用

Skyeye安装笔记 和使用
1.简介
SkyEye是一个开源软件项目,它是在Linux和Windows平台上实现一个纯软件模拟集成开发环境,模拟常见的嵌入式系统。可以在SkyEye上运行Linux,uClinux以及uC/OS-II等多款嵌入式操作系统和各种系统软件。
目前最新版本的SkyEye是skyeye-1.2-RC6.tar.bz2版本,该版本可以从www.skyeye.org获取。SkyEye目前支持多款嵌入式处理器:
ATMEL AT91X40
PHILIPS LPC2xxxx
Samsung s3c4510b
Samsung s3c44b0
Cirrus Logic EP7312
sharp LH79520
Cirrus Logic EP9312
cs89712
sa1100
xscale pxa250 lubbock developboard
xscale pxa270 mainstone developboard
at91RM9200
s3c2410x
s3c2440
sharp lh7a400 developbaord
NetSilicon ns9750
Philips LPC2210

对于附加设备该项目已经完成对Flash,LCD,Network Interface Card,touchsceen, UART的支持

2.SkyEye的安装
下面我就以最新版本的skyeye-1.2.RC6为例子安装SkyEye.
我的系统配置入下
操作系统: Fedora Core 2 Linux(2.4.x)
GCC Version: 3.3.2
arm-elf-gcc Version: 2.95.3 20010315

首先从www.uClinux.org下载arm-elf-tools,里面包含arm-elf-gcc, arm-elf-ld等工具。下载后可以通过如下方式安装:
$su -c './arm-elf-tools-20030315.sh'
$password:

安装完毕后,可以进入存放skyeye的目录,例如我的是放在/home/jelly/download/目录。然后进行解压。
$cd ~/download
$ls
skyeye-1.2-RC6.tar.bz2

$tar jxvf skyeye-1.2-RC6-tar.bz2

然后进入解压的skyeye目录
$cd skyeye-v1

最后使用make命令进行软件的安装,编译完毕后会在binary生成一个skyeye可执行文件,该文件就是skyeye模拟器了。
使用make命令的时候可以加入一些选项参数,例如:
不允许DBCT
$make NO_DBCT=1

不支持LCD
$make NO_LCD=1

不支持BFD库
$make NO_BFD=1

不支持网络设备
$make NO_NET=1

如果在binary目录下生成了skyeye文件,那么安装成功。下面我以uClinux为例子,在skyeye上模拟。
可以通过使用-h参数来获取帮助
$skyeye -h
------------------------- SkyEye -V1.2 ---------------------------
Usage: SkyEye [options] -e program [program args]
Default mode is STANDALONE mode
------------------------------------------------------------------
Options:
-e exec-file the (ELF executable format)kernel file name.
-d in GDB Server mode (can be connected by GDB).
-c config-file the skyeye configure file name.
-h This Help Display
-v This shows arch and cpu supported
------------------------------------------------------------------
-e 指定elf各式的内核文件
-d GDB调试模式
-c 指定配置文件
-h 获取帮助
-v 显示体系结构和CPU支持信息(不知道是不是我用的这个版本没有实现该功能,使用-v选项后显示:Unknown option '-v')


3.uClinux移植
www.uclinux.org网站上下载比较新的内核包文件,并且解压。
$tar xvzf uClinux-dist-xxxxxxxx.tar.gz
进入生成的uClinux-dist目录
可以使用make xconfig - 图形配置模式,make menuconfig - 菜单模式配置,方式来配置uClinux.
在uClinux-dist目录下执行:
$make xconfig

在Target Platform Selection选项卡中选择:
Vendor/Product: GDB/ARMulator
Kernel Version: linux-2.4.x
Libc Version: uC-libc
然后选择save and exit

完成配置后,可以使用make dep建立内核依赖关系,然后使用make编译内核和文件系统
$make dep; make

经过一段时间的编译后,如果没有出现错误,则在uClinux-dist目录下的images目录里会建立如下几个文件:
image.bin linux.data linux.text. romfs.img
该romfs.img就是我们需要的文件系统映象了
同时,在uClinux-dist/linux-2.4.x/目录下会生成linux,该文件是一个我们需要模拟的内核文件。

接下来我们可以使用skyeye软件来模拟我们编译的uClinux系统了。
我们在uClinux-dist目录下建立一个名为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
lcd: state=on

保存退出

然后在uClinux-dist目录里执行~/download/skyeye-v1/binary/skyeye -e linux-2.4.x/linux
看看uclinux是不是跑起来了?
下面是我的输出

arch: arm
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name at91, mach_init addr 0x80727e0
can't find device module: (null)
SKYEYE: use arm7100 mmu ops
Loaded ROM images/romfs.img
exec file "linux-2.4.x/linux"'s format is elf32-little.
load section .init: addr = 0x01000000 size = 0x0000a000.
load section .text: addr = 0x0100a000 size = 0x000c5ca0.
load section .data: addr = 0x010d0000 size = 0x00008320.
not load section .bss: addr = 0x010d8320 size = 0x00022198 .
not load section .debug_abbrev: addr = 0x00000000 size = 0x00039846 .
not load section .debug_info: addr = 0x00000000 size = 0x016b812f .
not load section .debug_line: addr = 0x00000000 size = 0x00378ef3 .
not load section .debug_pubnames: addr = 0x00000000 size = 0x0000b40d .
not load section .debug_aranges: addr = 0x00000000 size = 0x000022e0 .
start addr is set to 0x01000000 by exec file.
Linux version 2.4.19-uc1 (jelly@localhost.localdomain) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #1 五 4#1 五 4月 7 23:41:40 CST 2006
Processor: Atmel AT91M40xxx revision 0
Architecture: EB01
On node 0 totalpages: 1024
zone(0): 0 pages.
zone(1): 1024 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 12.97 BogoMIPS
Memory: 4MB = 4MB total
Memory: 3036KB available (791K code, 170K data, 40K init)
Dentry cache hash table entries: 512 (order: 0, 4096 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 1024 (order: 0, 4096 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Atmel USART driver version 0.99
ttyS0 at 0xfffd0000 (irq = 2) is a builtin Atmel APB USART
ttyS1 at 0xfffcc000 (irq = 3) is a builtin Atmel APB USART
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: 1400000-145DBFF [VIRTUAL 1400000-145DBFF] (RO)
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 512)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (romfs filesystem) readonly.
Shell invoked to run file: /etc/rc
Command: hostname GDB-ARMulator
Command: /bin/expand /etc/ramfs.img /dev/ram0
Command: mount -t proc proc /proc
Command: mount -t ext2 /dev/ram0 /var
Command: mkdir /var/tmp
Command: mkdir /var/log
Command: mkdir /var/run
Command: mkdir /var/lock
Command: cat /etc/motd
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ /| | | |/ // /
| |_| | |__| || | | | | |_| |/ /
| ___/____|_||_|_| |_|/____|/_//_/
| |
|_|

GDB/ARMulator support by <davidm@snapgear.com>
For further information check:
http://www.uclinux.org/

Execution Finished, Exiting

Sash command shell (version 1.1.1)
/>

对于skyeye.conf文件的一点说明
对于skyeye-v0.2.5版本之前的skyeye使用的是memmap.conf文件,而之后的是使用skyeye.conf文件
cpu: 指定CPU类型,如arm7tdmi,arm720t等
mach: 开发板类型,如at91, ep7312
mem_bank: 内存块
map=M 指定为rom/ram, map=I 指定为IO空间
type=RW 可读写,type=R 只读
addr=0x00000000 内存块开始地址
size=0x10000000 内存块大小
files=romfs.img 文件系统映象文件
net: 网络配置
state=on 模拟NIC,等于off则不模拟
mac=0:4:3:2:1:f 指定MAC地址
ethmod=tuntap/vnet 使用虚拟驱动
hostip= 指定ip地址
例如:net: state = on, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1

uart: 串口支持
fd_in= 指定输入文件
fd_out= 指定输出文件
例如:uart: fd_in=/dev/ttyS0, fd_out=/dev/ttyS1
则你可以使用minicon来监听COM1口来进行数据交换

LCD:LCD模拟
state = on/off 打开或者关闭LCD模拟

4.SkyEye调试功能
要使用SkeyEye调试功能,可以在执行的时候加入-d参数,例如:
$skyeye -e linux -d
这时就在本机的12345端口开启了gdb服务

这时重新开一个终端程序
$arm-elf-gdb linux
(gdb)target remote 127.0.0.1:12345
此时就可以象使用本地gdb一样来调试服务端的uClinux了。


5.参考文档
1.skyeye源码
2.SkyEye User Manual http://skyeye.sourceforge.net/wiki/UserManual
3.skyeyelcdts http://gro.clinux.org/frs/download.php/789/SkyEyelcdtouchscreen4gro.pdf
4.skyeyeinternal http://gro.clinux.org/frs/download.php/719/skyeyeinternal-0.6.8.pdf
5.hardwaredoc4skyeye http://gro.clinux.org/frs/download.php/835/hardwaredoc4skyeye.tar.bz2

 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
对于那些想进行嵌入式系统软件开发和学习,或者想研究嵌入式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协议栈等

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值