uboot顶层目录(根目录)下的config.mk解析

该文件在主Makefile中的第185行被包含,如下:

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

1. 编译工具定义(94 ~ 107行)

#
# Include the make variables (CC, etc...)
#
AS	= $(CROSS_COMPILE)as
LD	= $(CROSS_COMPILE)ld
CC	= $(CROSS_COMPILE)gcc
CPP	= $(CC) -E
AR	= $(CROSS_COMPILE)ar
NM	= $(CROSS_COMPILE)nm
LDR	= $(CROSS_COMPILE)ldr
STRIP	= $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB	= $(CROSS_COMPILE)RANLIB

2. 包含开发板配置项(112行)

# Load generated board configuration
sinclude $(OBJTREE)/include/autoconf.mk

(1)autoconf.mk文件不会源代码提供的,是在配置过程中自动生成的。

(2)该文件的作用是指导uboot的编译过程。该文件里面的内容是以CONFIG_开头的宏,这些宏会影响uboot的编译过程(其实就是条件编译)。

在uboot代码中的很多地方使用条件编译进行编写,这里的条件编译时用来可移植性的。

(3)这个文件是根据include/configs/xxx.h头文件的内容生成的。x210开发板对应的头文件是x210_sd.h,在这个.h头文件中,全部都是宏定义,这些宏定义就代表了对x210开发板的移植。每一个开发板的移植对应include/configs目录下的一个头文件,而对应的头文件中全部都是宏定义,因此配置头文件中的这些宏定义就是移植uboot的关键所在。

3. 链接脚本(142 ~ 149行)

ifndef LDSCRIPT
#LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
ifeq ($(CONFIG_NAND_U_BOOT),y)
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
else
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
endif
endif

如果定义了CONFIG_NAND_U_BOOT宏,则使用u-boot-nand.lds这个链接脚本;如果未定义,使用u-boot.lds这个链接脚本。

4. TEXT_BASE(156 ~ 158行)

ifneq ($(TEXT_BASE),)
CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
endif

(1)在Makefile中配置x210开发板时,在board/samsung/x210目录下生成了一个文件config.mk,这个文件中的内容就是:

TEXT_BASE = 0xc3e00000

相当于定义了一个变量TEXT_BASE,它的内容是0xC3E00000。

(2)TEXT_BASE是整个uboot链接时指定的链接地址。由于在uboot中启用了虚拟地址映射,因此0xC3E00000这个地址就等于0x23E00000。

5. 自动推到规则(239 ~ 256行)

ifndef REMOTE_BUILD

%.s:	%.S
	$(CPP) $(AFLAGS) -o $@ $<
%.o:	%.S
	$(CC) $(AFLAGS) -c -o $@ $<
%.o:	%.c
	$(CC) $(CFLAGS) -c -o $@ $<

else

$(obj)%.s:	%.S
	$(CPP) $(AFLAGS) -o $@ $<
$(obj)%.o:	%.S
	$(CC) $(AFLAGS) -c -o $@ $<
$(obj)%.o:	%.c
	$(CC) $(CFLAGS) -c -o $@ $<
endif

该部分内容可以参考《跟我一切学Makefile》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值