0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

code層面 ATF中bl1的啟動(dòng)

麥辣雞腿堡 ? 來源:TrustZone ? 作者:TrustZone ? 2023-11-07 15:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

系統(tǒng)上電之后首先會(huì)運(yùn)行ChipRom,之后會(huì)跳轉(zhuǎn)到ATF的bl1中繼續(xù)執(zhí)行。bl1主要初始化CPU、設(shè)定異常向量、將bl2的鏡像加載到安全RAM中,然后跳轉(zhuǎn)到bl2中開始運(yùn)行。
bl1的主要代碼存放在bl1目錄中,bl1的鏈接文件是bl1/bl1.ld.s文件,該文件指定bl1的入口函數(shù)是bl1_entrypoint。

AArch32的該函數(shù)定義在bl1/aarch32/bl1_entrypoint.S文件中,AArch64的該函數(shù)定義在bl1/aarch64/bl1_entrypoint. S文件中。bl1的執(zhí)行流程如圖所示。

圖片
bl1執(zhí)行流程

bl1_entrypoint函數(shù)說明

bl1_entrypoint函數(shù)主要完成ARMv8架構(gòu)中EL3執(zhí)行環(huán)境的基礎(chǔ)初始化、設(shè)定異常向量表、加載bl2的鏡像文件到內(nèi)存中并進(jìn)行跳轉(zhuǎn)到bl2繼續(xù)執(zhí)行。該函數(shù)的內(nèi)容如下:

func bl1_entrypoint

        /*  EL3級(jí)別運(yùn)行環(huán)境的初始化,該函數(shù)定義在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  //調(diào)用bl1_early_platform_setup函數(shù)完成底層初始化

            bl  bl1_plat_arch_setup        //調(diào)用bl1_plat_arch_setup完成平臺(tái)初始化

            bl  bl1_main                     //調(diào)用bl1_main函數(shù),初始化驗(yàn)證模塊,加載下一階段的

            image到RAM中

            b   el3_exit                     //調(diào)用el3_exit函數(shù),跳轉(zhuǎn)到下一個(gè)image(bl2)

        endfunc bl1_entrypoint

el3_entrypoint_common函數(shù)執(zhí)行時(shí)帶入的參數(shù)包括大小端標(biāo)識(shí)、屬于冷啟動(dòng)還是重啟操作、是否是從核的啟動(dòng)、是否需要進(jìn)行內(nèi)存初始化、是否需要建立C語言運(yùn)行環(huán)境(棧初始化)、異常向量表地址注冊(cè)等。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9346

    瀏覽量

    376616
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4379

    瀏覽量

    64654
  • Code
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    15782
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【NanoPi M2試用體驗(yàn)】+SD卡啟動(dòng)BL1拷貝BL2到DDR2運(yùn)行

    裸機(jī)程序SD卡啟動(dòng)BL1拷貝BL2到DDR2運(yùn)行;代碼的拷貝會(huì)用到一些指針函數(shù),第一個(gè)參數(shù)為SD卡存放BL2的開始BLOCK,第二個(gè)參數(shù)
    發(fā)表于 06-11 17:03

    自制s5pv210啟動(dòng)uboot的BL1代碼

    自制s5pv210啟動(dòng)uboot的BL1代碼
    發(fā)表于 02-10 23:21

    關(guān)于iTop4412 iROM階段啟動(dòng)流程簡(jiǎn)析

    BL1讀取啟動(dòng)模式寄存器判斷是從哪個(gè)設(shè)備上啟動(dòng)的,然后從這個(gè)設(shè)備讀取BL2到SRAM里面,然后檢查SRAM
    發(fā)表于 04-21 11:45

    關(guān)于TF-A(ATF)固件的基本知識(shí)詳解

    ATF定義的啟動(dòng)模型ATF將鏡像進(jìn)行了劃分,BL1 BL2屬于啟動(dòng)引導(dǎo)鏡像,
    發(fā)表于 06-15 16:57

    請(qǐng)問一下RK3399芯片啟動(dòng)需要像三星一樣的bl1

      請(qǐng)問一下RK3399芯片啟動(dòng)需要像三星一樣的bl1嗎?求大神解答
    發(fā)表于 07-11 09:32

    S32g如何在ATF啟用安全啟動(dòng)

    /cortexa53-wrs-linux/atf-s32g/2.5-r0/build/batman/release/bl2/bl2 .elf] 錯(cuò)誤 1 原來的 BSP 版本似乎不支持
    發(fā)表于 04-03 07:12

    ls1046a如何查看BL1 LOG?

    BL1 嵌入 硬件(BootROM + PBLcommands),平臺(tái)未初始化。它無法查看日志。
    發(fā)表于 04-10 07:36

    TF-A的不同啟動(dòng)階段有哪些

    不同的啟動(dòng)階段,按照鏈?zhǔn)浇Y(jié)構(gòu)依次啟動(dòng),ATF 代碼啟動(dòng)流程如圖所示: 當(dāng)芯片復(fù)位以后首先運(yùn)行 bl1 代碼,
    的頭像 發(fā)表于 09-11 16:54 ?1383次閱讀
    TF-A的不同<b class='flag-5'>啟動(dòng)</b>階段有哪些

    ATF啟動(dòng)流程介紹

    一、BL32(TEE OS)的準(zhǔn)備 ATF啟動(dòng)流程 ATF流程 ATF啟動(dòng)實(shí)現(xiàn)分為5個(gè)步驟:
    的頭像 發(fā)表于 11-02 17:51 ?1700次閱讀
    <b class='flag-5'>ATF</b><b class='flag-5'>啟動(dòng)</b>流程介紹

    啟動(dòng)(Cold boot)流程及階段劃分

    restart--冷啟動(dòng) reset--熱啟動(dòng) ATF啟動(dòng)實(shí)現(xiàn)分為5個(gè)步驟: ? BL1 - AP Trusted ROM,一般為Boot
    的頭像 發(fā)表于 11-07 15:17 ?3632次閱讀
    冷<b class='flag-5'>啟動(dòng)</b>(Cold boot)流程及階段劃分

    ATF啟動(dòng)過程介紹

    ATF啟動(dòng)過程根據(jù)ARMv8的運(yùn)行模式(AArch32/AArch64)會(huì)有所不同,但基本一致。 在AArch32是不會(huì)去加載bl31而是將EL3或者M(jìn)onitor模式的運(yùn)行代碼保
    的頭像 發(fā)表于 11-07 15:48 ?1784次閱讀
    <b class='flag-5'>ATF</b>的<b class='flag-5'>啟動(dòng)</b>過程介紹

    ATFbl2的啟動(dòng)

    bl2_entrypoint函數(shù)最終會(huì)觸發(fā)安全監(jiān)控模式調(diào)用(smc) ,通知bl1將CPU的控制權(quán)限轉(zhuǎn)交給bl31,然后執(zhí)行bl31。 該函數(shù)會(huì)執(zhí)行 ? 平臺(tái)相關(guān)的初始化、 ? 獲取
    的頭像 發(fā)表于 11-07 15:59 ?1236次閱讀
    <b class='flag-5'>ATF</b><b class='flag-5'>中</b><b class='flag-5'>bl</b>2的<b class='flag-5'>啟動(dòng)</b>

    ATFbl2到bl31的跳轉(zhuǎn)介紹

    數(shù)之后,系統(tǒng)將跳轉(zhuǎn)到中斷處理函數(shù)(smc_handler64)繼續(xù)執(zhí)行。該函數(shù)定義在bl1/aarch64/bl1_exception.S文件。 該函數(shù)最終通過判定安全監(jiān)控模式調(diào)用的類型(在
    的頭像 發(fā)表于 11-07 16:09 ?1409次閱讀

    ATFbl32的啟動(dòng)方法

    ATFbl32的啟動(dòng) bl31的runtime_svc_init函數(shù)會(huì)初始化OP-TEE對(duì)應(yīng)
    的頭像 發(fā)表于 11-07 16:32 ?1061次閱讀
    <b class='flag-5'>ATF</b><b class='flag-5'>中</b><b class='flag-5'>bl</b>32的<b class='flag-5'>啟動(dòng)</b>方法

    uboot的啟動(dòng)BL1BL2兩個(gè)階段介紹

    之前對(duì)這個(gè)uboot的源碼了解有些許遺忘。最近做AVB校驗(yàn),需要uboot到kernel的這個(gè)過程。這里再復(fù)習(xí)一下。 與大多數(shù)BootLoader一樣,uboot的啟動(dòng)過程分為BL1BL2兩個(gè)階段
    的頭像 發(fā)表于 12-04 17:53 ?3925次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品