U-Boot详细分析(1)——编译过程分析

一、编译入手

根据从官网上下载来的U-boot源码中README文件中可以得到信息,如果要使用开发板board/<board_name>,应该先执行"make <board_name>_config"命令进行配置,随后执行"make all"生成编译后文件

所以可以得出编译的主要两步:

  1. make <board_name>_config进行配置
  2. make all得到编译后目标文件

以这两步为核心来看《ITOP-4412开发板之精英版使用手册》中编译uboot生成镜像的方法:

./build_uboot.sh SCP_1GDDR

在三星原厂手册《SEC_Exynos4x12_[SSCR][TC4]ICS_Installation_Guide_RTM1.0.2》中看到对应的方式:

[1]: enter the directory TC4_uboot
[2]: execute the command below for u-boot compile
For TC4Plus board:
./build_uboot.sh tc4_plus

因此,可以看出build_uboot.sh这个脚本是三星提供的编译uboot镜像的脚本

二、 build_uboot.sh

在三星提供的TC4的uboot源码中的build_uboot.sh脚本中写着大概的执行步骤,在讯为提供的build_uboot.sh中又加入了对应的SCP和POP以及Android和Linux文件系统的相关配置代码

执行 ./build_uboot.sh SCP_1GDDR的步骤:

在这里插入图片描述

通过build_uboot.sh这一脚本完成:

  1. "make <board/name>_config"配置编译
  2. "make all"编译uboot镜像
  3. 将多个二进制文件合并成最终uboot镜像(这是由于4412启动的分层机制,由固定在芯片中的出厂程序iROM引导BL1、BL2、Uboot,这里在之后文章会详细分析)

itop_4412_android_config_scp_1GDDR

根据刚才对build_uboot.sh执行步骤进行的分析,会执行指令

make itop_4412_android_config_scp_1GDDR

在Makefile中对应语句为:

itop_4412_android_config_scp_1GDDR:		unconfig
	@$(MKCONFIG) $(@:_config=) arm arm_cortexa9 smdkc210 samsung s5pc210 SCP_1GDDR
  • 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… :
SRCTREE		:= $(CURDIR)
MKCONFIG	:= $(SRCTREE)/mkconfig
  • $(@:_config=),等于把目标文件名称的_config替换成“”,即itop_4412_android_scp_1GDDR

三、 mkconfig

在build_uboot.sh中执行:

make itop_4412_android_config_scp_1GDDR

转到Makefile中实际执行:

mkconfig itop_4412_android_scp_1GDDR arm arm_cortexa9 smdkc210 samsung s5pc210 SCP_1GDDR

这条命令在mkconfig执行步骤为:

在这里插入图片描述

四、 Makefile

之前分析的在build_uboot.sh中执行:

mkconfig itop_4412_android_scp_1GDDR arm arm_cortexa9 smdkc210 samsung s5pc210 SCP_1GDDR

之后执行:

make -j$CPU_JOB_NUM

接下来分析一下Makefile的执行步骤:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值