u-boot移植s3c2410

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

posted @ 2010-02-21 22:26  qiang.xu  阅读(566)  评论(0编辑  收藏  举报