Chinaunix首页 | 论坛 | 博客
  • 博客访问: 875948
  • 博文数量: 149
  • 博客积分: 3671
  • 博客等级: 中校
  • 技术积分: 1701
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-03 16:52
文章分类

全部博文(149)

文章存档

2011年(57)

2010年(92)

分类: 嵌入式

2010-08-11 11:13:21

文件:uboot移植.pdf
大小:779KB
下载:下载

这两天进行了uboot的移植,这里把移植的过程分享一下,大部分内容参考了网友的资料,自己又进行了一些修改,这是我第一次移植bootloader,如果有不对的地方,请大家指正。


参考网址:

http://zjbintsystem.blog.51cto.com/964211/209987

http://zjbintsystem.blog.51cto.com/964211/211346

http://zjbintsystem.blog.51cto.com/964211/211346

http://blog.chinaunix.net/u1/34474/showart.php?id=487416

http://hi.baidu.com/zengzhaonong/blog/item/4b901ee9b5ef343cb90e2d16.html

上传的pdf为友善之臂的移植文档,我也参考一下进行了改动。

一,配置环境


开发板:mini2440256M nandflash

bootloaderuboot1.3.4

交叉编译器:arm-linux-gcc4.3.2


二,移植过程


1步:准备工作


1U-boot源码下载地址:

里边的u-boot-1.3.4.tar.bz2文件,放到你的开发目录里;

2、解压文件:tar -jxvf u-boot-1.3.4.tar.bz2

3、下载交叉编译工具

使用友善之臂

arm-linux-gcc-4.3.2.tgz

4、建立交叉编译环境

解压4.3.2到合适的位置,设置环境变量。


2步:初步编译uboot


1、在u-boot-1.3.4/board下找个与2410相似的开发板,这里smdk2410为例。

2、将u-boot-1.3.4/board/smdk2410目录复制到当前目录下,并改名为 mini2440

3、把smdk2410.c改名为mini2440.c,修改Makefile中的 COBJS := mini2440.o flash.o,保存。

4、将u-boot-1.3.4/include/configs/smdk2410.h,复制到当前目录,并改名为mini2440.h

5、在u-boot-1.3.4/Makefile,大概2490多行找到

smdk2410_config : unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

在它下边添加

mini2440_config : unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0

(注意@$(MKCONFIG)前面必须是TAB键)

6、特别注意: 在u-boot1.3.3及以上版本Makefile有一定的变化,使得对于24x0 处理器从nand启动的遇到问题。也就是网上有人说的:无法运行过lowlevel_init。其 实这个问题是由于编译器将我们自己添加的用于nandboot的子函数nand_read_ll 到了4K之后造成的(到这不理解的话,请仔细看看24x0处理器nandboot原理)。 u-boot根本没有完成自我拷贝,你可以看uboot根目录下的System.map文件就可知 道原因。

解决办法其实很简单:

278行的__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))

改为__LIBS := $(subst $(obj),,$(LIBBOARD)) $(subst $(obj),,$(LIBS))

7、进入u-boot-1.3.4目录,先来个#make distclean

然后# make mini2440_config

Configuring for mini2440 board...

8、之后就可以# make了,如正常编译通过,表明环境搭建好。

阅读(3052) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~