0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

code层面 ATF中bl1的启动

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-11-07 15:53 次阅读

系统上电之后首先会运行ChipRom,之后会跳转到ATF的bl1中继续执行。bl1主要初始化CPU、设定异常向量、将bl2的镜像加载到安全RAM中,然后跳转到bl2中开始运行。
bl1的主要代码存放在bl1目录中,bl1的链接文件是bl1/bl1.ld.s文件,该文件指定bl1的入口函数是bl1_entrypoint。

AArch32的该函数定义在bl1/aarch32/bl1_entrypoint.S文件中,AArch64的该函数定义在bl1/aarch64/bl1_entrypoint. S文件中。bl1的执行流程如图所示。

图片
bl1执行流程

bl1_entrypoint函数说明

bl1_entrypoint函数主要完成ARMv8架构中EL3执行环境的基础初始化、设定异常向量表、加载bl2的镜像文件到内存中并进行跳转到bl2继续执行。该函数的内容如下:

func bl1_entrypoint

        /*  EL3级别运行环境的初始化,该函数定义在include/common/aarch64/el3_common_macros.S文

        件中*/

            el3_entrypoint_common           

                _set_endian=1               

                _warm_boot_mailbox=! PROGRAMMABLE_RESET_ADDRESS           

                _secondary_cold_boot=! COLD_BOOT_SINGLE_CPU                

                _init_memory=1              

                _init_c_runtime=1           

                _exception_vectors=bl1_exceptions

            bl  bl1_early_platform_setup  //调用bl1_early_platform_setup函数完成底层初始化

            bl  bl1_plat_arch_setup        //调用bl1_plat_arch_setup完成平台初始化

            bl  bl1_main                     //调用bl1_main函数,初始化验证模块,加载下一阶段的

            image到RAM中

            b   el3_exit                     //调用el3_exit函数,跳转到下一个image(bl2)

        endfunc bl1_entrypoint

el3_entrypoint_common函数执行时带入的参数包括大小端标识、属于冷启动还是重启操作、是否是从核的启动、是否需要进行内存初始化、是否需要建立C语言运行环境(栈初始化)、异常向量表地址注册等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8653

    浏览量

    361844
  • 函数
    +关注

    关注

    3

    文章

    3903

    浏览量

    61310
  • Code
    +关注

    关注

    0

    文章

    65

    浏览量

    15276
收藏 人收藏

    评论

    相关推荐

    【OK210试用体验】S5PV210 IROM BL0启动

    ,在启动引导阶段有两个作用:一是IROM运行时使用的数据变量所在的区域,二是IROM,即BL0会将外存BL1引导到该区域中。因为IROM启动
    发表于 07-23 15:35

    【NanoPi M2试用体验】+SD卡启动BL1拷贝BL2到DDR2运行

    裸机程序SD卡启动BL1拷贝BL2到DDR2运行;代码的拷贝会用到一些指针函数,第一个参数为SD卡存放BL2的开始BLOCK,第二个参数
    发表于 06-11 17:03

    自制s5pv210启动uboot的BL1代码

    自制s5pv210启动uboot的BL1代码
    发表于 02-10 23:21

    关于iTop4412 iROM阶段启动流程简析

    BL1读取启动模式寄存器判断是从哪个设备上启动的,然后从这个设备读取BL2到SRAM里面,然后检查SRAM
    发表于 04-21 11:45

    关于TF-A(ATF)固件的基本知识详解

    ATF定义的启动模型ATF将镜像进行了划分,BL1 BL2属于启动引导镜像,
    发表于 06-15 16:57

    请问一下RK3399芯片启动需要像三星一样的bl1

      请问一下RK3399芯片启动需要像三星一样的bl1吗?求大神解答
    发表于 07-11 09:32

    S32g如何在ATF启用安全启动

    /cortexa53-wrs-linux/atf-s32g/2.5-r0/build/batman/release/bl2/bl2 .elf] 错误 1 原来的 BSP 版本似乎不支持
    发表于 04-03 07:12

    ls1046a如何查看BL1 LOG?

    BL1 嵌入 硬件(BootROM + PBLcommands),平台未初始化。它无法查看日志。
    发表于 04-10 07:36

    TF-A的不同启动阶段有哪些

    不同的启动阶段,按照链式结构依次启动ATF 代码启动流程如图所示: 当芯片复位以后首先运行 bl1 代码,
    的头像 发表于 09-11 16:54 483次阅读
    TF-A的不同<b class='flag-5'>启动</b>阶段有哪些

    ATF启动流程介绍

    一、BL32(TEE OS)的准备 ATF启动流程 ATF流程 ATF启动实现分为5个步骤:
    的头像 发表于 11-02 17:51 561次阅读
    <b class='flag-5'>ATF</b><b class='flag-5'>启动</b>流程介绍

    启动(Cold boot)流程及阶段划分

    restart--冷启动 reset--热启动 ATF启动实现分为5个步骤: • BL1 - AP Trusted ROM,一般为Boot
    的头像 发表于 11-07 15:17 775次阅读
    冷<b class='flag-5'>启动</b>(Cold boot)流程及阶段划分

    ATF启动过程介绍

    ATF启动过程根据ARMv8的运行模式(AArch32/AArch64)会有所不同,但基本一致。 在AArch32中是不会去加载bl31而是将EL3或者Monitor模式的运行代码保存在bl
    的头像 发表于 11-07 15:48 489次阅读
    <b class='flag-5'>ATF</b>的<b class='flag-5'>启动</b>过程介绍

    ATFbl2的启动

    bl2_entrypoint函数最终会触发安全监控模式调用(smc) ,通知bl1将CPU的控制权限转交给bl31,然后执行bl31。 该函数会执行 • 平台相关的初始化、 • 获取
    的头像 发表于 11-07 15:59 285次阅读
    <b class='flag-5'>ATF</b>中<b class='flag-5'>bl</b>2的<b class='flag-5'>启动</b>

    ATFbl32的启动方法

    ATFbl32的启动 bl31中的runtime_svc_init函数会初始化OP-TEE对应的服务,通过调用该服务项的初始化函数来完成OP-TEE的
    的头像 发表于 11-07 16:32 234次阅读
    <b class='flag-5'>ATF</b>中<b class='flag-5'>bl</b>32的<b class='flag-5'>启动</b>方法

    uboot的启动BL1BL2两个阶段介绍

    之前对这个uboot的源码了解有些许遗忘。最近做AVB校验,需要uboot到kernel的这个过程。这里再复习一下。 与大多数BootLoader一样,uboot的启动过程分为BL1BL2两个阶段
    的头像 发表于 12-04 17:53 866次阅读