OP-TEE设计结构(二)

本文深入探讨了OP-TEE系统中MMU、映射表、内存分配及不同栈的应用。详细阐述了如何利用大小映射表管理内核模式与用户模式的地址空间,以及在中断或远程过程调用时如何切换栈以确保安全世界在不同CPU上正确恢复执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5. MMU

映射表
OP-TEE使用多个L1层次下的映射表,一个大的(4G)的和两个或两个以上的小的映射表(32MB)。大映射表处理内核模式映射,匹配在小映射表所包含之外的所有的地址,小映射表是按每一个线程分配的,并覆盖了一个大的虚拟内存空间的映射。
存在于大小映射表之间的存储空间由TTBRC进行初始化,TTBR1总是指向大的映射表。TTBR0在用户映射活跃时指向小的映射表,若用户映射当前为未活跃状态时指向大的映射表。
映射表具有一定的对齐约束,对齐(物理地址)必须与映射表的大小相同。为避免由于对齐约束而产生内存碎片,映射表采取静态分配。
每个线程拥有它自己的L1小翻译表,每个TA上下文有一个紧凑表示其L1映射表,这个紧凑表示用于当TA上下文激活时,初始化线程特定的L1映射表。
translation table

映射表和切换到普通世界
当通过一个IRQ或RPC指令切换到普通世界时将会有可能,安全的世界会在不同的CPU恢复执行,这意味这个新的CPU需要由当前的可信应用(TA)的上下文进行初始化。这个问题通过当执行恢复命令时总是向CPU设置TA上下文来解决。这里有一个改进的空间就是总是在相同的CPU下恢复安全世界。

6.栈

不同的栈在不同的阶段被使用,这些栈如下:
stack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值