在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

ATF中bl2的啟動

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

bl2鏡像將為后續鏡像的加載執行相關的初始化操作,主要是內存、MMU、串口以及EL3軟件運行環境的設置,并且加載bl3x的鏡像到內存中。

通過查看bl2.ld.S文件可發現,bl2鏡像的入口函數是bl2_entrypoint。該函數定義在bl2/aarch64/bl2_entrypoint.S文件中。該階段的執行流程如圖所示。

圖片
bl2執行流程

bl2_entrypoint函數

bl2_entrypoint函數最終會觸發安全監控模式調用(smc) ,通知bl1將CPU的控制權限轉交給bl31,然后執行bl31。

該函數會執行

  • ? 平臺相關的初始化、
  • ? 獲取存放bl3x鏡像文件的結構體變量、
  • ? 解析出bl31的入口地址等。

該函數的主要內容和注釋如下:

func bl2_entrypoint

            mov x20, x1                      //獲取可用安全內存的起始地址

            adr x0, early_exceptions       //設定異常向量

            msr vbar_el1, x0                //將異常向量表地址寫入到VBAR寄存器
            isb

            msr daifclr, #DAIF_ABT_BIT    //使能SErrot中斷

            /* 使能指令cache、棧頂地址以及數據訪問權限對齊檢查 */

            mov x1, #(SCTLR_I_BIT | SCTLR_A_BIT | SCTLR_SA_BIT)

            mrs x0, sctlr_el1

            orr x0, x0, x1

            msr sctlr_el1, x0

            isb

            /* 獲取有效的RW內存以備bl2使用 */

              adr x0, __RW_START__                   //獲取RW內存的起始地址

              adr x1, __RW_END__                     //獲取RW內存的末端地址

              sub x1, x1, x0                          //計算出RW內存的大小

              bl  inv_dcache_range                   //禁止數據cache

              ldr x0, =__BSS_START__                 //獲取bl2中BSS段的起始地址

              ldr x1, =__BSS_SIZE__                  //獲取bl2中BSS段的大小

              bl  zeromem                              //清空BSS段中的內容

          #if USE_COHERENT_MEM

              ldr x0, =__COHERENT_RAM_START__

              ldr x1, =__COHERENT_RAM_UNALIGNED_SIZE__

              bl  zeromem

          #endif

              bl  plat_set_my_stack                  //初始化bl2運行的棧

          #if STACK_PROTECTOR_ENABLED

              bl  update_stack_protector_canary    //更新棧保護區域數據

          #endif

              mov x0, x20

              bl  bl2_early_platform_setup          //設置平臺相關

              bl  bl2_plat_arch_setup                //設置架構相關

              bl  bl2_main      //跳轉到BL2的主要函數執行,從該函數中跳轉到bl31以及bl32或者bl33

              no_ret plat_panic_handler

          endfunc bl2_entrypoint

在bl2_entrypoint函數中, 完成bl2運行棧的初始化,配置完運行環境后 ,會調用 bl2_main函數來完成bl2對bl3x鏡像的加載 ,而CPU控制權限的轉移則是通過觸發安全監控模式調用(smc)來實現。

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

    關注

    134

    文章

    9099

    瀏覽量

    367745
  • 內存
    +關注

    關注

    8

    文章

    3028

    瀏覽量

    74089
  • 鏡像
    +關注

    關注

    0

    文章

    165

    瀏覽量

    10751
收藏 人收藏

    評論

    相關推薦

    【NanoPi M2試用體驗】+SD卡啟動BL1拷貝BL2到DDR2運行

    裸機程序SD卡啟動BL1拷貝BL2到DDR2運行;代碼的拷貝會用到一些指針函數,第一個參數為SD卡存放
    發表于 06-11 17:03

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

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

    如何在BL2配置DDR init?

    :2022 年 10 月 25 日 18:55:21錯誤:BL2:加載圖像失?。?2)身份驗證失敗我認為我們必須更改 atf\plat\nxp\soc-ls1046\ls1046ardb\ddr_init.c
    發表于 03-24 08:50

    S32g如何在ATF啟用安全啟動?

    /cortexa53-wrs-linux/atf-s32g/2.5-r0/build/batman/release /bl2/bl2_main.o:在函數“bl2_main”
    發表于 04-03 07:12

    Yocto LS1028定制板用BL2,為了使DDR工作是否需要編輯ddr_init.c的任何其他函數/值或ATF的任何其他文件??

    的下一步是創建一個自定義 BL2,用于啟動基于 kirkstone 版本的 yocto 編譯。 為此,我修補了 atf repo 的 ddr_init.c 文件,這個“ddr_cfg_regs”結構
    發表于 06-01 09:03

    TF-A的不同啟動階段有哪些

    不同的啟動階段,按照鏈式結構依次啟動ATF 代碼啟動流程如圖所示: 當芯片復位以后首先運行 bl1 代碼,
    的頭像 發表于 09-11 16:54 ?933次閱讀
    TF-A的不同<b class='flag-5'>啟動</b>階段有哪些

    ATF啟動流程介紹

    一、BL32(TEE OS)的準備 ATF啟動流程 ATF流程 ATF啟動實現分為5個步驟:
    的頭像 發表于 11-02 17:51 ?1265次閱讀
    <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 ?2409次閱讀
    冷<b class='flag-5'>啟動</b>(Cold boot)流程及階段劃分

    ATF啟動過程介紹

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

    code層面 ATFbl1的啟動

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

    ATF如何用函數完成bl2啟動

    bl2_main函數 bl2_main函數完成了bl2階段的主要操作,包括 ? 對下一個階段鏡像文件的解析、 ? 獲取入口地址和鏡像文件大小等信息, ? 然后對鏡像文件進行驗簽和加載操作。 ? 將
    的頭像 發表于 11-07 16:04 ?712次閱讀

    ATFbl2bl31的跳轉介紹

    數之后,系統將跳轉到中斷處理函數(smc_handler64)繼續執行。該函數定義在bl1/aarch64/bl1_exception.S文件。 該函數最終通過判定安全監控模式調用的類型(在
    的頭像 發表于 11-07 16:09 ?976次閱讀

    ATFbl31的啟動

    bl2觸發安全監控模式調用后會跳轉到bl31執行,bl31最主要的作用是 建立EL3運行態的軟件配置 , 在該階段會完成各種類型的安全
    的頭像 發表于 11-07 16:13 ?1198次閱讀
    <b class='flag-5'>ATF</b><b class='flag-5'>中</b><b class='flag-5'>bl</b>31的<b class='flag-5'>啟動</b>

    ATFbl32的啟動方法

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

    uboot的啟動BL1和BL2兩個階段介紹

    之前對這個uboot的源碼了解有些許遺忘。最近做AVB校驗,需要uboot到kernel的這個過程。這里再復習一下。 與大多數BootLoader一樣,uboot的啟動過程分為BL1和BL2兩個階段
    的頭像 發表于 12-04 17:53 ?3091次閱讀
    主站蜘蛛池模板: 欧美一区二区三区免费| 夜夜夜久久久| 欧美成人免费| 欧美福利视频网| 免费成人黄色网址| 激情五月综合综合久久69| 国模网站| 在线看逼| 一级毛片a| 亚洲综合一| 俄罗斯一级特黄黄大片| 午夜免费视频| 精品伊人久久大线蕉色首页| 两性色午夜视频自由成熟的性| 特黄一级真人毛片| 日本三级香港三级人妇99| 免费看a| 国产三级在线观看| 夜操| 狠狠干福利视频| 日日操夜夜爱| 午夜免费毛片| a天堂在线观看| 天天干天天干天天干| 国产精品美女一级在线观看| 成年1314在线观看| 日韩加勒比在线| 国内黄色录像| 久久精品伊人波多野结| 天天操夜夜操| 寡妇影院首页亚洲图片| 久久久香蕉视频| 日本黄页视频| 天堂网在线www资源在线| 午夜久久久久久| 仙踪林欧美另类视频| 久久天天综合| 嘿嘿午夜| 亚洲区在线播放| 视频一区二区不卡| 亚洲骚片|