Chinaunix首页 | 论坛 | 博客
  • 博客访问: 152962
  • 博文数量: 22
  • 博客积分: 1456
  • 博客等级: 上尉
  • 技术积分: 252
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-25 00:08
个人简介

ddd

文章存档

2011年(1)

2010年(21)

我的朋友

分类: 嵌入式

2010-04-25 13:47:38

本文参考了一些高手,主要是Tekkaman Ninja flyslightly的移植文章,我在声明中已经提到,移植U-Boot-2009.08到友善之臂mini2440 声明

再次感谢Tekkaman Ninja flyslightly

 

移植U-Boot-2009.08到友善之臂mini2440

 

 

本文是针对在友善之臂公司出品的以 S3C2440 为核心的 mini2440 开发板上实现U-Boot-2009.08的移植。其中存储介质为一片256 MB NAND Flash(K9F2G08),一片2MB NOR Flash(SST-39VF1601),两片 32 MB SDRAM(HY57V561620FTP),网卡芯片为 DM9000a46

移植U-Boot.2009.08到友善之臂mini2440(一)

一、在U-Boot中建立自己的开发板类型,并测试编译。

   U-Boot中建立自己的开发板文件(以友善之臂的sbc2410x为基础)。开发板取名《mini2440》。

(1) 在工作目录/opt下解压UBoot-2009.08

[root@localhost opt]$ tar -xjvf  u-boot-2009.08.tar.bz2

 

(2) 进入U-Boot-2009.08的根目录,修改Makefile,使用vigedit编辑器

[root@localhost opt] #  cd   u-boot-2009.08

[root@localhost u-boot-2009.08] #  vi   Makefile

 

u-boot-2009.08的根目录下面的Makefile中为mini2440建立编译项,以sbc2410x为例子。

2985的后面加上对mini2440板子的支持!

sbc2410x_config: unconfig

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

mini2440_config : unconfig

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

 

各项的意思如下:

arm: CPU的架构(ARCH)

arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。

mini2440: 开发板的型号(BOARD),对应于board/ mini2440目录。

NULL: 开发者/或经销商(vender),NULL为没有。

s3c24x0: 片上系统(SOC)

 

注意下面要与自己的开发系统一致,一般是默认arm-linux-

CROSS_COMPILE=arm-linux-

 

特别注意:

u-boot1.3.3及以上版本Makefile有一定的变化,使得对于24x0处理器从nand启动的遇到问题。也就是网上有人说的:无法运行过lowlevel_init。其实这个问题是由于编译器将我们自己添加的用于nandboot的子函数nand_read_ll放到了4K之后造成的(到这不理解的话,请仔细看看24x0处理器nandboot原理)。运行失败后,利用mini24404LED调试发现u-boot根本没有完成自我拷贝,然后看uboot根目录下的System.map文件可知道原因。解决办法其实很简单,将下面这个语句:在uboot根目录下的Makefile中。289

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

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

2 /board子目录中建立自己的开发板mini2440目录

由于在上一步板子的开发者/或经销商(vender)中填了 NULL ,所以开发板mini2440目录一定要建在/board目录下 目录结构为board/mini2440。如果开发者/经销商(vender)不为NULL,则目录结构为board/verder_name/mini2440,否则编译会出错。

[root@localhost u-boot-2009.08]$  cd   board

[root@localhost board]$    mkdir  mini2440

[root@localhost board]$  cp  -arf sbc2410x/*   mini2440/

[root@localhost board]$  cd  mini2440/

[root@localhost mini2440]$  mv  sbc2410x.c   mini2440.c

 

 还要记得修改自己的开发板mini2440目录下的Makefile文件28,不然编译时会出错:

[root@localhost mini2440]$  vi  Makefile

修改Makefile的依赖文件

COBJS   := sbc2410x.o  flash.o

COBJS    := mini2440.o  flash.o

 

3 include/configs/中建立开发板的配置头文件

[root@localhost mini2440]$ cd  ../../.. (回到u-boot-2009.08的根目录下)

[root@localhost u-boot-2009.08]$ cp include/configs/sbc2410x.h  include/configs/mini2440.h  (添加mini2440的配置头文件)

 

4 测试编译能否成功

回到U-Boot主目录,(若之前有编译过,最好执行一下make clean)  make mini2440_config,再make,编译生成u-boot.bin成功。

  1、配置

[root@localhost u-boot-2009.08]$ make  mini2440_config

Configuring for mini2440 board...

可能出现的问题:

     (1) 如果出现:

      $ make mini2440_config

      Makefile:1927: *** 遗漏分隔符 停止。

请在Uboot的根目录下的Makefile

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

       前加上“Tab”键

 

2、测试编译

[root@localhost u-boot-2009.08]$ make

测试通过后进行下一步

 

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