Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59391
  • 博文数量: 19
  • 博客积分: 35
  • 博客等级: 民兵
  • 技术积分: 105
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-19 12:29
文章分类
文章存档

2013年(1)

2012年(18)

分类:

2012-12-16 20:45:34

     主要讲述在XC2440开发板上移植u-boot-2010.03的过程及遇到的问题,如有错误之处,谢请指正。
一、移植环境
  •  主机:VMWare8 -- Ubuntu10.10
  •  开发板:XC2440 -- 2M Norflash  256M Nandflash
  •  编译器:arm920t-eabi-4.1.2.tar
  •  u-boot:u-boot-2010.03
二、移植步骤

   本次移植的功能特点包括:
  • 支持Nandflash读写
  • 支持Norflash/Nandflash启动
  • 支持MTD(NAND)分区
  • 支持DM9000网卡
  • 支持串口xmodem协议(loadx命令)
  • 支持USB下载
  • 支持烧写yaffs2文件系统镜像
  • 支持开机logo
  • 支持快捷菜单   
1、了解u-boot的主要目录结构和启动流程      

   
                               u-boot主要目录说明图

   u-boot的stage1代码通常放在cpu/xxx/start.S文件中,用汇编语言写成;
   u-boot的stage2代码通常放在lib_arm/board.c文件中,用C语言写成。
   各个部分的流程图如下:

   
                                  u-boot启动流程图

2、建立自己的开发板项目

    u-boot支持很多cpu,可以查看board下的目录结构,如board/samsung/目录下就是对三星一
些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但是没有smdk2440,这就需要我们建立自己的开发板项目。

(1)  2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/目录下建立自己的开发板项目,取名smdk2440

     # tar -xjvf u-boot-2010.03.tar.bz2
     # cd u-boot-2010.03/board/samsung
     # mkdir smdk2440

(2)  2440和2410的资源差不多,所以就以2410项目的代码作为模版,以后再修改

     ① 把smdk2410下面的文件全拷到smdk2440文件加下,然后把smdk2410.c修改为smdk2440.c,同时修改Makefile文件,把smdk2410.o修改为smdk2440.o,删除board/samsung/目录下除了smdk2440目录以外的其它目录,同时删除board/目录下除了samsung以外的其它目录。

     ② 进入include目录,在include/configs/目录下建立smdk2440的头文件,可以把smdk2410.h修改为smdk2440.h ,然后删掉除了smdk2440.h以外的所有文件。回到include目录,删除该目录下除了asm-arm和asm-generic以外的其它asm-xxx形式的目录。再进入asm-arm目录,删除该目录下除了arch-s3c24x0以外的其它arch-xxx形式的目录。

     ③ 修改u-boot的Makefile文件,指定交叉编译器为arm-inux-, 找到smdk2410_config的地方,在其下面按照smdk2410_config的格式建立smdk2440_config的编译选项。

      CROSS_COMPILE ?= arm-linux-
      
      smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
      smdk2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2440 samsung s3c24x0
     
     ④ 进入cpu目录,删除该目录下除了arm920t以外的其它目录,然后进入arm920t目录,删除该目录下除了s3c24x0以外的其它目录。

     ⑤进入u-boot-2010.03目录,删除该目录下除了lib_arm和lib_generic以外的其它lib_xxx形式的目录。

(3)测试编译新建的smd2440开发板项目

      # make smdk2440_config    //如果出现Configuring for smdk2440 board...则表示设置正确
      # make  //编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了

  到此为止,u-boot对自己的smdk2440开发板没有任何用处,以上的移植只是搭建了一个smdk2440开发板u-boot的框架,要使其功能实现,还需要根据smdk2440开发板的具体资源情况来对u-boot源码进行修改。
阅读(2150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~