求助skyeye 上跑基于三星s3c4510b的ulinux
我使用的uclinux内核版本是20040408,在上面按照文档《SkyEye使用简介〉所说的,利用skyeye.conf可以跑at91的uclinux,但我想跑基于4510的uclinux,编译内核和配置相应的skyeye.conf后,运行后显示:"Starting programe /home/uclinux/uclinux-dist/linux-2.4.x/linux"后没有任何反映。
进入调试环境后,程序打印:
panic (fmt=0xb3b38 "vfs: unable to mount root fs on %s") at panic.c:107,后面是一个死循环,请问是什么原因,用这个版本跑基于4510的uclinux需要作什么改动吗? 在最新的testsuit 1.0.4有可执行版本,你可以试试。
uclinux for 3sc4510b需要做些小修改,skyeye.conf也需要for s3c4510b的。 最新的testsuit 1.0.4里的可执行版本是可以运行的,我想在仿真环境下调试s3c4510b的内核,请问需要作那些改动,skyeye.conf我用的是测试套件里的,测试套件里的可执行 文件是uclinux的那个版本生成的?怎样生成? 如何编译uClinux-dist-20040408.tar.gz
1.linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in
在
*(got) /* Global Offset table */
之后添加如下语句:
romfs_data = .;
romfs.o
romfs_data_end = .;
2.vendors/Samsung/4510B/Makefile
在image目标的第三行,增加一条语句:arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)
如下为增加之后:
image:
[ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
genromfs -v -V "ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR)
arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)
3.修改linux-2.4.x/drivers/char/serial_samsung.c
找到uart_config数组,把如下项:
{ "S3C4510B", 1, 0},/* Samsung S3C4510B uart support */
修改为:
{ "S3C4510B", 128, 0},/* Samsung S3C4510B uart support */
4.
编译login,boa程序时可能出现undefined reference to 'crypt_old'的错误,可以修改
config/.config
注释掉CONFIG_USER_OLD_PASSWORDS
4.按照如下步骤配置和编译内核,步骤不能乱,中间出现的错误信息可以忽略.
make menuconfig
make dep
make lib_only
make user_only
make romfs
make image
make
make dep lib_only user_only romfs image linux
2.构造skyeye.conf
cpu: arm7tdmi
mach: s3c4510b
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00800000
mem_bank: map=M, type=R,addr=0x01000000, size=0x00200000, file=./images/romfs.bin
mem_bank: map=I, type=RW, addr=0x03ff0000, size=0x00100000 我就是按照walimis说的相似的做法做的,目前已经能够运行到这一步:
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, a
welcome to change it and/or distribute copies of it under certain
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.Type "show warranty" for
This SkyEye was configured as "--host=i686-pc-linux-gnu --target=a
(SkyEye) target sim
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name s3c4510b, mach_init addr 0x813e310
SKYEYE: use arm7100 mmu ops
Loaded ROM ./images/romfs.img
Connected to the simulator.
(SkyEye) load
Loading section .init, size 0x8000 vma 0x8000
Loading section .text, size 0x15bc38 vma 0x10000
Loading section .data, size 0x5a94 vma 0x16c000
Start address 0x8000
Transfer rate: 11843168 bits/sec.
(SkyEye) run
Starting program: /root/uclinx/uClinux-dist/linux-2.4.x/linux
Linux version 2.4.24-uc0 (root@localhost) (gcc version 2.95.3 2001
(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uCl
hared lib patches from http://www.snapgear.com/)) #38 Tue Jun 22 1
04
Processor: Samsung S3C4510B revision 6
Architecture: SNDS100
On node 0 totalpages: 2048
zone(0): 0 pages.
zone(1): 2048 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 20.78 BogoMIPS
Memory: 8MB = 8MB total
Memory: 6492KB available (1391K code, 141K data, 32K init)
Dentry cache hash table entries: 1024 (order: 1, 8192 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: 2048 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Starting kswapd
Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no ser
abled
ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B
ttyS01 at 0x3ffe000 (irq = 7) is a S3C4510B
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: 72038-16BC37 (RO)
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 32K
Kernel panic: No init found.Try passing init= option to kernel.
请问各位大虾问题出在哪? 看一下linux得相关源码,应该是没有/sbin/init文件 楼上说的是romfs文件系统里的/sbin/init 文件吧,我看了一下/bin/init,/dev/init和/sbin/init文件都是有的。 都没有遇到过吗?救救我吧 你直接发信给我,我给你看看。
[email protected] 我依照版主的說明,將uClinux做一些修正後,初步的運行是沒問題,但卻無法掛載rootfs,是不是還有什麼地方需要修改呢?下面是我skyeye.cfg的設定內容及運行時的錯誤訊息,請各位有類似經驗的前輩指點一下,感謝。
.
kernel command line: root /dev/rom0
.
.
VFS: Cannot open root device "rom0" or 1f:00
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on 1f:00
.
cpu:arm7tdmi
mach: s3c4510b
#physical memory
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00800000
mem_bank: map=M, type=R , addr=0x01000000, size=0x00200000, file=./romfs.img
#for ethernet controllor non-cacheable Area
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00800000
#all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x03ff0000, size=0x00100000 我用uclibc,linux-2.4.x,按照版主说的串口驱动的编译(serial_samsung.c)会有如下错误:
arm-elf-gcc -D__KERNEL__ -I/home/cuinan/uclinux_20040408/uClinux-dist/linux-2.4.x/include-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fno-common -pipe -fno-builtin -D__linux__ -DNO_MM -mapcs-32 -march=armv4 -mtune=arm7tdmi -mshort-load-bytes -msoft-float -nostdinc -iwithprefix include -DKBUILD_BASENAME=serial_samsung-c -o serial_samsung.o serial_samsung.c
serial_samsung.c:3974: parse error before `this_object_must_be_defined_as_export_objs_in_the_Makefile'
serial_samsung.c:3974: warning: type defaults to `int' in declaration of `this_object_must_be_defined_as_export_objs_in_the_Makefile'
serial_samsung.c:3974: warning: data definition has no type or storage class
serial_samsung.c:3975: parse error before `this_object_must_be_defined_as_export_objs_in_the_Makefile'
serial_samsung.c:3975: warning: type defaults to `int' in declaration of `this_object_must_be_defined_as_export_objs_in_the_Makefile'
serial_samsung.c:3975: warning: data definition has no type or storage class
make: *** Error 1
make: Leaving directory `/home/cuinan/uclinux_20040408/uClinux-dist/linux-2.4.x/drivers/char'
make: *** Error 2
make: Leaving directory `/home/cuinan/uclinux_20040408/uClinux-dist/linux-2.4.x/drivers/char'
make: *** Error 2
make: Leaving directory `/home/cuinan/uclinux_20040408/uClinux-dist/linux-2.4.x/drivers'
make: *** Error 2
make: Leaving directory `/home/cuinan/uclinux_20040408/uClinux-dist/linux-2.4.x'
make: *** Error 1 斑竹,我现在使用uclinux内核版本是20041215,skyeye 上跑基于三星s3c4510b的uclinux是否也可以,还需要如上面那样修改吗? Sorry you have been snagged by this one
Look in the drivers/char/Makefile
there will be a section ...
export-objs :=busmouse.o console.o keyboard.o sysrq.o \
misc.o pty.o random.o selection.o serial.o \
ledman.o \
sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
au1000_gpio.o hp_psaux.o nvram.o scx200.o
just
add serial_samsung.oto the list
That should fix it... 我用skyeye-testsuit-2.0.tar.bz2,在fc2下,按照上面的说明,可以启动编译uClinux-dist-20040408.tar.gz
,启动uClinux,但是用ifconfig命令看没有eth0;虽然使用配套的linux就可以看到eth0,但是这个eth0也不能和主机通讯,请问这是怎么回事? 怎样才能使自己编译的uClinux内核和外部通讯?能做到这一点就可以调试内核了.如果可以请把skyeye的版本和testsuite的版本,linux的版本告诉我,谢谢! :-D
页:
[1]
2