Skyeye 安裝筆記

admin @ 2014-03-25 , reply:0

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




[admin via 研發互助社區 ] Skyeye 安裝筆記已經有1103次圍觀

http://cocdig.com/docs/show-post-42310.html