上一篇学习了MMU,这一篇来看看安全内存的最后一个部分共享内存和cache。前面我们在学习动态加载的部分,知道了REE和OPTEE传输TA的时候是使用共享内存。这里就来具体看看共享内存。
1、系统的共享内存
共享内存分为REE侧与OP-TEE侧之间的共享内存和OP-TEE内核空间与用户空间之间的共享内存。
前者用于OP-TEE侧驱动与OP-TEE之间的数据交互,后者用于OP-TEE内核空间与OP-TEE用户空间之间的数据交互。
(两种共享内存)
1.1 共享内存的配置
上述两个共享内存区域具有不同的安全设定。
REE侧与OP-TEE之间的共享内存属于非安全内存区域,OP-TEE内核空间与用户空间之间的共享内存属于安全内存区域。
OP-TEE在启动的过程通过调用default_mobj_init函数划分出上述两个共享内存区域并配置在OP-TEE中操作上述两个共享内存区域的操作接口。(这里看着像共享内存是一个大类,然后划分成两种。)
default_mobj_init函数使用driver_init_late宏进行封装,在OP-TEE启动过程中执行Initcall段的内容时就会调用driver_init_late函数进行上述两个共享内存区域的划分和初始