求助:用SKYEYE仿真三星S3C44B0X
我用的是杭州立宇泰公司生产的ARMSys(处理器S3C44B0X)大家有谁仿真成功的,交流下
我用立宇泰公司给的uclinux_armsys_051111.tgz包编译出来的内核老是不能成功用在SKYEYE上,大侠帮帮忙好吗?
配置
#skyeye config file sample
cpu: arm7tdmi
mach: s3c44b0
mem_bank: map=M, type=R,addr=0x00000000, size=0x00200000
#mem_bank: map=M, type=R,addr=0x01C00000, size=0x02000000
#mem_bank: map=M, type=R,addr=0x00000000, size=0x00200000
mem_bank: map=M, type=RW, addr=0x0C000000, size=0x00800000,file=../images/image.rom,boot=yes
mem_bank: map=I, type=RW, addr=0x01c00000, size=0x08400000
运行:
***********************************************************************
**** ****
**** SkyEyeSimulator Ver 0.9.8 withGDB/Insight 5.3 Interface ****
**** ****
***********************************************************************
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.Type "show warranty" for details.
This SkyEye was configured as "--host=i686-pc-linux-gnu --target=arm-elf"...
(SkyEye)
(SkyEye) target sim
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name s3c44b0, mach_init addr 0x818d430
SKYEYE: use arm7100 mmu ops
Loaded RAM ../images/image.rom
Connected to the simulator.
(SkyEye) load
Loading section .init, size 0xf000 vma 0xc008000
Loading section .text, size 0x1b05a8 vma 0xc017000
Loading section .data, size 0xd370 vma 0xc1c8000
Start address 0xc008000
Transfer rate: 15091904 bits in <1 sec.
(SkyEye) run
Starting program: /home/uClinux-dist/linux-2.4.x/linux
rder: %lu, %lu bytes)
ash table entries: %d (order: %lu, %lu bytes)
has not started
table entries: %d (order: %lu, %lu bytes)
就一直停在这了 You can try to debug your linux by set some breakpoint on the entry of your image. In fact , if your purpose is to learn embedded linux , the base way is to try to debug your linux image by SkyEye. 个人认为这个skyeye对44b0支持不好,我用一个能在44b0实验板上面跑的uclinux,在skyeye上面就是不能跑,那个u-boot1.1.4在实验板上面能跑,在skyeye上面也可以跑,但是提示很多警告。
所以个人认为有条件还是自己用板子来做实验,免得误导自己。 编译 linux-2.6.19 版本,经追踪陷入了 kmem_cache_init() 的 BUG() 中。
我猜测是否由于 CPU_32v4T,CPU_ABRT_LV4T,CPU_CACHE_V4 这几个东东引起。
SkyEye 源码中
{"armv3", "arm7tdmi", 0x41007700, 0xfff8ff00, NONCACHE},
So... 也许期待 SkyEye 的下个版本能运行 uClinux-dist-20070130 之 S3C44B0X ... 也许需要要多个 Bootloader 作辅助。
我想 uClinux 没有经过修改是不可能顺利运行在 S3C44B0X 上的。
下面的输出结果是费了九牛二虎之力从 uClinux-dist-20070130 逐渐调试并补丁来的。
需要在 0x0 地址处放置中断表转至 0x0c000000-0x0c00001c 的代码(也就是超小 bootloader,我把代码从 fixup_machine 中装载)。
还是有点小问题,完成后再贴出来吧。
$ ../../skyeye -e linux
arch: arm
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name s3c44b0x, mach_init addr 0x8072fa0
uart_mod:0, desc_in:, desc_out:
uart_mod:1, desc_in:/dev/ttyS1, desc_out:
lcd_mod:1
SKYEYE: use arm7100 mmu ops
Loaded ROM ./linux_bootrom.bin
exec file "linux"'s format is elf32-little.
load section .init: addr = 0x0c008000size = 0x00010000.
load section .text: addr = 0x0c018000size = 0x001814d0.
not load section .pci_fixup: addr = 0x0c19a000size = 0x00000000 .
not load section .rio_route: addr = 0x0c19a000size = 0x00000000 .
not load section __ksymtab: addr = 0x0c19a000size = 0x00000000 .
not load section __ksymtab_gpl: addr = 0x0c19a000size = 0x00000000 .
not load section __ksymtab_unused: addr = 0x0c19a000size = 0x00000000 .
not load section __ksymtab_unused_gpl: addr = 0x0c19a000size = 0x00000000 .
not load section __ksymtab_gpl_future: addr = 0x0c19a000size = 0x00000000 .
not load section __kcrctab: addr = 0x0c19a000size = 0x00000000 .
not load section __kcrctab_gpl: addr = 0x0c19a000size = 0x00000000 .
not load section __kcrctab_unused: addr = 0x0c19a000size = 0x00000000 .
not load section __kcrctab_unused_gpl: addr = 0x0c19a000size = 0x00000000 .
not load section __kcrctab_gpl_future: addr = 0x0c19a000size = 0x00000000 .
load section __param: addr = 0x0c19a000size = 0x000000f0.
load section .data: addr = 0x0c19c000size = 0x0000c0a8.
not load section .bss: addr = 0x0c1a80c0size = 0x0000beb4 .
not load section .comment: addr = 0x00000000size = 0x000012b4 .
not load section .debug_abbrev: addr = 0x00000000size = 0x000400a2 .
not load section .debug_info: addr = 0x00000000size = 0x00629070 .
not load section .debug_line: addr = 0x00000000size = 0x00074860 .
not load section .debug_pubnames: addr = 0x00000000size = 0x0000ebbf .
not load section .debug_str: addr = 0x00000000size = 0x00025698 .
not load section .debug_aranges: addr = 0x00000000size = 0x00002af0 .
not load section .debug_frame: addr = 0x00000000size = 0x00024cd4 .
not load section .debug_ranges: addr = 0x00000000size = 0x0000fa10 .
start addr is set to 0x0c008000 by exec file.
Linux version 2.6.19-uc1 (root@lee) (gcc version 3.4.3) #43 Fri Mar 9 16:43:53 C ST 2007
CPU: Samsung-S3C44B0x revision 0 (ARMv4T), cr=0000007c
Machine: S3C44B0X Development Board
Built 1 zonelists.Total pages: 2032
Kernel command line: root=/dev/ram0 initrd=0x0c0d5cd0,782k console=ttyS0 keepini trd
PID hash table entries: 32 (order: 5, 128 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 8MB = 8MB total
Memory: 6396KB available (1548K code, 95K data, 64K init)
Mount-cache hash table entries: 512
checking if image is initramfs...it isn't (bad gzip magic numbers); looks like a n initrd
ttyS0 at I/O 0x1d00000 (irq = 3) is a Samsung S3C44B0X Internal UART
ttyS1 at I/O 0x1d04000 (irq = 2) is a Samsung S3C44B0X Internal UART
NetWinder Floating Point Emulator V0.97 (double precision)
io scheduler noop registered (default)
Software Watchdog Timer: 0.07 initialized. soft_noboot=0 soft_margin=60 sec (now ayout= 0)
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
loop: loaded (max 8 devices)
RAMDISK: romfs filesystem found at block 0
RAMDISK: Loading 782KiB into ram disk... done.
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 64K
Shell invoked to run file: /etc/rc
Command: hostname Samsung
Command: /bin/expand /etc/ramfs.img /dev/ram1
Command: mount -t proc proc /proc
Command: mount -t ext2 /dev/ram1 /var
Command: mkdir /var/config
Command: mkdir /var/tmp
Command: mkdir /var/log
Command: mkdir /var/run
Command: mkdir /var/lock
Command: mkdir /var/empty
Command: cat /etc/motd
Welcome to
____ __
/__| ||_|
_ _| || | _ _____ ___
| | | | || || |_ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
|___\____|_||_|_| |_|\____|\_/\_/
| |
|_|
For further information check:
http://www.uclinux.org/
Execution Finished, Exiting
Sash command shell (version 1.1.1)
/>
Sash command shell (version 1.1.1)
/> 个人认为这个skyeye对44b0支持不好,我用一个能在44b0实验板上面跑的uclinux,在skyeye上面就是不能跑,那个u-boot1.1.4在实验板上面能跑,在skyeye上面也可以跑,但是提示很多警告。
所以个人认为有条件还是自己用板子来做实验,免得误导自己。
最新结果 U-BOOT + FLASH on SkyEye。
S3C44B0X 作为实用,也许已经过时。
但若作为入门学习而使用 SkyEye 也未尝不可,
如果遇到难题请发邮件到 SkyEye 的 Developer Maillist 。
$ ./skyeye.exe
**************************** WARNING **********************************
If you want to run ELF image, you should use -e option to indicate
your elf-format image filename. Or you only want to run binary image,
you need to set the filename of the image and its entry in skyeye.conf.
***********************************************************************
big_endian is false.
arch: arm
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name s3c44b0x, mach_init addr 0041D200
uart_mod:0, desc_in:, desc_out:, converter:
uart_mod:1, desc_in:/dev/tty8, desc_out:, converter:
lcd_mod:5
ethmod num=1, mac addr=12:34:56:78:90:ab, hostip=10.0.0.1
: Found TAP device named '本地连接 10'
: Changing IP/Mask...
sound: channels:2, bits_per_sample:16, samples_per_sec:22050.
dbct info: turn on dbct!
SKYEYE: use arm7100 mmu ops
Loaded FLASH ./u-boot/u-boot.bin
Loaded FLASH ./u-boot/uImage
Loaded FLASH ./u-boot/uInitrd
Loaded RAM ./linux
Loaded RAM ./initrd.img
dbct translate block use memory 0x03fee1f7 bytes.
: ERROR: s3c44b0x_io_write_byte(addr:0x01d8000c, data:0xfff)
U-Boot 1.1.6 (Apr4 2007 - 04:43:57)
DRAM: 8 MB
Flash:2 MB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot:0
## Booting image at 00020000 ...
Image Name: Linux Kernel Image for S3C44B0X
Created: 2007-04-0320:43:22 UTC
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 620725 Bytes = 606.2 kB
Load Address: 0c008000
Entry Point:0c008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
## Loading Ramdisk Image at 000f0000 ...
Image Name: Ramdisk Image for S3C44B0X
Created: 2007-04-0316:38:32 UTC
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 371741 Bytes = 363 kB
Load Address: 0c700000
Entry Point:0c700000
Verifying Checksum ... OK
Starting kernel ...
Linux version 2.6.19-uc1 (root@lee) (gcc version 3.4.6) #16 Wed Apr 1 12:57:04 UTC 2007
CPU: Samsung-S3C44B0x revision 0 (ARMv4T), cr=0000007c
Machine: S3C44B0X Development Board
Built 1 zonelists.Total pages: 2032
Kernel command line: root=/dev/ram0 rw initrd=0x0c700000,1024k keepinitrd video=
s3c44b0xfb:bpp:8 console=ttyS0
PID hash table entries: 32 (order: 5, 128 bytes)
Division by zero in kernel.
Division by zero in kernel.
Console: colour dummy device 80x30
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 8MB = 8MB total
Memory: 5808KB available (1068K code, 123K data, 80K init)
...
页:
[1]