u-boot的向s3c2410板上的移植(只是编译而以)可谓是千辛万苦啊(对于菜鸟而言,(*^__^*) ,高手除外),下面就是我的痛苦经历。
过程如下:
下载u-boot-1.1.6版本,然后解压,进入解压完的目录之后,首先是修改对应文件,该部分是参见网上blogs。
http://blog.csdn.net/hhq0216/archive/2006/12/29/1466894.aspx,按照上面的做法来修改文件内容,然后回到u-boot目录,
执行如下命令:
make distclean
make smdk2410_config
make
之后error出现:make: *** [u-boot] Error 1
然后google之得到下面的方案:http://blog.csdn.net/wanyeye/archive/2008/04/24/2324199.aspx
同时查看了,在用其他两个版本的时候,对一些文件的设置,如下:
/cpu/arm920t/config.mk的 内容如下:
PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8
-msoft-float
PLATFORM_CPPFLAGS += -march=armv4
# ====================================================================
#
# Supply options according to compiler version
#
# ====================================================================
PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32)#,-mabi=apcs-gnu)
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
但是编译时,继续出现上面的error,于是再次google之,得到下面的文章:http://www.91linux.com/html/article/qianrushiyingyong/20090319/16154.html,该文指出
最常用的编译版本是arm-linux-gcc-3.4.1 和 arm-linux-3.3.2 的,现在的嵌入式开发基本上用的是这些,3.4.1的用于编译2.6的内核,而3.3.2的常用于编译busybox,和bootloader(u- boot),编译的版本配合不好的话就会出错,所以要选择好编译版本,如果这个版本不行的话,可以试试其他的版本,在uclinux上用的多的就是 arm-elf-tools-20030314
怀疑是arm-linux-gcc版本过高了,使用下面的命令查看:
arm-linux-gcc --version
得到arm-linux-gcc (GCC) 3.4.1
于是开始安装arm-linux-gcc-3.3.2版本,下载地址http://www.handhelds.org/download/projects/toolchain/
使用下面的命令来安装:
sudo -i
cp arm-linux-gcc-3.3.2.tar.bz2 /
bunzip2 arm-linux-gcc-3.3.2.tar.bz2
tar xvf arm-linux-gcc-3.3.2.tar.bz2 -C /
安装完成,继续编译u-boot
于是在该系统上安装上了两个版本的arm-linux-gcc。由于需要使用的是较低版本的gcc,所以在编译u-boot之前,使用下面的命令
PATH=/usr/local/arm/3.3.2/bin:${PATH}
该命令的主要作用是改变linux在搜索文件时的搜索顺序,为了验证是否使用的是3.3.2版本的arm-linux-gcc,可以使用下面的命令
arm-linux-gcc --version
前途现在就比较明朗了
cd include/configs
vi smdk2410.h
找到以下代码段:
#ifdef CONFIG_AMD_LV400
#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
#endif
改为:
#ifdef CONFIG_AMD_LV400
#define PHYS_FLASH_SIZE 0x01000000 /* 16MB */
#define CFG_MAX_FLASH_SECT (128) /* max number of sectors on one chip */
#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x020000) /* addr of environment */
#endif
保存
现在回到根目录下编译
make distclean
make smdk2410_config
make
终于,u-boot,u-boot.bin,u-boot.map等文件生成......
参考:
http://blog.csdn.net/hhq0216/archive/2006/12/29/1466894.aspx
http://hi.baidu.com/cheng21884998/blog/item/2ca22f51be22382042a75ba5.html
http://szricky.blog.hexun.com/7474976_d.html
http://heyunhuan513.blog.163.com/blog/static/16020422009210112035734/
http://hi.baidu.com/cheng21884998/blog/item/8e18799563e2964fd1135eb5.html
http://blog.chinaunix.net/u1/56374/showart_570048.html
http://blog.csdn.net/hhq0216/archive/2006/12/29/1466894.aspx
http://blog.chinaunix.net/u/21948/showart_385046.html