Uboot顶层 config.mk 分析

下面对uboot顶层目录下的配置文件config.mk文件进行分析

config.mk源文件截图:
在这里插入图片描述
config.mk源文件分析:

26行:
判断编译输出目录(OBJTREE)和源码目录(SRCTREE)两个目录是否不相同,不相同则处理下面的命令。

27~30行:
如果当前目录变量和源码目录变量相同,则dir赋值为空,否则,把CURDIR目录中的SRCTREE目录替换成空,即dir为$(CURDIR)去掉$(SRCTREE)的部分。

Makefile中的字符串替换函数 subst 格式:

$(subst < from >;,< to >;,< text >;)

功能:把字串< text >;中的< from >;字符串替换成< to >;。

返回:函数返回被替换过后的字符串。

33行:
如果dir不为空(当前目录不是顶层目录),那么obj等于$(OBJTREE) $(dir)/,否则(当前目录是顶层目录)等于$(OBJTREE)/

34行:
如果dir不为空(当前目录不是顶层目录),那么obj等于$(SRCTREE)/$(dir)/,否则(当前目录是顶层目录)等于$(SRCTREE)/

36行:
创建obj目录。

上面的代码,主要是针对用户自定义输出编译文件的目录设置的。


config.mk源文件截图:
在这里插入图片描述

config.mk源文件分析:

63行前面的于arm无关,暂不分析。

63行~70行也和arm没有关系,不分析。浪费感情。

config.mk源文件截图:
在这里插入图片描述
config.mk源文件分析:

这些代码是和编译器相关的选项。(废话,别人又不是看不见)

config.mk源文件截图:
在这里插入图片描述
config.mk源文件分析:

97行~107行:

这是一个完整的arm编译工具链列表代号,后面的编译就使用这些符号。

config.mk源文件截图:
在这里插入图片描述
config.mk源文件分析:

112行:
包含了一个autoconf.mk文件。这个文件也是配置时生成的。它里面是定义的变量,是条件编译的不同的配置值,原来匹配不同的配置项目(或者开发板)。

它的生成是根据目录/include/config/xxx_sd.h(xxx_nand.h)等等文件的配置来生成的。根据这个.h文件里的宏定义生成autoconf.mk文件。这个.h文件对应一个开发板。移植一个uboot到一种开发板,必须配置这.h文件。
  
autoconf.mk 这个文件非常 重要

115行:
包含了ARCH_config.mk,即arm_config.mk

118行:
CPU的config.mk

121行:
SOC的config.mk

124~126行:
厂商和对应的开发板相关,具体的是(board/厂商名/开发板名称)这样的一个路径。

129行:
包含这个路径下的这个config.mk配置文件,这个文件内容是一个链接地址,即:TEST_BASE=0Xxxxxxxxx

config.mk源文件截图:
在这里插入图片描述
config.mk源文件分析:

144~147行:
是否定义了CONFIG_NAND_U_BOOT(在上面提到的autoconf.mk中定义),链接脚本就选u-boot-nand.lds,否则就选u-boot.lds脚本。

156行:
TEXT_BASE,上面提到的链接地址,它是uboot在链接时必须指定的链接地址,注意是虚拟地址,它会对应一个物理地址。

config.mk源文件截图:
在这里插入图片描述
config.mk源文件分析:

续待…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值