uboot2016.11分析1 - 项目的总Makefile

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) 

uboot2016.11分析1 - 项目的总Makefile

   一个大的系统, 总有一个站在顶端的Makefile指挥着下面uboot/kernel/rootfs的编译过程, 我们一步步深入, 了解uboot.

1. 项目的总Makefile

##########################################################################################
#task [1]	build uboot
##########################################################################################
hiboot: prepare hiregbin_prepare
	@echo "---------task [1]	build boot"
	
	# 进入$(OSDRV_DIR)/opensource/uboot目录, 解压secureboot_release.tgz文件到当前目录, 返回
	pushd $(OSDRV_DIR)/opensource/uboot;tar xzf secureboot_release.tgz -C .;popd
	
	# wildcard 返回匹配此模式的所有文件列表
	#该行是在对比$(OSDRV_DIR)/opensource/uboot目录下的uboot压缩包是否和我们猜想的一致. 若不一致则执行中间的操作 ==> 进行解压
ifneq ($(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER), $(wildcard $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)))
	pushd $(OSDRV_DIR)/opensource/uboot;tar xzf $(UBOOT_TAR) -C .;popd
endif

	# xargs可以将输入内容(通常通过命令行管道传递),转成后续命令的参数
	# 这里是touch一下$(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)文件, 刷新一下修改时间, 便于以后查看该uboot是什么时候编译的.
	find $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER) | xargs touch

	# 编译uboot
	make -C $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER) ARCH=arm CROSS_COMPILE=$(OSDRV_CROSS)- $(UBOOT_CONFIG)

	# 这里也是编译uboot
	pushd $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER);make ARCH=arm CROSS_COMPILE=$(OSDRV_CROSS)- -j 20 >/dev/null;popd

	# 编译gzip并放到$(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)/arch/arm/cpu/armv7/$(CHIP)/hw_compressed中, 赋予执行权限.
	make -C $(OSDRV_DIR)/tools/pc/hi_gzip/
	cp $(OSDRV_DIR)/tools/pc/hi_gzip/bin/gzip $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)/arch/arm/cpu/armv7/$(CHIP)/hw_compressed -rf
	chmod +x $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)/arch/arm/cpu/armv7/$(CHIP)/hw_compressed/gzip
	
	# 拷贝$(OSDRV_DIR)/tools/pc/uboot_tools/$(UBOOT_REG_BIN)到$(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)并重命名为.reg
	cp $(OSDRV_DIR)/tools/pc/uboot_tools/$(UBOOT_REG_BIN) $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)/.reg
	#编译uboot
	pushd $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER);make ARCH=arm CROSS_COMPILE=$(OSDRV_CROSS)- u-boot-z.bin >/dev/null;popd

	# 拷贝uboot烧录bin到xxx目录下, 第一个目录用于烧录, 第二个目录用于uboot加密.
	cp $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)/u-boot-$(CHIP).bin $(OSDRV_DIR)/pub/$(PUB_IMAGE)
	cp $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER)/u-boot-$(CHIP).bin  $(OSDRV_DIR)/opensource/uboot/secureboot_release

上述的编译uboot的片段中我们可以看出, 在uboot目录下一共make了三次, 这三次分别有什么作用呢? 我们在uboot目录下的Makefile中揭晓.

2. uboot下的Makefile

在上一节中, uboot下的Makefile一共被调用了三次, 依次执行了下面的语句:

make -C $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER) ARCH=arm CROSS_COMPILE=$(OSDRV_CROSS)- $(UBOOT_CONFIG)

pushd $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER);make ARCH=arm CROSS_COMPILE=$(OSDRV_CROSS)- -j 20 >/dev/null;popd

pushd $(OSDRV_DIR)/opensource/uboot/$(UBOOT_VER);make ARCH=arm CROSS_COMPILE=$(OSDRV_CROSS)- u-boot-z.bin >/dev/null;popd

关键点:
   1. make $(UBOOT_CONFIG)
   2. make
   3. make u-boot-z.bin

各自做了什么, 暂未深究, 下一篇研究uboot的Makefile的一些有趣的地方.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安河桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值