QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3198|回复: 10

Build uClinux-dist-200404 出错报告

[复制链接]
发表于 2004-7-24 13:25:33 | 显示全部楼层 |阅读模式
我的出错过程大致包括以下几步:
(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:试运行一下 (但死机了)
=============================
[lal@ada304 uClinux-dist]$ skyeye linux-2.4.x/linux
***************************************************************
****                                                       ****
****   SkyEye  Simulator Ver 0.7.7 with  GDB 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
[lal@ada304 uClinux-dist]$

E:我完全重新开始(不知是否删除了一些“重要东西”?)
=======================================
# make clean

# make menuconfig
(稍微检查以下,感觉配置都对)
# make dep
# make lib_only user_only romfs image

(报告:[image] 无法发现linux-2.4.x/linux文件,果然没有,是xxx_only的原因?漏编译kernel了?我之前做了make clean)

#make

(通过)

     :
     :
     :

1    sbin                 [0x302     , 0x590378  ] 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[1]: Leaving directory `/home/lal/skyeye/uClinux-dist/vendors/Atmel/AT91'
[lal@ada304 uClinux-dist]$ ls
autoconf.h   COPYING        lib          linux.rom     skyeye.conf.gdb  vendors
bin          Documentation  linux-2.0.x  Makefile      SOURCE
config       freeswan       linux-2.4.x  README        tools
config.arch  glibc          linux-2.6.x  romfs         uClibc
config.in    images         linux.elf    skyeye.conf~  user
[lal@ada304 uClinux-dist]$ skyeye linux-2.4.x/linux


再执行步骤(D)----问题现象一样!?

(Add-on)
==============================================
[lal@ada304 uClinux-dist]$ 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
 楼主| 发表于 2004-7-24 14:05:03 | 显示全部楼层
有关target的问题:

我两次编译内核,一是为GDB/Armulator,一次是为AT91的

使用的是同一个skyeye.conf, 但在(gdb)target sim命令时,skyeye会根据skyeye.conf选择不同的“target”吗?

如果是同一个sim target,那么两个内核的运行有区别吗?(还是0.7.7只支持GDB/Armulator,而不支持在make menuconfig之时选择的AT91?)
回复

使用道具 举报

 楼主| 发表于 2004-7-24 17:14:04 | 显示全部楼层
同样的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)?
回复

使用道具 举报

发表于 2004-7-26 23:40:17 | 显示全部楼层
据我所知:
GDB/Armulator 和AT91的配置完全相通(可能的区别是GDB/Armulator加了调试信息和AT91没有)

skyeye意识不到是GDB/armulator还是AT91,它只是根据skyeye.conf把自己模拟为基于AT91的开发板。

不知你的fileimage有多大?建议编一个小于skyeye.conf 设置的ramdisk (2M一下)

如果还有问题,把你的.config给我看看。
建议用最新的uclinux-2004-....

问:你用GDB/Armulator编译处理的image运行成功吗?
回复

使用道具 举报

 楼主| 发表于 2004-7-27 10:10:17 | 显示全部楼层
问:你用GDB/Armulator编译处理的image运行成功吗?  
答:是的,很成功!(第一次下载了uClinux-dist-20040408.tar.gz 之后,没有改动,所以在Redhat上很成功地通过编译,并在skyeye上run起来了;第二次,在改AT91编译通过/run失败之后,重新修改配置,换回GDB方式之后,再编译/run也成功的。-----如上面的“冗长的”记录)
回复

使用道具 举报

发表于 2004-8-12 22:26:22 | 显示全部楼层
我试了一下,直接编译20040408,对GDB/Armulator,通过,且运行成功,如果按照uclinux4skyeye中的指导,网络也通过。对于选择at91,只要按照skyeye.conf中的关于ram,rom,io等的内存设置更改at91中对应的参数设置就可以了,运行和GDB/Armulator同样。
回复

使用道具 举报

 楼主| 发表于 2004-8-14 16:07:47 | 显示全部楼层
能否给出你编译或修改AT91之rom, ram, io的参数(----运行成功的)
回复

使用道具 举报

发表于 2004-8-15 19:19:02 | 显示全部楼层
记不得,但是用uclinux4skyeye中200305xx中的skyeye.conf中的内容原样照搬就行
回复

使用道具 举报

 楼主| 发表于 2004-8-16 09:35:56 | 显示全部楼层
谢谢!可以理解为:
(1)skyeye.conf for GDB和for at91的相同;还是
(2)skyeye.conf for at91的与gdb的不同,因而需要重新拷贝一份
回复

使用道具 举报

发表于 2004-8-20 20:48:30 | 显示全部楼层
不好意识,我没有说清楚。首先,skyeye.conf for GDB和for at91的相同,
其次,在配置内核时,选择配置ram,rom,io等参数,其内容与skyeye.conf中的描述相一致
回复

使用道具 举报

 楼主| 发表于 2004-8-21 10:31:25 | 显示全部楼层
谢谢!我没有注意到两者的一致性
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-27 20:57 , Processed in 0.116384 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表