快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈
- 付费专栏-付费课程 【购买须知】:
- 【精选】TEE从入门到精通-[目录] 👈👈👈
说明:
在默认情况下,本文讲述的都是ARMV8-aarch64架构,optee3.16,TF-A 2.6,linux kernel 5.14
引流关键词: optee、ATF、TF-A、Trustzone、optee、optee3.16、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存管理、页表…
文章目录
1、进入和退出TEE的设计模型
透过事务看本质,本文以直接写答案的方式总结其模型,就不再贴具体的代码了。

进入TEE的方式有两种:
- (1)在启动阶段,设置optee的启动地址(这是物理地址)到ELR_EL3后,然后ERET到TEE
-(2)在runtime阶段(启动多核时也属于runtime阶段),将thread_vector_table的offset(这是虚拟地址)设置到ELR_EL3寄存器,然后ERET到TEE
退出TEE的方式有两种:
- (1)optee调用smc主动切换出optee
在optee干完活后(boot阶段初始化完成),设置func_id=TEESMC_OPTEED_RETURN_ENTRY_DONE后,调用smc切回到ATF;
在optee干完活后(runtime阶段thread结束),设置func_id=TEESMC_OPTEED_RETURN_CALL_DONE后,调用smc切回到ATF;
在optee活没干完的情况下,(产生想给外系统处理的中断)触发FIQ 或 该thread需要调用RPC去REE拿相关资源时,设置func_id=xxxx,然后调用

本文介绍了ARMV8-aarch64架构下Optee 3.16的进入和退出模型,包括启动阶段和运行时阶段的进入方式,如vector_fast_smc_entry和vector_std_smc_entry等。同时,详细阐述了两种退出方法:主动通过SMC切换和异常/中断触发的退出,并列举了不同场景下的退出函数标识。
订阅专栏 解锁全文
287

被折叠的 条评论
为什么被折叠?



