uboot - 主Makefile分析【4】

===主要分析主makefile的调用的makefile  ->  config.mk文件 ===

调用uboot根目录下的config.mk进行编译:



注意:在include目录下也有个config.mk文件(该文件是在配置后生成的  make NAME_config),而根目录下的config.mk是本来就有的。
是用于主makefile调用的
在根目录下的config.mk是

打开它 首先看编译工具定义:如图:(config.mk)

将CROSS_COMPILE导出后结合后面的词汇定义成完整的交叉编译链

接着,我们继续看config.mk文件,导入autoconf.mk:如图:


autuconf.mk是一些通用的配置选项,他决定了makefile的编译走向。他也是在make NAME_config配置后生成的。

其目录在include/autoconf.mk(默认编译时)如图:


打开它可以看到是给一些uboot中的宏赋值,就是uboot中会条件编译,这就是个配置他的文件:内容如图:


y表示选中 “xxx”表示字符串赋值。

SO 这个文件autoconf.mk是如何生成的呢???看下么:

这个文件的生成也是要原材料才能生成的,而这个原材料解释在include/configs/xxx.h头文件  我用的x210就是在include/configs/x210_sd.h,

在这个include/configs目录下原始的uboot其实是有很多xyzxxx.h文件的每个.h文件其实就是对应一个开发板的,如图:


而我们的是x210_sd.h 如图:


这里面本来是有很多.h文件的 但是你在移植时可以删掉没用的 比如x210有nand和inand的,而我们是inand的 所以是x210_sd.h

打开x210_sd.h可以看到其实就是一些宏 刚才那个autoconf.mk里面的那些宏其实就是这里来的,只不过从里面提取一些必要的然后生成他。

其内容可以自己打开看看 这里就不贴图了。

接下来是导入不同文件夹下必要的config.mk文件。如下:


在接下来就是链接脚本以及链接选项的指定:如下:


这里可以打开autoconf.mk文件查看有没有宏CONFIG_NAND_U_BOOT的定义 显然是没有的,所以执行else分支:

其指定了链接脚本的文件在$(TOPDIR)/board/$(BOARDDIR)/u-boot.lds 我们就是根目录下的board/samsung/x210/u-boot.lds,如图:


TEXT_BASE解析:(uboot链接时 指定的 链接地址)

他不是事先写好的  是在make NAME_config配置是生成的 ,其线索如下图所示:

所以在目录/board/samsung/x210/config.mk  如图所示

其内容就是指定链接地址 如图:


这个地址不是实际的物理地址 因为uboot使用了虚拟内存映射 实际的地址分析代码的时候可以看到!


最后 可以看到config.mk文件的最后一段是 自动推导的过程 这个就不分析了  和我们裸机里面的makefile一样  如下图

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值