日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

optee的Share Memory介绍

發(fā)布時(shí)間:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 optee的Share Memory介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

快速鏈接:
.
👉👉👉 個(gè)人博客筆記導(dǎo)讀目錄(全部) 👈👈👈


說(shuō)明: 在默認(rèn)的情況下,本文講述的是armv8 aarch64體系,optee 3.12.0代碼

文章目錄

        • 1、shareMemory定義
        • 2、兩種shareMemory:
          • (1)、Contiguous shared buffers(也叫靜態(tài)共享內(nèi)存)
          • (2)、Noncontiguous shared buffers(也叫動(dòng)態(tài)共享內(nèi)存)
        • 3、共享內(nèi)存的使用
          • (1)、From the Client Application
          • (2)、From the Linux Driver
          • (3)、From OP-TEE core/From TEE Supplicant

1、shareMemory定義

Share Memory是一塊內(nèi)存區(qū)域,用于non-secure world和secure world的數(shù)據(jù)共享

在non-secure world中(如Linux kernel中optee的driver)申請(qǐng)和管理Share Memory。
在secure world中設(shè)別shared buffers(Not pool),secure world需要知道buf start、buf size、Cache attributes、如果是非連續(xù)內(nèi)存還需知道List of chunks

2、兩種shareMemory:

(1)、Contiguous shared buffers(也叫靜態(tài)共享內(nèi)存)

在optee中定義如下配置

  • CFG_CORE_RESERVED_SHM=y
  • CFG_SHMEM_START
  • CFG_SHMEM_SIZE

該內(nèi)存的屬性為:MEM_AREA_NSEC_SHM
REE通過OPTEE_SMC_GET_SHM_CONFIG的smc id獲得內(nèi)存信息:物理地址、size、cache屬性

(2)、Noncontiguous shared buffers(也叫動(dòng)態(tài)共享內(nèi)存)

在optee中定義如下配置

  • CFG_CORE_DYN_SHM=y

REE側(cè)注冊(cè)4kByte chunks lists的內(nèi)存,然后調(diào)用OPTEE_MSG_CMD_REGISTER_SHM的smc id,通知TEE側(cè)建立map關(guān)系

在Linux driver側(cè),如下宏控制的內(nèi)存的申請(qǐng)方法:

  • CONFIG_GENERIC_ALLOCATION
  • CONFIG_DMA_SHARED_BUFFER

3、共享內(nèi)存的使用

(1)、From the Client Application

調(diào)用GlobalPlatform Client API函數(shù):TEEC_AllocateSharedMemory(…)

使用示例:

TEEC_SharedMemory bufferIn; TEEC_SharedMemory bufferOut;result = TEEC_AllocateSharedMemory(&context, &bufferIn);if (result != TEEC_SUCCESS) {LOGE("%s : TEEC_AllocateSharedMemory FAILED!",__func__);}result = TEEC_AllocateSharedMemory(&context, &bufferOut);if (result != TEEC_SUCCESS) {LOGE("%s : TEEC_AllocateSharedMemory FAILED!",__func__);}
(2)、From the Linux Driver

在Linux Kernel使用TEEC_TempMemoryReference類型的buf

(3)、From OP-TEE core/From TEE Supplicant

在一些場(chǎng)景下,optee需要REE的信息(dynamic TA loading, REE time request,…),這個(gè)時(shí)候需要建立共享內(nèi)存;
這個(gè)時(shí)候,需要發(fā)送OPTEE_SMC_RPC_FUNC_ALLOC構(gòu)建共享內(nèi)存,并構(gòu)建optee_msg_arg結(jié)構(gòu)體

在RPC調(diào)用到REE后,teei-supplicant處理完事情后,需要返回結(jié)果的,會(huì)使用OPTEE_MSG_RPC_CMD_SHM_ALLOC(OPTEE_MSG_RPC_SHM_TYPE_APPL,…)返回結(jié)果給TEE

總結(jié)

以上是生活随笔為你收集整理的optee的Share Memory介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。