免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1748 | 回复: 0
打印 上一主题 下一主题

1.1 uboot1.3.3在SEP4020上的基本移植分析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-13 14:21 |只看该作者 |倒序浏览

1.1 u-boot1.3.3的基本移植分析
阅读了一些文章,下面做一个总结,关于u-boot1.3.3在以SEP4020为核心的UB4020MBT试验平台上的移植概述,对整个流程有一个了解。
1.1.1 u-boot代码结构
u-boot代码采用了一种高度模块化的编程方式,与移植相关的主要目录如下:
l        Board:目标板相关文件,主要包含SDRAM、Flash驱动;
l        common:独立于处理器体系结构的通用代码,如内存大小探测与故障检测;
l        cpu:与处理器相关的文件,如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;
l        driver:通用设备驱动,如CFI Flash驱动(目前对Intel Flash支持较好);
l        doc:u-boot的说明文档;
l        examples:可在u-boot下运行的示例程序,如helloworld.c,timer.c;
l        include:u-boot头文件,configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;
l        lib_xxx:处理器体系相关的文件,如lib-ppc,lib_arm目录分别包含与PowerPC、ARM体系结构相关的文件;
l        net:与网络功能相关的文件目录,如bootp、nfs、tftp;
l        post:上电自检文件目录,尚有待于进一步完善;
l        rtc:RTC驱动程序;
l        tools:用于创建u-boot S-RECORD和BIN镜像文件的工具[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      arm:CPU的架构(ARCH) ;
l      sep4020:CPU的类型,其对应于cpu/sep4020子目录;
l      UB4020:开发板的型号(BOARD),对应于board/prochip/UB4020目录;
l      prochip:开发者/或经销商(vender)。
l      NULL:SOC。
在第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中定义。通过ARCH、CPU、BOARD、VENDOR等不同硬件平台定义不同的选项。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
再修改UB4020下config.mk的TEXT_BASE为:
TEXT_BASE = 0x30700000
此即为u-boot在SDRAM中开始运行的地址。
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-boot:ELF格式的文件,可以被大多数Debug程序识别;
l      u-boot.bin:二进制bin文件,纯粹的u-boot二进制执行代码,不保存ELF格式和调试信息,这个文件一般用于烧录到用户开发板中;
l      u-boot.srec:Motorola S-Record格式,可以通过串行口下载到开发板中。
以上仅实现了最基本的移植过程,几乎没有太大修改。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/107770/showart_2119909.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP