Penguin Liberation Front

在ARMulator中移植uClinux的痛苦经历

上一篇 / 下一篇  2008-01-28 10:59:20

参考的是网上最流行的那个samsung的Hyok S. Choi写的文档
最开始在在cygwin里面安装的,以下是安装步骤

01 install cygwin
02 chmod 755  arm-elf-tools-20040427.sh
03 /bin/sh arm-elf-tools-20040427.sh
04 tar jxvf linux-2.6.5.tar.bz2
05 gunzip linux-2.6.5-hsc2.patch.gz
06 cd linux-2.6.5
07 patch -p1 < ../linux-2.6.5-hsc2.patch
08 mv linux-2.6.5 linux-2.6.x
09 tar zxvf uClinux-dist-20040408.tar.gz
10 cd uClinux-dist
11 mv linux-2.6.x linux-2.6.x.old
12 mv ../linux-2.6.x .
13 cp linux-2.6.x/arch/armnommu/configs/GDB_ARMulator_defconfig vendors/GDB/ARMulator/config.linux-2.6.x
14 vi vendors/GDB/ARMulator/rc
 hostname GDB-ARMulator
 /bin/expand /etc/ramfs.img /dev/ram1
 mount -t proc proc /proc
 mount -t ext2 /dev/ram1 /var
 mkdir /var/tmp
 mkdir /var/log
 mkdir /var/run
 mkdir /var/lock
 mkdir /var/empty
 cat /etc/motd
15 make menuconfig
   --- vendor/Product Selection --->
 --- Select the Vendor you wish to target
  (GDB) Vendor
 --- Select the Product you wish to target
  (ARMulator) GDB Products
   --- Kernel/Library/Defaults Selection --->
 (linux-2.6.x) Kernel Version
 (uClibc) Libc Version
 [*] Default all settings (lose changes) (NEW)
 [*] Customize Kernel Settings (NEW)
 [*] Customize Vendor/User Settings (NEW)
 [*] Update Default Vendor Settings (NEW)
保存退出,开始配置内核,但无论如何也过不去了,报错信息一点参考价值也没有:
[scripts/kconfig/mconf] error 1
试了几次,也是不行。cygwin运行非常的慢,试一次要很长时间,加上很晚了。就去打鼾去了。
第二天一起来,转战到suse 10.1下

在suse下,也碰到同样的问题:
[scripts/kconfig/mconf] error 1
不过有比较有用的报错信息:
----------------------------
scripts/kconfig/mconf.c:91: error: static declaration of 'current_menu' follows non-static declaration
scripts/kconfig/lkc.h:63: error: previous declaration of 'current_menu' was here
----------------------------
于是,尝试做:
16 vi linux.2.6.x/scripts/kconfig/mconf.c 
 comment 91 line

然后继续,就比较顺利了,配置内核、配置库都没有改动,编译内核也通过了。
在uClinux-dist下面出现一个image文件夹,里面新产生了文件系统镜像文件、内核镜像文件。
在linux-2.6.x下面出现一个新产生的linux文件,这就是传说中用于模拟的内核镜像文件。


于是又回到cygwin下,同样修改mconf.c文件的91行,可还是不奏效,

又转战来到fodora core5 下面,这次,连arm-elf-tools-20040427.sh都装不上去了,
说什么
gunzip:stdin:no in gzip format
上baidu.com搜索,有同仁说要在arm-elf-tools-20040427.sh的39行的tail后面加一个-n
(据说在redhat9.0上,安装没有问题,难道我还倒回去安装redhat9啊)

然后重新安装arm-elf-tools,最后出现了

gunzip: stdin: unexpected end of file

然后,配置,编译内核,顺利通过。
搞不懂为什么cygwin不行,放弃了。开始安装gdb,想不到gdb的安装跟我带来更大的麻烦。。。。。。

17 tar jxvf gdb-5.0.tar.bz2
18 gunzip gdb-5.0-uclinux-armulator-20060104.patch.gz
19 gunzip gdb-5.0-uclinux-armulator-ramdisk-20040412.patch.gz
20 patch  -p0 < gdb-5.0-uclinux-armulator-20060104.patch
21 patch  -p0 < gdb-5.0-uclinux-armulator-ramdisk-20040412.patch
22 cd gdb-5.0
23 ./configure --target=arm-elf
24 make

make的时候,报错。什么左值错误。检查操作过程,发现我用的gdb-5.0的armulator的补丁包是2006版的。
而文档是2002版的。以为是版本错误,于是重新下载2002的版本

重新执行23步,这时又出来以下错误:
找不到gtk-config

发现没有安装gtk+-2.0,于是开始漫长的GTK+-2.0的过程,依赖包非常的多,绕了一大圈,终于装完了。
重新执行23,又报错,还是找不到gtk-config

没辙了,求助于baidu.com,找了很久,好像是gtk+-1.2.8才用gtk-config,而gtk+-2.0就开始用pkg-config
而pkg-config的功能更强大,用来取代gtk-config,它是用来针对所有库文件 ,用它来获取某库的依赖库及头文件。
怎么办咧?顽固的gdb-5.0非要找gtk-config。

看了看gdb-5.0的gdb/configure文件,头都大了,好几千行呐。。。。。。。。。。。

难道注定失败?不甘,又上网,搜啊搜,经过不卸的努力,发现有人自己写gtk-config
原理就是写一个shell脚本,用gtk-config来包装pkg-config:

#!/bin/sh

module="gtk+-2.0"
if test $1="--version" ; then
 pkg-config "--modversion" $module
else
 pkg-config $* $modules
fi

于是,自己写了一个。运行一下,还行。--cflags --libs --version都可以正常的查询。
欢天喜地的重新configure,晕,又出来了:
gcc:2.8.3.....
gcc为什么要把2.8.3作为文件来编译?天呐,这是我的gtk+的版本号啊。。。。。。。。
于是又返回头去看gdb-5.0/gdb/configure文件,faint!哈是变量,几千行的代码,头都大了。。。。

还曾经尝试过configure 的时候 --without-gtk,也不行。搞不懂不就一个gdb嘛,要gtk干嘛!!!!!!!!

于是心情很不好的去吃晚饭,到现在已经搞了一整天了。


吃完,回到windows下的cygwin下去编译gdb-5.0。果不其然,一样的报错。。。。

快绝望了,麻木的翻阅各种文档。
希望出现了!
因为在http://www.uclinux.org/pub/uClinux/utilities/armulator/这个网址上,我赫然发现:
-------------------------------------------------------------------
Mar 2007
 Here's a patch to fix problems compiling the armulator on newer systems (invalid lvalue error).
-------------------------------------------------------------------
这不就是我用2006那个gdb的armulator补丁时的错误嘛!
于是,在cygwin下面:

25 cd uClinux-disk
26 patch -p0 < ../objstack.patch

再次编译gdb-5.0,成功了!哈哈
现在回想起来,2002的gdb armulator补丁可能真的只适用于redhat9。
27 make install //会产生/usr/local/bin/arm-elf-gdb

于是,转战SUSE 10/Fedora core5编译gdb-5.0都成功了。

28 cd ../uClinux-disk
29 ln -s images/romfs.img boot.rom
30 cat >.gdbinit
 target sim
 load
 ^D
31 arm-elf-gdb linux-2.6.x/linux
GNU gdb 5.0
Copyright 2000 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 GDB was configured as "--host=i686-pc-linux-gnu --target=arm-elf"...
Loaded ROM boot.rom to 0x01300000
Loaded ROM boot.rom to 0x01400000
Loaded ROM boot.rom to 0x04000000
Loaded ROM boot.rom to 0x01300000
Loaded ROM boot.rom to 0x01400000
Loaded ROM boot.rom to 0x04000000
Connected to the simulator.
Loading section .init, size 0xb000 vma 0x1000000
Loading section .text, size 0xa0b98 vma 0x100b000
Loading section __ex_table, size 0x5b8 vma 0x10abba0
Loading section .data, size 0x8ef8 vma 0x10ae000
Start address 0x1000000
Transfer rate: 5931584 bits in <1 sec.
(gdb)
32 敲入run,后发现kernel panic

于是回头再看文档,发现有两步漏掉了:
a cp config文件后,需要修改vendors/GDB/ARMulator/rc文件,将ram0改为ram1
b make menuconfig后,会出现内核的配置界面,在这里需要在General setup的Default kernel command string改为:
 root=/dev/ram0 initrd=0x01300000,800K keepinitrd
  就是改ramdisk的大小,默认大小是771k.(不过,最后成功的时候我看ramdisk还是771k的。不知道为啥)
重新编译内核后,执行32步,
屏幕刷过、刷过、终于出现了:
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|
心情那个激动啊。。。。。

总结教训,不要偏信网上所谓牛人的文档。在这里要特别鄙视一下samsung那个写文档不交待软硬件环境的人。

直到最后,我在cygwin里也没有能够编译出来内核,遗憾。


TAG:

引用 删除 Guest   /   2008-10-16 11:11:03
杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-85344139 QQ:7179139杭州制卡网 浙江制卡网 会员卡制作 贵宾卡制作 TEL:0571-853441

杭州万凌制卡

网址:http://www.hangzhouzhika.com
引用 删除 Guest   /   2008-10-14 10:30:29
高压气枪◢QQ:316486168◤气枪论坛,LQB18,LQB57,LQB78,1000X,CP2,LQB4-1, A1000,M92,气枪子弹,工字高压气枪,气枪配件,气枪专卖。 M1911,卖气枪,气枪网,三箭气枪,KWC沙漠之鹰,654k、cp99、GAMO COMPACT、高压气枪图片,高压气枪价格,高压气枪子弹,高压气枪专卖,自制高压气枪,高压气枪结构图◢QQ:316486168◤气枪铅弹,5.5铅弹,4.5铅弹,南海铅弹,气枪子弹4.5 ,山峰铅弹,求购气枪子弹,气枪子弹模具,气枪子弹模具制造 ,气枪铅弹钳,4.5mm铅弹,gamo 铅弹,4.5铅弹模具,铅弹制作,穿甲弹,4.5mm铅弹,进口铅弹,帆船铅弹,环球铅弹◢QQ:316486168◤5.5mm铅弹,6mm铅弹,广州三箭气枪铅弹,尖头铅弹,气枪铅弹销售,购买气枪铅弹,出售铅弹,4.5气枪子弹,自制铅弹, 气枪铅弹图纸,6m铅弹,铅弹出售,气枪铅弹模具,温切斯特1000x,winchester1000x,温彻斯特1000x,温彻斯特1000x价格,温彻斯特1000x狩猎,温彻斯特1000x支付宝,温切斯特1000x价格,温切斯特1000x北美版,美国温切斯特1000x,温切斯特1000x新款,中国温切斯特1000x◢QQ:316486168◤温切斯特1000x转让,土耳其温切斯特1000x,购买温切斯特1000x, gamo cfx royal,gamo cfx980,gamo cfx价格 ,gamo610


申江网络科技

网址:http://san8dao.blogcn.com/
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2010-08-01  
1234567
891011121314
15161718192021
22232425262728
293031    

数据统计

  • 访问量: 918
  • 日志数: 50
  • 文件数: 32
  • 建立时间: 2008-01-08
  • 更新时间: 2008-06-06

RSS订阅

Open Toolbar