voidbl2_setup(u_register_targ0,u_register_targ1,u_register_targ2,u_register_targ3){/* Perform early platform-specific setup *//* 执行早期特定平台的配置 */bl2_early_platform_setup2(arg0, arg1, arg2, arg3);/* Perform late platform-specific setup *//* 执行后期特定平台的配置 */bl2_pl...
在bl2_load_images函数中通过调用plat_get_bl_image_load_info函数来获取bl3x镜像文件的信息,ATF源代码中通过使用REGISTER_BL_IMAGE_DESCS宏将事先定义好的bl2_mem_params_descs变量中的数据保存到bl_mem_params_desc_ptr数组中,而bl2_mem_params_descs中保存的就是所有bl3x镜像文件的基本信息,开发者可根据不...
在bl2_entrypoint函数中,完成bl2运行栈的初始化,配置完运行环境后,会调用bl2_main函数来完成bl2对bl3x镜像的加载,而CPU控制权限的转移则是通过触发安全监控模式调用(smc)来实现。
BL1(Bootloader Level 1):位于ROM中,负责初始化硬件和加载BL2。BL2(Bootloader Level 2):位于RAM中,运行在安全模式下,负责加载BL31。BL31(Bootloader Level 3-1):运行在EL3级别,负责初始化安全服务和加载BL32。BL32(Bootloader Level 3-2):运行在安全EL1级别,通常用于加载TEE(Trusted Execution Env...
- 这是一个可选的安全有效载荷,可以在BL1或BL2之后加载和运行。 - 通常用于特定的安全应用,如安全监控、DRM(数字版权管理)或其他需要硬件级安全性的功能。 5. **BL33(Non-trusted Firmware)**: - 这是ATF加载的最后一个固件组件,通常是非安全的固件,如UEFI、U-Boot或操作系统内核。
· 加载BL32镜像:BL32运行在安全世界,BL2依赖BL31将控制权交给BL32。SPSR通过Secure-EL1 Payload Dispatcher进行初始化。 · 加载BL33镜像:BL2依赖BL31将控制权交给BL33。 二、OP-TEE 的启动过程 OP-TEE是一个开源工程,完整的实现了一个可信执行环境。该项目最初由意法-爱立信所发起,是一个专门的解决方案,然...
Hello! I am trying to boot Zephyr on an Intel Agilex5 SoC on a dev board but the BL2 preloader is not working . As written on the Hard Processor
2、ATF的编译不同平台之间的设计肯定都是不一样的,但大多数类似如下,请注意 RESET_TO_BL31=1,表示该ATF从BL31启动。make -C $DIRPATH RESET_TO_BL31=1 PLAT=xxx cleanmake -C $DIRPATH RESET_TO_BL31=1 PLAT=xxx HIGHADDR_DEVICE=1 all 3、ATF的启动废话不多说,直接上图,请自行理解:BL1 BL2 ...
bl2到bl31的跳转 在bl2_main函数中最终会调用smc(BL1_SMC_RUN_IMAGE,(unsigned long)next_bl_ep_info,0,0,0,0,0,0)来触发一个类型为BL1_SMC_RUN_IMAGE的安全监控模式调用。 安全监控模式调用的处理接口在bl1阶段时被指定,调用该函数时传入的command ID是BL1_SMC_RUN_IMAGE,故执行该函数之后,系统将跳转...
下面整理并介绍 BL1、BL2、BL31、BL33(uboot)各个阶段的启动流程与代码实现。 3.1 BL1启动流程 BL1 又被称为Trusted Boot ROM,是启动最早的ROM,它不过它是在CPU的ROM里而不是和BIOS在一起,是一切的信任根。BL1是系统启动的第一阶段,其主要目的是初始化系统环境和启动第二阶段镜像BL2。它的代码定位在: /atf...