Build uClinux-dist-200404 出错报告
我的出错过程大致包括以下几步:(1)下载后,原封不动:编译通过,在skyeye上顺利运行;
(2)修改:将类型从GDB/Armulator改为AT91,编译错;
(3)终于编译通过:但运行死机;
详细过程:
(在Redhat9-fedoro下,已成功编译/安装skyeye-0.7.7)
A:修改:
======================================
$tar zxf uClinux-dist-20040408.tar.gz
$make xconfig
---->choose AT91 (instead of GDB),
---->choose kernel linux-2.4.x
----->save and exit
$make dep(PASS!)
$make
---> error ...../boa/src/auth.c:281:undefined reference to"crypt_old"
<--- (按照精华版的文档)修改 config/.config uncoment CONFIG_USER_OLD_PASS
B:再来一编(严格按照精华版操作)
====================================
$ make menuconfig
$ make dep lib_only user_only romfs image
---> error ...../boa/src/auth.c:281:undefined reference(还是这个问题)
C:干脆,我直接执行
========================
$ make
(竟然通过了)
D:试运行一下 (但死机了)
=============================
$ skyeye linux-2.4.x/linux
***************************************************************
**** ****
**** SkyEyeSimulator Ver 0.7.7 withGDB 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) target sim
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name at91, mach_init addr 0x813db08
SKYEYE: use arm7100 mmu ops
Loaded ROM images/romfs.img
Connected to the simulator.
(SkyEye) load
Loading section .init, size 0xa000 vma 0x1000000
Loading section .text, size 0xd12c0 vma 0x100a000
Loading section .data, size 0x89d4 vma 0x10dc000
Start address 0x1000000
Transfer rate: 7464096 bits in <1 sec.
(SkyEye) run
Starting program: /home/lal/skyeye/uClinux-dist/linux-2.4.x/linux
(死机,很久。。。。)
Program received signal SIGINT, Interrupt.
panic (fmt=0x10cc9ac "VFS: Unable to mount root fs on %s") at panic.c:107
107 for(;;) {
(SkyEye) exit
Undefined command: "exit".Try "help".
(SkyEye) quit
The program is running.Exit anyway? (y or n) y
$
E:我完全重新开始(不知是否删除了一些“重要东西”?)
=======================================
# make clean
# make menuconfig
(稍微检查以下,感觉配置都对)
# make dep
# make lib_only user_only romfs image
(报告: 无法发现linux-2.4.x/linux文件,果然没有,是xxx_only的原因?漏编译kernel了?我之前做了make clean)
#make
(通过)
:
:
:
1 sbin 0120777, sz 4, at 0xb96e0
arm-elf-objcopy -O binary --remove-section=.romvec \
--remove-section=.text --remove-section=.ramvec \
--remove-section=.init \
--remove-section=.bss --remove-section=.eram \
/home/lal/skyeye/uClinux-dist/linux-2.4.x/linux /home/lal/skyeye/uClinux-dist/images/linux.data
arm-elf-objcopy -O binary --remove-section=.ramvec \
--remove-section=.bss --remove-section=.data \
--remove-section=.eram \
--set-section-flags=.romvec=CONTENTS,ALLOC,LOAD,READONLY,CODE \
/home/lal/skyeye/uClinux-dist/linux-2.4.x/linux /home/lal/skyeye/uClinux-dist/images/linux.text
cat /home/lal/skyeye/uClinux-dist/images/linux.text /home/lal/skyeye/uClinux-dist/images/linux.data /home/lal/skyeye/uClinux-dist/images/romfs.img > /home/lal/skyeye/uClinux-dist/images/image.bin
[ -n "" ] || cp /home/lal/skyeye/uClinux-dist/images/image.bin /tftpboot
make: Leaving directory `/home/lal/skyeye/uClinux-dist/vendors/Atmel/AT91'
$ ls
autoconf.h COPYING lib linux.rom skyeye.conf.gdbvendors
bin Documentationlinux-2.0.xMakefile SOURCE
config freeswan linux-2.4.xREADME tools
config.archglibc linux-2.6.xromfs uClibc
config.in images linux.elf skyeye.conf~user
$ skyeye linux-2.4.x/linux
再执行步骤(D)----问题现象一样!?
(Add-on)
==============================================
$ cat 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 有关target的问题:
我两次编译内核,一是为GDB/Armulator,一次是为AT91的
使用的是同一个skyeye.conf, 但在(gdb)target sim命令时,skyeye会根据skyeye.conf选择不同的“target”吗?
如果是同一个sim target,那么两个内核的运行有区别吗?(还是0.7.7只支持GDB/Armulator,而不支持在make menuconfig之时选择的AT91?) 同样的uClinux-dist目录源代码,在经历了前面的“胡乱配置”之后,
再执行:
$ make xconfig (选择Vendor=GDB---这次显示的不是“GDB/ARmulator”??)
(等待了很长时间---2.8G Pentium运行了大约20分钟,make xconfig顺利完成)
$ make (我没有仅仅选择xxx_only)
(又等待了大约20分钟,make也顺利结束了)
$ skyeye linux-2.4.x/linux
target sim
load
run
(OK!竟然又运行出来了)
问:为什么Vendor选AT91不可以呢?并且为AT91编译时还会报(boa: crypt_old)的错误?
问:难道是为GDB/Amulator写的config相关文件有讲究?
问:是否sim根本就不支持AT91?(那么s3c4510等芯片怎么样?)
问:是否skyeye.conf需要修改(for AT91)? 据我所知:
GDB/Armulator 和AT91的配置完全相通(可能的区别是GDB/Armulator加了调试信息和AT91没有)
skyeye意识不到是GDB/armulator还是AT91,它只是根据skyeye.conf把自己模拟为基于AT91的开发板。
不知你的fileimage有多大?建议编一个小于skyeye.conf 设置的ramdisk (2M一下)
如果还有问题,把你的.config给我看看。
建议用最新的uclinux-2004-....
问:你用GDB/Armulator编译处理的image运行成功吗? 问:你用GDB/Armulator编译处理的image运行成功吗?
答:是的,很成功!(第一次下载了uClinux-dist-20040408.tar.gz 之后,没有改动,所以在Redhat上很成功地通过编译,并在skyeye上run起来了;第二次,在改AT91编译通过/run失败之后,重新修改配置,换回GDB方式之后,再编译/run也成功的。-----如上面的“冗长的”记录) 我试了一下,直接编译20040408,对GDB/Armulator,通过,且运行成功,如果按照uclinux4skyeye中的指导,网络也通过。对于选择at91,只要按照skyeye.conf中的关于ram,rom,io等的内存设置更改at91中对应的参数设置就可以了,运行和GDB/Armulator同样。 能否给出你编译或修改AT91之rom, ram, io的参数(----运行成功的) 记不得,但是用uclinux4skyeye中200305xx中的skyeye.conf中的内容原样照搬就行 谢谢!可以理解为:
(1)skyeye.conf for GDB和for at91的相同;还是
(2)skyeye.conf for at91的与gdb的不同,因而需要重新拷贝一份 不好意识,我没有说清楚。首先,skyeye.conf for GDB和for at91的相同,
其次,在配置内核时,选择配置ram,rom,io等参数,其内容与skyeye.conf中的描述相一致 谢谢!我没有注意到两者的一致性
页:
[1]