LS1043A boot 镜像编译及引导分析(二)
基于 flexbuild_lsdk1909_update_221019 SDK
source setup.env
通过如下指令编译引导镜像
flex-builder -c atf -m ls1043ardb -b sd
最终生成的镜像在:
-rw-r--r-- 1 root root 49060 Nov 28 13:17 /home/vmuer/work/nxp_ls1043/flexbuild_lsdk1909_update_221019/build/firmware/atf/ls1043ardb/bl2_sd.pbl
-rw-r--r-- 1 root root 769340 Nov 28 13:17 /home/vmuer/work/nxp_ls1043/flexbuild_lsdk1909_update_221019/build/firmware/atf/ls1043ardb/fip_uboot.bin
通过如下指令可生成firmware(内部打包相关的镜像)
flex-builder -i mkfw -m ls1043ardb -b sd
最张生成的镜像在:
/home/vmuer/work/nxp_ls1043/flexbuild_lsdk1909_update_221019/build/images/firmware_ls1043ardb_uboot_sdboot.img [Done]
非加密启运(ATF)过程如下所示:
启动流程正常有三个过程:
BL1
内部ROM 拷背bl2.bin 至OCRAM, BOOTLOC指标指向bl2.bin所在内存位置
BL2
初始化内存,并验证BL31 BL32 BL33,并拷贝至DDR, 其中 BL31 BL32 BL33由 fip_uboot.bin组成,然后把控制权限给BL31
BL31
设置异常向量表
配置安全相关的设置
提供服务给bootloader和操作系统,如控制核电压状态和让其他CPU core 退出复位状态
BL32
是可选的过程,如OP-TEE, BL32还是会把控制权还给BL31.
BL31
把控制权限传递给U-BOOT/UEFI
BL33
正常的UBOOT/UEFI引导
安全启动的过程:
详细参考:
./packages/firmware/atf/plat/nxp/README.TRUSTED_BOOT
相比ATF 多了一个验证镜像的过程,在各个镜像会添加对应的头部,如下所示:
加密引导过程如下: