Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25543
  • 博文数量: 13
  • 博客积分: 530
  • 博客等级: 中士
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-11 11:47
文章分类

全部博文(13)

文章存档

2010年(1)

2009年(12)

我的朋友
最近访客

分类: LINUX

2009-12-13 14:21:52

1.3.3的基本移植分析

阅读了一些文章,下面做一个总结,关于u-boot1.3.3在以SEP4020为核心的UB4020MBT试验平台上的移植概述,对整个流程有一个了解。

1.1.1 u-boot代码结构

u-boot代码采用了一种高度模块化的编程方式,与移植相关的主要目录如下:

l        Board:目标板相关文件,主要包含SDRAMFlash驱动;

l        common:独立于处理器体系结构的通用代码,如内存大小探测与故障检测;

l        cpu:与处理器相关的文件,如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;

l        driver:通用设备驱动,如CFI Flash驱动(目前对Intel Flash支持较好)

l        docu-boot的说明文档;

l        examples:可在u-boot下运行的示例程序,如helloworld.c,timer.c

l        includeu-boot头文件,configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;

l        lib_xxx:处理器体系相关的文件,如lib-ppclib_arm目录分别包含与PowerPCARM体系结构相关的文件;

l        net:与网络功能相关的文件目录,如bootpnfstftp

l        post:上电自检文件目录,尚有待于进一步完善;

l        rtcRTC驱动程序;

l        tools:用于创建u-boot S-RECORDBIN镜像文件的工具[10]

本课题中u-boot的移植就是根据UB4020MBT的硬件资源来修改以上目录中的部分文件或者添加相关源文件,并且重新编译。

1.1.2 u-boot移植前的准备

1.  熟悉SEP4020芯片及UB4020MBT开发板;

2.在虚拟机上(Linux2.6.16系统)建立交叉编译环境;

fedora系统下以root用户登录,下载cross-3.3.2.tar.bz2文件并将其复制到“/”目录下,解压安装(如下命令)

[root@localhost /]# tar -jxvf cross-3.3.2.tar.bz2

这个命令会在/usr/local/arm/3.3.2/bin目录下安装arm-linux-gcc交叉编译程序,然后在PATH变量中添加一项:/usr/local/arm/3.3.2/bin

[root@localhost /]# export PATH=/usr/local/arm/3.3.2/bin:$PATH

或把PATH=/usr/local/arm/3.3.2/bin:$PATH添加到/etc/bashrc文件中的最后一行(如下命令)

export PATH=/usr/local/arm/3.3.2/bin: $PATH

测试:把终端关闭,重新打开后执行如下命令:

[root@localhost /]# arm-linux-gcc –v

若出现:gcc version 3.3.2,则说明建立好了。

3.下载u-boot1.3.3

这里先下载移植好的。。。

4.测试交叉编译器配置好没有

u-boot-1.3.3目录下执行如下命令:

[root@localhost u-boot-1.3.3]# make distclean

[root@localhost u-boot-1.3.3]# make UB4020_config

[root@localhost u-boot-1.3.3]# make

没错的话会在u-boot-1.3.3下生成u-boot.bin文件。

1.1.3 u-boot移植方法

u-boot1.3.3支持UB4020MBT开发板,移植过程中需要修改的主要有如下一些文件:

l      include/configs/UB4020.h                            //开发板的配置文件

l      board/prochip/UB4020/UB4020.c

l      board/prochip/UB4020/flash.c

l      board/prochip/UB4020/lowlevel_init.S

l      cpu/sep4020/start.S

l      cpu/sep4020/serial.c

顶层目录下的Makefile首先可以配置开发板的定义,然后递归调用各层目录下的Makefile,最后把编译过的程序链接成u-boot映像。

1.进入u-boot-1.3.3/目录,修改Makefile

(1) 修改交叉编译器为arm-linux-gcc(如下)

ifeq ($(ARCH),arm)

CROSS_COMPILE = /usr/local/arm/3.3.2/bin/arm-linux-

(2) 添加如下两行命令:

UB4020_config :      unconfig

      @./mkconfig $(@:_config=) arm sep4020 UB4020 prochip NULL

l      armCPU的架构(ARCH)

l      sep4020CPU的类型,其对应于cpu/sep4020子目录;

l      UB4020:开发板的型号(BOARD),对应于board/prochip/UB4020目录;

l      prochip:开发者/或经销商(vender)

l      NULLSOC

在第2 @前面的空格是Tab键,不能用空格来代替,因为是用它来识别命令的。

执行配置u-boot的命令make UB4020_config,通过./mkconfig脚本生成include/config.mk的配置文件,而文件内容正是通过这个配置u-boot的命令对开发板配置生成的,include/config.mk内容如下:

ARCH = arm

CPU  = sep4020

BOARD = UB4020

VENDOR = prochip

       这样,硬件平台的目录文件关系可以通过这些定义来确定:

       board/prochip/UB4020/

       cpu/sep4020/

       lib_arm/

       include/asm-arm/

       include/configs/UB4020.h

       所以,就要在上面所定义的对应目录放置移植所需要的对应文件!!!

       在顶层Makefile ,已经包含了这些文件的定义,而各种体系结构通用的跪着直接在顶层config.mk中定义。通过ARCHCPUBOARDVENDOR等不同硬件平台定义不同的选项。arm体系结构的规则包含在arm_config.mk中。

ifeq ($(obj)include/config.mk,$(wildcard $(obj) \

include/config.mk))

# load ARCH, BOARD, and CPU configuration

include $(obj)include/config.mk

export  ARCH CPU BOARD VENDOR SOC

 

2.在board子目录prochip/UB4020文件夹

修改开发板UB4020目录下的Makefile文件为:

OBJS    := UB4020.o flash.o dm9161.o

再修改UB4020config.mkTEXT_BASE为:

TEXT_BASE = 0x30700000

此即为u-bootSDRAM中开始运行的地址。

3.在include/configs/中建立配置头文件UB4020.h

4.修改cpu/sep4020/config.mk文件

[root@localhost sep4020]# gedit config.mk

把下面这句:

PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)

改为:

PLATFORM_CPPFLAGS +=$(callcc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu,))

5.测试编译能否成功

[root@localhost u-boot-1.3.3]#make distclean

[root@localhost u-boot-1.3.3]#make UB4020_config

[root@localhost u-boot-1.3.3]#make

如果编译成功的话会在u-boot-1.3.3下生成三个文件:

l      u-bootELF格式的文件,可以被大多数Debug程序识别;

l      u-boot.bin:二进制bin文件,纯粹的u-boot二进制执行代码,不保存ELF格式和调试信息,这个文件一般用于烧录到用户开发板中;

l      u-boot.srecMotorola S-Record格式,可以通过串行口下载到开发板中。

以上仅实现了最基本的移植过程,几乎没有太大修改。

 

阅读(935) | 评论(0) | 转发(0) |
0

上一篇:1.0 U-boot.lds分析

下一篇:ldr与adr的区别

给主人留下些什么吧!~~