uboot在2410上的移植

题外话:
    Uboot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, UBoot不仅仅支持
嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS
嵌入式操作系统。     UBoot除了支持PowerPC系列的处理器外,   还能支持MIPS、 x86、    ARM、NIOS、
XScale等诸多常用系列的处理器。
    uboot的源代码的下载地址是:
sourceforge.net/projects/uboot
    u-boot的源代码是通过GCC和Makefile组织编译的,顶层目录下的Makefile首先可以设
置开发板的定义,然后递归调用子目录下的Makefile,最后把编译过的目标文件链接成
u-boot映象。

前提:先安装交叉编译器(这里是2.95.3的版本)并且已经加到PATH中

ok,let's begin!

1.下载了uboot的源码,解压到任意目录下,可以看到,有一些子目录,比如board,cpu,common等等。目录结构如下所示


目录                  内容
       
Board             和一些已有开发板有关的文件. 每一个开发板都以一个子目录出现在当前目
                      录中,比如说:SMDK2410,子目录中存放与开发板相关的配置文件.
Common       实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如go命令对
                      应就是cmd_boot.c
Cpu               与特定CPU架构相关目录,   每一款uboot下支持的CPU在该目录下对应一个子 目录,比如有子目录arm920t等。
Disk   对磁盘的支持
Doc    文档目录。uboot有非常完善的文档,推荐大家参考阅读。
drivers       uboot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、
串口和USB等。
        
Fs       支持的文件系统,uboot现在支持cramfs、fat、fdos、jffs2和registerfs。
         uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件
         和对文件系统支持的文件。     该目录下configs目录有与开发板相关的配置头文
include
         件,如smdk2410.h。该目录下的asm目录有与CPU体系结构相关的头文件,asm
         对应的是asmarm.
lib_xxxx 与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。
Net      与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统
的实现。
         
Tools    Uboot的工具,如:mkimage, crc等等。


最外面的Makefile是一个总的Makefile
打开看一下会发现有行如下面的注释
#========================================================================
# PowerPC
#========================================================================

#########################################################################
## MPC5xx Systems
#########################################################################

这就是make会根据不同的参数调用子目录下的makefile去配置某个特定的板子

2.现在我们要自己在uboot的目录里加一点自己的东西好定制自己的板子)'_'(

先给我们的板子取一个名字,就叫my2410吧
再修改主的makefile,加上自己的配置,可以参照arm已知的配置
my2410_config    :    unconfig
    @./mkconfig $(@:_config=) arm arm920t my2410 NULL s3c24x0
各项的意思如下:

arm:CPU的构架(ARCH)
arm920t:CPU的类型(CPU),对应于cpu/arm920t子目录
my2410:开发板的型号(BOARD),对应一会儿要创建的board/my2410 目录
NULL:开发者或经销商(vender)
s3c24x0:片上系统(SOC)
现在在board目录下创建自己的板子目录
tom@tom-ubuntu:~/u-boot$mkdir board/my2410
tom@tom-ubuntu:~/u-boot$ cp board/smdk2410/* board/my2410/     ##直接拿过来用^_~
tom@tom-ubuntu:~/u-boot$ cd board/my2410
tom@tom-ubuntu:~/u-boot/board/my2410$ mv smdk2410.c my2410.c ##名字也改一下,不然通不过编译 

在include/configs/中建立配置头文件:
tom@tom-ubuntu:~/u-boot$ cp include/configs/smdk2410.h include/configs/my2410.h

好了,现在就可以编译了
编译之前,先
tom@tom-ubuntu:~/u-boot$ make distclean #做一下清除工作,主要是删除一些链接文件
然后,
tom@tom-ubuntu:~/u-boot$ make my2410_config ##这个my2410_config就是我们自己加到makefile中去的^__^
这时应该出现
Configuring for my2410 board...
表明没问题
tom@tom-ubuntu:~/u-boot$ make
不出意外的话,应该编译通过了


我出现过的
错误一
make[1]: *** 没有规则可以创建“all”需要的目标“hello_world.srec”。 停止。
------------------------------------------------------------------
    make[1]: Leaving directory `/home/tom/u-boot-1.1.4/examples'
    make: *** [examples] 错误 2

    在网上查了查,有人说是make 3.81的一个BUG!
    http://blackfin.uclinux.org/gf/project/u-boot/tracker/?action =TrackerItemEdit&tracker_item_id=1324
    可以简单的改一个目录examples下的Makefile来解决
     修改
58行的
    #SREC   = hello_world.srec
    #BIN    = hello_world.bin hello_world
    SREC    = hello_world.o
    BIN     = hello_world.o hello_world


错误二:
make[1]: *** 没有规则可以创建“libmy2410.a”需要的目标“smdk2410.o”。 停止。
make[1]: Leaving directory `/home/tom/u-boot-1.1.4/board/my2410'
make: *** [board/my2410/libmy2410.a] 错误 2

解决方法:
修改board/my2410/Makefile 
将28行的 
OBJS    := smdk2410.o flash.o
改为
OBJS    := my2410.o flash.o
   
错误三:

    isystem /usr/local/arm/bin/../lib/gcc-lib/arm-linux/3.2/include -pipe -DCONFIG_ARM -D__ARM__ -march=armv4 -mtune=arm7tdmi -msoft-float -mabi=apcs-gnu -Uarm -Wall -Wstrict-prototypes -c -o hello_world.o hello_world.c
cc1: invalid option `abi=apcs-gnu'

出错的文件是/cpu/arm920t/下的config.mk:将
PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
改成:
PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu),)

再make,就OK了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值