1 OP-TEE OS的入口函數
- ? OP-TEE鏡像的入口函數是在編譯OP-TEE OS時通過鏈接文件來確定的,
- ? OP-TEE在編譯時是按照optee_os/core/arch/arm/kernel/kern.ld.S文件鏈接生成OP-TEE OS的鏡像文件,
- ? 在kern.ld.S文件中通過ENTRY宏來指定OP-TEE OS的入口函數,在OP-TEE中指定的入口函數是_start,
- ? 對于ARM32位系統,該函數定義在optee_os/core/arch/arm/generic_entry_a32.S文件中,
- ? 對于ARM64位系統而言,該函數定義在optee_os/core/arch/arm generic_entry_a64.S文件中。
2 OP-TEE的內核初始化過程
** _start會調用reset函數進入OP-TEE OS的啟動過程**。
由于對稱多處理(Symmetr ical Multi-Processing, SMP)架構的原因,在reset函數中會對主核和從核進行不同的啟動操作,分別調用reset_primary函數和reset_secondary函數來完成。
1. reset入口函數執行內容
reset函數是主核和從核啟動的第一個函數,該函數的執行流程如圖所示。
reset函數執行流程
進入到reset函數后, 系統會將_start的地址寫入VBAR寄存器作為中斷向量表的起始地址使用 ,
在啟動從核時, 從核知道會到該地址去獲取應該執行代碼來完成從核的啟動 。整個reset函數的內容和注釋如下:
LOCAL_FUNC reset , :
UNWIND( .fnstart)
UNWIND( .cantunwind)
bootargs_entry //獲取啟動帶入的參數,主要是啟動地址、device tree地址等
/* 使能對齊檢查并禁用數據和指令緩存 */
read_sctlr r0 //讀取sctlr中的數據,獲取當前CPU控制寄存器中的值
#if defined(CFG_SCTLR_ALIGNMENT_CHECK)
orr r0, r0, #SCTLR_A //設定對齊校驗
#else
bic r0, r0, #SCTLR_A
#endif
bic r0, r0, #SCTLR_C //關閉數據cache
bic r0, r0, #SCTLR_I //關閉指令cache
#if defined(CFG_HWSUPP_MEM_PERM_WXN) && defined(CFG_CORE_RWDATA_NOEXEC)
orr r0, r0, #(SCTLR_WXN | SCTLR_UWXN)
#endif
write_sctlr r0 //將r0寫入到sctlr中,用于關閉cache
isb
/* 早期ARM核安全監控模式態的特殊配置 */
bl plat_cpu_reset_early //執行CPU早期初始化
ldr r0, =_start //設定r0寄存器的值為_start函數的地址
write_vbar r0 //將_start函數的地址寫入VBAR寄存器中,用于啟動時使用
#if defined(CFG_WITH_ARM_TRUSTED_FW)
b reset_primary //支持ATF時跳轉到reset_primary中執行
#else
bl get_core_pos //判定當前CPU CORE的編號
cmp r0, #0 //將獲得的CPU編號與0對比
beq reset_primary //如果當前core是主核,則使用reset_primary進行初始化
b reset_secondary //如果當前core是從核,則使用reset_secondary進行初始化
#endif
UNWIND( .fnend)
END_FUNC reset
plat_cpu_reset_early函數將會設定SCR寄存器中的安全標志位 ,用于標記當前CPU是處于安全世界狀態中,并且將_start地址寫入VBAR寄存器,用于在需要啟動從核時系統能找到啟動代碼的入口地址,
reset_primary函數是主核啟動代碼的入口函數,該函數將會啟動主核的基本初始化、配置運行環境,然后再開始執行喚醒從核的操作。
- ? 對于從核的喚醒操作,如果系統支持PSCI,從核的喚醒是在REE OS啟動時 ,發送PSCI給EL3或Monitor模式的代碼來啟動從核;
- ? 如果不使用PSCI,而是選擇在OP-TEE中使能CFG_SYNC_BOOT_CPU,則OP-TEE會在主核啟動結束后喚醒從核。
-
寄存器
+關注
關注
31文章
5355瀏覽量
120503 -
函數
+關注
關注
3文章
4333瀏覽量
62686 -
架構
+關注
關注
1文章
515瀏覽量
25488 -
TEE
+關注
關注
0文章
29瀏覽量
10271
發布評論請先 登錄
相關推薦
評論