色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ATF中bl31的啟動

麥辣雞腿堡 ? 來源:TrustZone ? 作者:TrustZone ? 2023-11-07 16:13 ? 次閱讀

在bl2中觸發安全監控模式調用后會跳轉到bl31中執行,bl31最主要的作用是 建立EL3運行態的軟件配置 , 在該階段會完成各種類型的安全監控模式調用ID的注冊和對應的ARM核狀態的切換 ,bl31運行在EL3。bl31的執行流程如圖所示。

圖片
在這里插入圖片描述

bl31_entrypoint函數

通過bl31.ld.S文件可知,bl31的入口函數是bl31_entrypoint。該函數的內容如下:

func bl31_entrypoint

        /*

        el3初始化操作,該el3_entrypoint_common函數在上面已經介紹過,其中runtime_exceptions為

        el3 runtime software的異常向量表,內容定義在bl31/aarch64/runtime_exceptions.S文件中

        */

        #if ! RESET_TO_BL31

            mov x20, x0

            mov x21, x1

            el3_entrypoint_common              

                _set_endian=0                   

                _warm_boot_mailbox=0          

                _secondary_cold_boot=0        

                _init_memory=0                  

                _init_c_runtime=1              

                _exception_vectors=runtime_exceptions

            mov x0, x20

            mov x1, x21

        #else

            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=runtime_exceptions

              mov x0, 0

              mov x1, 0

          #endif /* RESET_TO_BL31 */

              bl  bl31_early_platform_setup    //平臺架構相關的初始化設置

              bl  bl31_plat_arch_setup          //執行AArch初始化

              bl  bl31_main                       //跳轉到bl31_main函數,執行該階段需要的主要操作

              adr x0, __DATA_START__             //獲取REE鏡像的DATA段的起始地址

              adr x1, __DATA_END__               //獲取REE鏡像的DATA段的末端地址

              sub x1, x1, x0                      //計算鏡像文件的大小

              bl  clean_dcache_range             //清空數據cache

              adr x0, __BSS_START__              //獲取BSS段的起始地址

              adr x1, __BSS_END__                //獲取BSS端的末端地址

              sub x1, x1, x0                      //計算BSS段的長度

              bl  clean_dcache_range             //清空數據cache

              //執行完成將跳轉到bl33中執行,即執行BootLoader

              b    el3_exit

          endfunc bl31_entrypoint

bl31_main函數

該函數主要完成必要的初始化操作, 注冊EL3中各種安全監控模式調用的處理函數 ,以便在啟動完成后響應在REE側和TEE側產生的安全監控模式調用。該函數的內容如下:

void bl31_main(void)

        {

            bl31_platform_setup();         //初始化相關驅動、時鐘

            bl31_lib_init();                //用于執行bl31軟件中相關全局變量的初始化

            /*初始化el3中的service,通過在編譯時指定特定的section來確定哪些service會被作為el3

            service*/

            runtime_svc_init();

            /*  如果注冊了TEE  OS支持,在調用完成run_service_init之后會使用TEE  OS的入口函數初

            始化bl32_init變量,然后執行對應的init函數,以OP-TEE為例,bl32_init將會被初始化成

            opteed_init,到此將會執行opteed_init函數來進入OP-TEE  OS的啟動,當OP-TEE  OS啟動完

            后,將會產生一個TEESMC_OPTEED_RETURN_ENTRY_DONEsmc異常,通知bl31已經完成了OP-

            TEE的啟動*/

            if (bl32_init) {

                INFO("BL31: Initializing BL32n");

                (*bl32_init)();

            }

            //準備跳轉到bl33,在執行runtime_service時會運行一個spd service,該service的初始化

            函數將會去執行bl32的鏡像來完成TEE OS初始化

            bl31_prepare_next_image_entry();

            console_flush();

            bl31_plat_runtime_setup();

        }

runtime_svc_init函數會將各種安全監控模式調用的處理函數的指針注冊到EL3中,

并通過service->init函數來進行初始化,將TEE OS鏡像的入口函數賦值給bl32_init,通過執行bl32_init指向的函數進入到TEE OS的啟動過程。

待TEE OS啟動完成之后就會去查找bl33的鏡像文件,即REE側的鏡像文件,開始進入REE側鏡像的啟動。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 監控
    +關注

    關注

    6

    文章

    2204

    瀏覽量

    55169
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62573
收藏 人收藏

    評論

    相關推薦

    可編程CPU重置地址,單CPU冷啟動配置

    如果將BL31用作TF-A入口點而不是BL1,則上圖仍然相關,因為在這種情況下,所有這些操作都將發生在BL31。有關詳細信息,請參閱第6節“使用B
    發表于 12-02 11:00 ?1099次閱讀
    可編程CPU重置地址,單CPU冷<b class='flag-5'>啟動</b>配置

    關于TF-A(ATF)固件的基本知識詳解

    ATF定義的啟動模型ATF將鏡像進行了劃分,BL1 BL2屬于啟動引導鏡像,
    發表于 06-15 16:57

    如何讓BL31的調試信息輸出到S32R45的uart?

    我用“DEBUG=1”構建 ATF 映像,uart 可以顯示 BL2 的調試信息,但沒有顯示 BL31 的調試信息。 為什么?BL2到BL31
    發表于 04-11 08:20

    BL31未在Kirkstone上加載的原因?

    imx8mm_evk.h 和 imx8mm_evk.c 的設置時,SPL 打印 do uart3,但它應該顯示:注意:BL31:v2.6(發布
    發表于 04-19 11:00

    ATF啟動流程介紹

    一、BL32(TEE OS)的準備 ATF啟動流程 ATF流程 ATF啟動實現分為5個步驟:
    的頭像 發表于 11-02 17:51 ?1240次閱讀
    <b class='flag-5'>ATF</b><b class='flag-5'>啟動</b>流程介紹

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

    輸出BL1、BL2、BL31,提供BL32和BL33接口。 (我想提供的接口就是BL32和
    的頭像 發表于 11-07 15:17 ?2309次閱讀
    冷<b class='flag-5'>啟動</b>(Cold boot)流程及階段劃分

    ATF啟動過程介紹

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

    code層面 ATFbl1的啟動

    系統上電之后首先會運行ChipRom,之后會跳轉到ATFbl1繼續執行。bl1主要初始化CPU、設定異常向量、將bl2的鏡像加載到安全R
    的頭像 發表于 11-07 15:53 ?1052次閱讀
    code層面 <b class='flag-5'>ATF</b><b class='flag-5'>中</b><b class='flag-5'>bl</b>1的<b class='flag-5'>啟動</b>

    ATFbl2的啟動

    bl2_entrypoint函數最終會觸發安全監控模式調用(smc) ,通知bl1將CPU的控制權限轉交給bl31,然后執行bl31。 該函數會執行 ? 平臺相關的初始化、 ? 獲取
    的頭像 發表于 11-07 15:59 ?801次閱讀
    <b class='flag-5'>ATF</b><b class='flag-5'>中</b><b class='flag-5'>bl</b>2的<b class='flag-5'>啟動</b>

    ATF如何用函數完成bl2的啟動

    bl31加載到內存后會觸發安全監控模式調用(smc)將CPU權限轉交給bl31。 該函數的主要內容和相關注釋如下: ** void bl2_main ( void
    的頭像 發表于 11-07 16:04 ?693次閱讀

    ATFbl2到bl31的跳轉介紹

    bl2到bl31的跳轉 在bl2_main函數中最終會調用smc(BL1_SMC_RUN_IMAGE,(unsigned long)next_bl
    的頭像 發表于 11-07 16:09 ?948次閱讀

    ATFbl31函數介紹與使用

    runtime_svc_init函數 該函數主要用來建立安全監控模式調用處理函數的索引表,并執行EL3提供的服務項的初始化操作,獲取TEE OS的入口地址并賦值給bl32_init變量,以備啟動
    的頭像 發表于 11-07 16:23 ?641次閱讀

    ATFbl32的啟動方法

    ATFbl32的啟動 bl31的runtime_svc_init函數會初始化OP-TEE對應
    的頭像 發表于 11-07 16:32 ?628次閱讀
    <b class='flag-5'>ATF</b><b class='flag-5'>中</b><b class='flag-5'>bl</b>32的<b class='flag-5'>啟動</b>方法

    Bl31斷處理流程概述

    aarch64架構,在每個異常等級下都包含了四張異常等級表。 bl31的異常向量表定義在runtime_exceptions.S,其與下圖的定義一致
    的頭像 發表于 11-07 17:43 ?623次閱讀
    <b class='flag-5'>Bl31</b><b class='flag-5'>中</b>斷處理流程概述

    bl31的psci架構介紹

    bl31的psci架構 bl31為內核提供了一系列運行時服務,psci作為其標準運行時服務的一部分,通過宏DECLARE_RT_SVC注冊到系統。其相應的定義如下: DECLARE
    的頭像 發表于 12-05 17:33 ?1062次閱讀
    <b class='flag-5'>bl31</b><b class='flag-5'>中</b>的psci架構介紹
    主站蜘蛛池模板: 第一福利在线永久视频| 伊人久久精品AV无码一区| 午夜4k最新福利| 無码一区中文字幕少妇熟女网站 | 国产一区内射最近更新| 国产亚洲精品视频在线网| 久99久热只有精品国产99| 妈妈的朋友5在线观看免费完整版中文| 美女用手扒开粉嫩的屁股| 人妻激情综合久久久久蜜桃| 婷婷五月久久精品国产亚洲| 亚洲色偷偷偷网站色偷一区人人藻 | 红豆视频免费资源观看| 久久久久久久久久综合情日本| 木凡的天空在线收听| 日久精品不卡一区二区| 亚洲国产中文字幕在线视频| 征服丝袜旗袍人妻| 被免费网站在线视频| 国产在线不卡| 免费国产福利| 午夜伦午夜伦锂电影| 在线观看成人3d动漫入口| 成人在线观看免费视频| 果冻传媒MV免费播放在线观看| 蜜桃传媒一区二区亚洲AV| 全彩acg无翼乌火影忍者| 亚洲AV无码一区二区三区乱子伦| 2019香蕉在线观看直播视频| 第一精品福利导福航| 久久国产36精品色熟妇| 人妻系列合集| 一个人的免费高清影院| 不用播放器的黄| 久草在线新是免费视频| 日本久久久免费高清| 野花视频在线观看免费最新动漫| 哺乳溢出羽月希中文字幕| 九九热最新视频| 肉动漫3D卡通无修在线播放| 一个人免费视频在线观看高清版|