文章目录
1. 编译三部曲
source ./build/envsetup.sh
lunch msm8909-eng
make aboot
2. aboot编译过程
2.1 找“aboot”伪目标
device/qcom/common/generate_extra_images.mk
第434 - 439行
.PHONY: aboot
ifeq ($(USESECIMAGETOOL), true)
aboot: gensecimage_target
else
aboot: $(INSTALLED_BOOTLOADER_MODULE)
endif
USESECIMAGETOOL的值是true,走 if 分支。
if分支的目标是gensecimage_target,它定义在vendor/qcom/proprietary/common/scripts/Android.mk
转到$(TARGET_EMMC_BOOTLOADER) 和 $(INSTALLED_BOOTLOADER_MODULE)这两个变量。
添加2行代码,打印一下这2个变量的值:
make aboot 编译,然后查看编译日志:
$(TARGET_EMMC_BOOTLOADER)的值是 out/target/product/msm8909/emmc_appsboot.mbn
$(INSTALLED_BOOTLOADER_MODULE)的值为空。
2.2 编译aboot
$(TARGET_EMMC_BOOTLOADER)定义编译目标。
bootable/bootloader/lk/AndroidBoot.mk
在这里完成aboot的编译。