原创 skyeye的安装使用

2007-4-19 10:44 2849 3 4 分类: MCU/ 嵌入式
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了。
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户60509 2007-4-19 16:33

hao ,你好,我的系统是windows xp的,在上面用cygwin装skyeye,能不能发一分到我xuhaiqing88@gmail.com

相关推荐阅读
用户71670 2010-01-20 16:38
GUN make 语法
译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix(当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的...
用户71670 2009-12-29 10:24
latch与dff区别
6 标签: 无标签 ...
用户71670 2009-12-08 15:09
wxWidgets编译多种库(转载)
这几天研究了一下如何在Debian Lenny下编译wxWidgets,实现多个库共存。有点入门,写出来与感兴趣的朋友一起研究。这里编译的是wxGTK 2.8.7版本,解压后,进入解压的目录,建立4个...
用户71670 2009-10-29 09:10
字符串转化为数字
6.1.2  字符串转化为数字面试例题3:使用库函数将字符串转换为数字。考点:C库函数中字符串转换为数字的使用。出现频率:★★★★解析与上节数字转换为字符串类似,C/C++语言提供了几个标准库函数,可...
用户71670 2009-09-27 16:23
ucf文件约束法
1.约束文件的概念 FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。3类约束文件的关...
用户71670 2009-09-06 10:12
#pragma使用详解
在所有的预处理指令中,#Pragma>指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全...
EE直播间
更多
我要评论
1
3
关闭 站长推荐上一条 /3 下一条