U-Boot的配置、编译和链接

最近在学习U-Boot,关于U-Boot的配置、编译和链接,网上找到一篇比较好的博文,mark并推荐一下。

链接:https://www.cnblogs.com/CrazyCatJack/p/6056564.html

学习总结:

1.U-Boot的配置

在编译U-Boot之前需根据自己的板子对U-Boot进行配置,配置命令为make xxx_config(xxx表示自己的开发板名称)。那么这条命令是怎么对我们的U-Boot进行配置的,配置过程中做了哪些操作呢?

make xxx_config命令执行U-boot根目录下的Makefile文件,这个文件是我们配置和编译U-Boot的总纲。xxx_config在Makefile中是一个目标,我们在Makefile中找到xxx_config的地方。

MKCONFIG := $(SRCTREE)/mkconfig

smdk6410_config : unconfig
    @$(MKCONFIG) $(@:_config=) arm s3c64xx smdk6410 samsung s3c6410


 我们的目标是smdk6410_config,需要执行的操作是调用U-Boot根目录下的mkconfig脚本,并将命令行中的参数传给mkconfig。

既执行 ./mkconfig smdk6410 arm s3c64xx smdk6410 samsung s3c6410

那mkconfig脚本做了哪些操作呢?这里就不贴代码,总结:

1.生成board name

2.创建链接文件

3.创建/include/config.mk文件

ARCH     = arm
CPU      = s3c64xx
BOARD    = smdk6410
VENDOR   = samsung
SOC      = s3c6410            

4.创建开发板相关头文件/include/config.h

/* Automatically generated - do not edit */
#include <configs/smdk6410.h>

至此,我们U-Boot的配置工作完成。

2. U-Boot的编译

编译我们只需输入make命令,命令根据U-Boot根目录下的Makefile进行编译。Makefile会包含我们上面配置生成的文件指导编译。

1.包含/include/config.mk,根据配置生成的ARCH CPU BOARD VENDOR SOC信息选择交叉编译工具

# load ARCH, BOARD, and CPU configuration
include $(OBJTREE)/include/config.mk
export    ARCH CPU BOARD VENDOR SOC

ifndef CROSS_COMPILE
ifeq ($(HOSTARCH),ppc)
CROSS_COMPILE =
else
ifeq ($(ARCH),ppc)
CROSS_COMPILE = powerpc-linux-
endif
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
endif
ifeq ($(ARCH),i386)
ifeq ($(HOSTARCH),i386)
CROSS_COMPILE =
else
CROSS_COMPILE = i386-linux-
endif
endif

2.包含/config.mk,配置交叉编译选项和结构依赖规则。

#load other configuration
include $(TOPDIR)/config.mk

3.设置OBJS和LIBS变量

4.编译生成目标

ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND)

all: $(ALL)

$(obj)u-boot.hex:    $(obj)u-boot
    $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@

$(obj)u-boot.srec:   $(obj)u-boot
    $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@

$(obj)u-boot.bin:    $(obj)u-boot
    $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
    $(OBJCOPY) -d $< > $<.dis

$(obj)u-boot.image:  $(obj)u-boot.bin
    ...
    ...
    ...

$(OBJ)u-boot.dis:    $(obj)u-boot
    $(OBJDUMP) -d $< > $@

...
...
...

3. U-Boot的链接

通过链接,我们可以得到我们的目标文件。

/board/samsung/smdk6410/u-boot.lds

/board/samsung/smdk6410/config.mk

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值