當前位置:
首頁 >
[ATF]-ATF启动--BL31跳转到optee和uboot
發布時間:2025/3/21
43
豆豆
生活随笔
收集整理的這篇文章主要介紹了
[ATF]-ATF启动--BL31跳转到optee和uboot
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ATF
- 1、背景
- 2、ATF編譯
- 3、ATF的啟動
- 4、獲取optee/uboot的跳轉地址
- 4、總結一下ATF啟動流程
★★★ 鏈接 : 個人博客導讀首頁—點擊此處 ★★★
1、背景
在vendor某些廠商的設計中,ATF并不是BOOTROM加載后的第一個啟動鏡像,可能是這樣的:
BOOTROM—>PL—>ATF—>optee—>uboot…, 在PL階段就已經將ATF/optee/uboot鏡像的load到內存了.
2、ATF編譯
由上述背景的原因,我們的ATF就不需要走BL1/BL2階段load optee/uboot鏡像到內存了,直接走BL3即可.
所以bl1和bl2目錄也無需編譯.
我們的編譯方法是在make的時候傳入RESET_TO_BL31=1參數:
make -C $DIRPATH RESET_TO_BL31=1 PLAT=xxxx clean make -C $DIRPATH RESET_TO_BL31=1 PLAT=xxx xxxx_VDK=0 xxxxxx=0 xxxxxx=0 HIGHADDR_DEVICE=1 all3、ATF的啟動
從bl31.ld.S文件可知,ATF是從bl31_entrypoint開始啟動的
func bl31_entrypointbl bl31_early_platform_setupbl bl31_plat_arch_setupbl bl31_main在bl31_main()函數中:
- runtime_svc_init()跳轉optee之前的準備,然后再調用bl32_init跳轉到optee,optee
os初始化完成后再從此處回來。 - bl31_prepare_next_image_entry()跳轉uboot之前的準備,返回到bl31_entrypoint后調用b
el3_exit跳轉到uboot, PC就不會再回此處了。下次PC再回來就是在REE進行了smc調用,那時是直接跳轉到ATF的異常向量表.
4、獲取optee/uboot的跳轉地址
bl31_prepare_next_image_entry()可以獲取optee/uboot的跳轉地址,該地址最終來自于platform_def.h頭文件中寫死的地址
- #define BL32_BASE (PLAT_S_DRAM_BASE + BL31_SIZE + PLAT_TRUSTED_MAILBOX_SIZE)
- #define PLAT_NS_IMAGE_BASE 0x80000000
#define PLAT_NS_IMAGE_OFFSET (PLAT_NS_IMAGE_BASE + 0x9000000)
4、總結一下ATF啟動流程
總結
以上是生活随笔為你收集整理的[ATF]-ATF启动--BL31跳转到optee和uboot的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux kernel内存管理学习篇
- 下一篇: [optee]-optee的加解密接口的