您的位置:首页 > 其它

uboot - 主Makefile分析【4】

2015-11-22 01:37 351 查看
===主要分析主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一样 如下图


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: