uboot移植:uboot下的config.mk解析

来源:互联网 发布:电商java 编辑:程序博客网 时间:2024/05/20 16:44
一,autoconf.mk的生成
##autoconf.mk 文件不是源码提供的,是配置过程中自动生成的
##autoconf.mk 的作用是用来指导整个uboot的编译过程。内容是很多CONFIG_开头的宏(变量)
# 这些变量会影响到uboot编译的走向(原理是条件编译,以实现可移植性)
##autoconf.mk 文件的生成取决于源码目录下的include/configs/xxxx.h头文件
# (在GEC210开发板中是include/configs/gec210_sd.h(该文件下的宏定义就是对当前开发板的移植))
# 每一个开发板的移植都对应这个目录下的一个头文件,配置h文件下的宏定义就是移植uboot的关键
sinclude $(OBJTREE)/include/autoconf.mk
ifdef ARCH
sinclude $(TOPDIR)/$(ARCH)_config.mk # include architecture dependend rules
endif
ifdef CPU
sinclude $(TOPDIR)/cpu/$(CPU)/config.mk # include CPU specific rules
endif
ifdef SOC
sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk # include SoC specific rules
endif
ifdef VENDOR
BOARDDIR = $(VENDOR)/$(BOARD)
else
BOARDDIR = $(BOARD)
endif
ifdef BOARD
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk # include board specific rules
endif

二,链接脚本
##如果定义了CONFIG_NAND_U_BOOT宏,则链接脚本叫u-boot-nand.lds,若未定义,就是u-boot.lds
##u-boot-nand.lds是在Nand版本情况下使用的,如果不是,我们在uboot编译链接过程就要考虑u-boot.lds这个脚本
ifeq ($(CONFIG_NAND_U_BOOT),y)
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
else
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
endif

三,TEXT_BASE
##编译uboot的时候,在/board/samsung/gec210目录下生成了一个文件config.mk
# 内容是TEXT_BASE = 0xc3e00000 相当于一个变量
##TEXT_BASE是将来整个uboot链接时指定的链接地址地址就相当于0x23e00000
# 由于uboot启用了虚拟地址映射,因此这个0xc3e00000 (dnw下载时usb.bin时候的地址)
ifneq ($(TEXT_BASE),)
CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
endif
原创粉丝点击