Install and use Skyeye
1. Introduction
Skyeye is an open-source software project that implements a pure software simulated integrated development environment on Linux and Windows platforms to simulate common embedded systems. You can run Linux, uClinux, uC/OS-II and other embedded operating systems and various system software on Skyeye.
Currently, the latest version of skyeyeis skyeye-1.2-rc6.tar.bz2, which can be obtained from www.skyeye.org. Skyeye currently supports multiple embedded processors:
ATMEL at91x40
Philips lpc2xxxx
Samsung s34510b
Samsung s44b0
Cirrus Logic EP7312
Sharp lh79520
Cirrus Logic ep9312
Cs89712
Sa1100
XScale pxa250 Lubbock developboard
XScale PXA270 mainstone developboard
At91rm9200
S3C2410X
S3C2440
Sharp lw.a400 developbaord
Netsilicon ns9750
Philips lpc2210
This project has completed support for flash, LCD, network interface card, touchsceen, and UART.
2. Install Skyeye
Next I will take the latest version of the skyeye-1.2.RC6 as an example to install Skyeye.
Go to my system configuration
Operating System: Fedora Core 2 Linux (2.4.x)
GCC version: 3.3.2
Arm-elf-GCC version: 2.95.3 20010315
First, download arm-elf-tools from www.uclinux.org, which contains tools such as arm-elf-GCC and arm-elf-lD. After downloading the SDK, you can install it as follows:
$ Su-c './arm-elf-tools-20030315.sh'
$ Password:
After the installation is complete, you can enter the directory for storing Skyeye. For example, my files are stored in the/home/jelly/download/directory. Decompress the package.
$ Cd ~ /Download
$ Ls
Skyeye-1.2-RC6.tar.bz2
$ Tar jxvf skyeye-1.2-RC6-tar.bz2
Then go to the extracted Skyeye directory.
$ Skyeye-v1 CD
Finally, use the make command to install the software. After compilation, A Skyeye executable file is generated in binary. The file is the Skyeye simulator.
You can add some option parameters when using the make command, for example:
Dbct not allowed
$ Make no_dbct = 1
LCD is not supported
$ Make no_ LCD = 1
BFD library not supported
$ Make no_bfd = 1
Network devices are not supported
$ Make no_net = 1
If the Skyeye file is generated in the binary directory, the installation is successful. The following uses uClinux as an example to simulate on Skyeye.
You can use the-h Parameter for help.
$ 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 specifies various elf kernel files
-D gdb debugging mode
-C: Specify the configuration file
-H for help
-V: displays the architecture and CPU support information. (I don't know if this function is not implemented in this version. If you use the-V option, the "unknown option" option is displayed ')
3. Porting uClinux
Download and decompress the new kernel package from www.uclinux.org.
$ Tar xvzf uClinux-dist-xxxxxxxx.tar.gz
Go to the generated uClinux-Dist directory
You can use make xconfig-graph configuration mode and make menuconfig-menu mode to configure uClinux.
Run the following command in the uClinux-Dist directory:
$ Make xconfig
On the target platform selection tab, select:
Vendor/product: GDB/armulator
Kernel version: linux-2.4.x
Libc version: UC-libc
Then select Save and exit.
After the configuration, you can use make Dep to establish the kernel dependency, and then use make to compile the kernel and file system.
$ Make Dep; make
After a period of compilation, if no error occurs, the following files will be created in the images directory under the uClinux-Dist directory:
Image. Bin Linux. Data Linux. Text. romfs. img
The romfs. IMG is the file system image we need.
At the same time, in the uClinux-Dist/linux-2.4.x/directory will generate Linux, this file is a kernel file we need to simulate.
Next we can use the Skyeye software to simulate our compiled uClinux system.
In the uClinux-Dist directory, create a configuration file named Skyeye. conf.
The content is as follows:
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
Save and exit
Then execute ~ In the uClinux-Dist directory ~ /Download/skyeye-v1/binary/Skyeye-e linux-2.4.x/Linux
Check whether uClinux is running?
Below is my output
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 = 0x000000ef3.
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 /)) #2006 4 #23:41:40 CST
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: 4 MB = 4 MB total
Memory: 3036kb available (791 K code, 170 K data, 40 k 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 uniix
Linux net4.0 in 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 kenth albanowski
Blkmem 1 Disk Images:
0: 1400000-145dbff [Virtual 1400000-145dbff] (RO)
Ramdisk driver initialized: 16 RAM disks of 4096 K 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, 4 Kbytes
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
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
______
/__ | _ |
_ | _________
| _/| ////
| _ | |__ | _ | //
| ___/____ | _ |/____ | /_//_/
|
| _ |
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)
/>
Some instructions on the Skyeye. conf file
For Skyeye versions earlier than the skyeye-v0.2.5 version, memmap. conf is used, and later Skyeye. conf is used
CPU: Specifies the CPU type, such as ARM7TDMI and arm720t.
Mach: Development Board type, such as at91 and EP7312
Mem_bank: memory block
Map = m is specified as ROM/Ram, map = I is specified as IO Space
Type = RW read/write, type = r read-only
ADDR = 0x00000000 memory block start address
Size = 0x10000000 memory block size
Files = romfs. IMG File System Image File
Net: Network Configuration
State = on simulate Nic, equal to off, do not simulate
MAC = 0: 4: 3: 2: 1: F specify the MAC address
Ethmod = tuntap/vnet virtual driver
Hostip = specified IP Address
For example: Net: State = on, Mac = 0: 4: 3: 2: 1: F, ethmod = tuntap, hostip = 10.0.0.1
UART: Serial Port support
Fd_in = specifies the input file
Fd_out = Specify the output file
Example: UART: fd_in =/dev/ttys0, fd_out =/dev/ttys1
Then you can use minicon to listen to the COM1 port for data exchange.
LCD: LCD Simulation
State = On/Off enable or disable LCD Simulation
4. Skyeye debugging
To use the skeyeye debugging function, you can add the-D parameter during execution, for example:
$ Skyeye-e Linux-d
In this case, the gdb service is enabled on port 12345 of the local machine.
Then re-open a terminal program
$ Arm-elf-GDB Linux
(GDB) target remote 127.0.0.1: 12345
In this case, you can debug uClinux on the server just like using local GDB.
5. References
1. Skyeye source code
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