[RK3399][Android7.1] Uboot 固件生成方式

Uboot: v2017.02
Board: Firefly-RK3399

RK Uboot有两种类型的固件生成方式。

一种是uboot作为first level bootloader,那么uboot就只有一个bin文件,例如rk3288平台的就是RK3288UbootLoader_V2.30.10.bin

另外一种是uboot作为second level bootloader,那么uboot就只是一个image, 例如rk3399平台的就是uboot.img

是否作为second level bootloader通过宏CONFIG_SECOND_LEVEL_BOOTLOADER来控制,在rk3399_defconfig中有定义。

CONFIG_SYS_EXTRA_OPTIONS="RKCHIP_RK3399,PRODUCT_MID,NORMAL_WORLD,SECOND_LEVEL_BOOTLOADER,BAUDRATE=1500000"

如果有定义了CONFIG_MERGER_MINILOADER(事实上CONFIG_SECOND_LEVEL_BOOTLOADER定义后此宏也就被打开了),Uboot会合并mini loader bin和配置。
Makefile中实现:

ifdef CONFIG_SECOND_LEVEL_BOOTLOADER
    $(if $(CONFIG_MERGER_MINILOADER), ./tools/boot_merger ./tools/rk_tools/RKBOOT/$(RKCHIP)MINIALL.ini &&) \
    $(if $(CONFIG_MERGER_TRUSTIMAGE), ./tools/trust_merger $(if $(CONFIG_RK_TRUSTOS), --subfix) \
                            ./tools/rk_tools/RKTRUST/$(RKCHIP)TRUST.ini &&) \
    $(if $(CONFIG_MERGER_TRUSTOS), ./tools/loaderimage --pack --trustos $(RK_TOS_BIN) trust.img &&) \
    ./tools/loaderimage --pack --uboot u-boot.bin uboot.img
else
    ./tools/boot_merger --subfix "$(RK_SUBFIX)" ./tools/rk_tools/RKBOOT/$(RKCHIP).ini
endif # CONFIG_SECOND_LEVEL_BOOTLOADER

解析之后对应的ini文件是  tools/rk_tools/RKBOOT/RK3399MINIALL.ini
使用的mini loader bin文件是 tools/rk_tools/bin/rk33/rk3399_miniloader_v1.06.bin
最终输出文件是 rk3399_loader_v1.08.106.bin

你可能感兴趣的:(子类__Uboot,RK3399)