baron · 3 天前

optee的共享内存的介绍

共享内存
1、共享内存的介绍
2、共享内存的使用
1、共享内存的介绍

share memory是一块内存区域, 用于non-secure world和secure world的通信.

optee支持两种share memory: 连续的buffer,非连续的buffer

optee是按照buffer来管理共享内存的,而不是按照pool来管理的. 每一个buf需要配置如下属性:

buffer的起始地址和size

该buffer的cache属性

如果是被map到非连续的buf,则列出它所有的块(chunk)

配置成连续的share buffer

CFG_CORE_RESERVED_SHM=y

CFG_SHMEM_START and CFG_SHMEM_SIZE 定义起始地址和size

该memory的type是MEM_AREA_NSEC_SHM

在non-secure world需要调用OPTEE_SMC_GET_SHM_CONFIG来获取:

share memory的物理地址和size

share memory的cached属性

非连续的share memory(动态注册的)

CFG_CORE_DYN_SHM=y

在使用share memory之前,REE需要调用OPTEE_MSG_CMD_REGISTER_SHM注册share memroy, 在optee中share memroy最小的chunk单位是4k bytes;

共享内存是在linux driver中分配的,linux kernel需支持CONFIG_GENERIC_ALLOCATION 来分配/释放内存物理块. optee的linux driver依赖于linux内核dma-buf支持(CONFIG_DMA_SHARED_BUFFER)来跟踪共享内存缓冲区引用

2、共享内存的使用

TEEC_AllocateSharedMemory(…) 在linux中分配内存

TEEC_RegisterSharedMemory(…) 到optee中注册该内存

添加威♥:sami01_2023,回复ARM中文,领取ARM中文手册

推荐阅读
关注数
9491
文章数
264
vx: coding_the_world
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息