ARM32的OP-TEE與ARM64的OP-TEE啟動過程大致相同。ARM64的OP-TEE的_start函數(shù)定義在generic_entry_a64.S文件中,而且該函數(shù)不像ARM32位系統(tǒng)一樣會進入reset中去執(zhí)行OP-TEE啟動,而是直接在_start函數(shù)中就完成整個啟動過程,
在進行初始化操作之前會注冊一個異常向量表,該異常向量表會在喚醒從核階段被使用,當主核通知喚醒從核時,從核會查找該異常向量表,然后命中對應的處理函數(shù)并執(zhí)行從核的啟動操作。
ARM64的OP-TEE的啟動過程與ARM32的OP-TEE的啟動過程幾乎一樣。ARM64位系統(tǒng)的_start函數(shù)內(nèi)容說明如下:
FUNC _start , :
mov x19, x0 //保存paged_table的地址到x19中
mov x20, x2 //保存device tree的地址到x20中
adr x0, reset_vect_table //獲取異常向量表的地址
msr vbar_el1, x0 //將異常向量表的地址寫入VBAR寄存器中
isb
//設置系統(tǒng)控制寄存器,禁止cache等操作
mrs x0, sctlr_el1
mov x1, #(SCTLR_I | SCTLR_A | SCTLR_SA)
orr x0, x0, x1
msr sctlr_el1, x0
isb
//復制OP-TEE鏡像中的init部分到內(nèi)存中
copy_init:
ldp x3, x4, [x1], #16
stp x3, x4, [x0], #16
cmp x0, x2
b.lt copy_init
msr daifclr, #DAIFBIT_ABT //使能異常處理
adr x0, __text_start //將__text_start的地址保存到x0中
adrp x1, __end //將_end的地址保存到x1中
add x1, x1, :lo12:__end
sub x1, x1, x0
bl inv_dcache_range //關閉數(shù)據(jù)cache
bl console_init //初始化console
bl core_init_mmu_map //初始化MMU的頁表
bl core_init_mmu_regs //將MMU的頁表信息寫入TTBRx寄存器中
bl cpu_mmu_enable //使能MMU
bl cpu_mmu_enable_icache //使能MMU的指令cache
bl cpu_mmu_enable_dcache //使能MMU的數(shù)據(jù)cache
mov x0, x19 //將paged_table的地址保存到x0中
mov x1, #-1
mov x2, x20 //將device tree的地址保存到x2中
//使用device tree和paged_table作為參數(shù)開始OP-TEE的啟動
bl generic_boot_init_primary
mov x19, x0
adr x0, __text_start
add x1, x1, :lo12:__end
sub x1, x1, x0
bl flush_dcache_range //刷新數(shù)據(jù)cache
bl thread_clr_boot_thread //清空系統(tǒng)線程的狀態(tài)
mov x1, x19
//將TEESMC_OPTEED_RETURN_ENTRY_DONE保存到x0
mov x0, #TEESMC_OPTEED_RETURN_ENTRY_DONE
smc #0 //調(diào)用SMC切換到normal world狀態(tài)
b . /* SMC不應該有返回操作 */
END_FUNC _start
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
ARM
+關注
關注
135文章
9589瀏覽量
393801 -
函數(shù)
+關注
關注
3文章
4422瀏覽量
67873 -
TEE
+關注
關注
0文章
30瀏覽量
10709
發(fā)布評論請先 登錄
相關推薦
熱點推薦
ARM32位設計
ARM32位設計,兼容16位指令集,現(xiàn)在被軟銀收購ARM1-11 從功能機到智能手機新款命名 :cortex V7-A 手機智能設備-R 實時操作系統(tǒng)-M嵌入式開發(fā)stm32 性能從
發(fā)表于 08-24 06:51
請問HSE op-tee是什么關系?
我有個問題。S32G同時支持HSE和op-tee。S32G的安全加解密和證書管理是通過HSE完成的嗎?op-tee 和 HSE 只是其中之一嗎?有沒有相關的設計文檔?謝謝
發(fā)表于 04-06 06:26
ARM64與ARM32 的Linux程序區(qū)別在哪里
arm64或ARM64。我在示例中使用了AArch64寄存器,但我所描述的許多問題也發(fā)生在ARMv8-A 32位執(zhí)行狀態(tài)。
Core 3399KJ Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《Core 3399KJ Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-14 10:08
?3次下載
Core 3399J Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《Core 3399J Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-14 09:24
?0次下載
Core 3399 JD4 V2文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《Core 3399 JD4 V2文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-16 09:44
?10次下載
ROC RK3399 PC Pro文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《ROC RK3399 PC Pro文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-20 10:59
?5次下載
AIO 3399ProC Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《AIO 3399ProC Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-21 09:52
?11次下載
OP-TEE中安全驅(qū)動的框架
OP-TEE中的安全驅(qū)動是OP-TEE操作安全設備的載體。 TA通過調(diào)用某個安全驅(qū)動的接口就可實現(xiàn)對特定安全設備的操作。安全驅(qū)動在OP-TEE中的軟件框架如圖22-2所示。 (其實這里,你要搞清楚
OP-TEE的內(nèi)核初始化函數(shù)調(diào)用
generic_boot_init_primary函數(shù)內(nèi)容 generic_boot_init_primary函數(shù)是OP-TEE建立系統(tǒng)運行環(huán)境的入口函數(shù),該函數(shù)會進行建立線程運行空間、初始化
OP-TEE服務項的啟動
OP-TEE服務項的啟動分為: service_init以及service_init_late ,需要被啟動的服務項通過使用這兩個宏,在編譯時,相關服務的內(nèi)容將會被保存到initcall1
OP-TEE的安全存儲的簡介
OP-TEE的安全存儲的簡介 OP-TEE的安全存儲功能是OP-TEE為用戶提供的安全存儲機制。用戶可使用安全存儲功能來保存敏感數(shù)據(jù)、密鑰等信息。 使用OP-TEE安全存儲功能保存數(shù)據(jù)
OP-TEE安全存儲安全文件的格式
安全文件、dirf.db文件的數(shù)據(jù)格式和操作過程 OP-TEE的安全存儲功能可滿足用戶保存敏感數(shù)據(jù)的需求,需要被保存的數(shù)據(jù)會被加 密保存到文件系統(tǒng)或RPMB分區(qū)中 。 當選擇將數(shù)據(jù)保存到文件系統(tǒng)中
深入剖析ARM64內(nèi)核關鍵文件:kernel-6.1/arch/arm64/kernel/head.S
在 ARM64 架構(gòu)的 Linux 內(nèi)核開發(fā)中,arch/arm64/kernel/head.S是一個繞不開的關鍵文件—— 它是內(nèi)核啟動早期的 “橋梁”,承接 Bootloader 與內(nèi)核初始化核心
ARM64位與ARM32位OP-TEE啟動過程的差異
評論