Uboot学习笔记(三)Uboot编译过程分析

简介

通过阅读讯为提供的使用手册,我们可以知道三星Exynos4412的Uboot的编译是通过调用build_uboot.sh来实现的,这个脚本文件通过传入参数的不同来生成不同内存大小、emmc大小的核心板的uboot.bin二进制文件,例如:SCP封装2GDDR内存的核心板的编译命令为

./build_uboot.sh SCP_2GDDR

所以我们就以它为起点来分析Uboot的编译过程
本篇文章将着重分析三个文件:build_uboot.sh、mkconfig、Makefile

build_uboot.sh分析

这个Uboot编译脚本是三星4412特有的,它其实是三星中国研究所为自己的4412开发板TC4写的,在TC4的Uboot文件夹中可以找到,讯为对它进行了修改,适配了自己的开发板,这个脚本完成了Uboot的配置、编译、清理和二进制文件打包的工作,可以让我们方便的生成.bin文件
对它的分析我以流程图的形式给出:
在这里插入图片描述
所以总结来说,build_uboot.sh这个脚本主要做了三个工作:

  • 根据传入的参数进行make config
  • make all 编译uboot镜像
  • 将多个二进制文件合并成最终的uboot镜像(这是4412的启动分层机制决定,BL1+BL2+uboot+TZSW)

关于make config的部分

在上面的build_uboot.sh脚本中执行了如下的指令

 make itop_4412_android_config_scp_2GDDR

我们先查看下Makefile可以找到如下的语句

itop_4412_android_config_scp_2GDDR:		unconfig
	@$(MKCONFIG) $(@:_config=) arm arm_cortexa9 smdkc210 samsung s5pc210 SCP_2GDDR

unconfig的规则是删除了许多的配置文件

unconfig:
	@rm -f $(obj)include/config.h $(obj)include/config.mk \
		$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
		$(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep

$(MKCONFIG)是执行mkconfig,MKCONFIG被定义为当前文件夹下的mkconfig文件

SRCTREE		:= $(CURDIR)
MKCONFIG	:= $(SRCTREE)/mkconfig

(@:_config=)等于把目标文件名称_config替换成“”,即itop_4412_android_config_scp_2GDDR

mkconfig分析

通过上述对build_uboot.sh中make config的分析我们可以得出最后调用mkconfig的语句为

mkconfig  itop_4412_android arm arm_cortexa9 smdkc210 samsung s5pc210

对mkconfig的分析见如下的流程图:

在这里插入图片描述

Makefile分析

Uboot原本的Makefile的代码是相当多的(有3800多行),但是其中大部分的代码是与我们的4412使用的Uboot无关的,比如给各种架构的芯片的配置之类的,所以我分析的是讯为经过裁剪的删掉没用的部分的Makefile,有600行左右
分析流程图如下:
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值