• TEEC_AllocateSharedMemory(): 在Kernel中分配一块内存,返回CA端(UserSpace),CA端再调用mmap()。在TEEC_OpenSession()和TEEC_InvokeCommand()时,进入TEE后,会对该物理地址进行map(当然该物理地址是散列值)
  • TEEC_RegisterSharedMemory(): 在Kernel中,将传来的地址转化为物理地址(当然是散列数组),然后直接传入到TEE进行map

TEE中逻辑:

(optee_os/core/arch/arm/kernel/thread_optee_smc.c)
static uint32_t std_smc_entry(uint32_t a0, uint32_t a1, uint32_t a2,uint32_t a3 __unused)
{paddr_t parg = 0;struct optee_msg_arg *arg = NULL;uint32_t num_params = 0;struct mobj *mobj = NULL;uint32_t rv = 0;if (a0 != OPTEE_SMC_CALL_WITH_ARG) {EMSG("Unknown SMC 0x%"PRIx32, a0);DMSG("Expected 0x%x", OPTEE_SMC_CALL_WITH_ARG);return OPTEE_SMC_RETURN_EBADCMD;}parg = reg_pair_to_64(a1, a2);/* Check if this region is in static shared space */if (core_pbuf_is(CORE_MEM_NSEC_SHM, parg,sizeof(struct optee_msg_arg))) {mobj = get_cmd_buffer(parg, &num_params);} else {if (parg & SMALL_PAGE_MASK)return OPTEE_SMC_RETURN_EBADADDR;mobj = map_cmd_buffer(parg, &num_params);}if (!mobj || !ALIGNMENT_IS_OK(parg, struct optee_msg_arg)) {EMSG("Bad arg address 0x%" PRIxPA, parg);mobj_put(mobj);return OPTEE_SMC_RETURN_EBADADDR;}arg = mobj_get_va(mobj, 0);assert(arg && mobj_is_nonsec(mobj));rv = tee_entry_std(arg, num_params);mobj_put(mobj);return rv;
}

TEEC_AllocateSharedMemory()和 TEEC_RegisterSharedMemory()的总结相关推荐

  1. TEEC_RegisterSharedMemory和TEEC_AllocateSharedMemory的区别

    TEEC_AllocateSharedMemory 在Kernel中调用alloc_pages分配若干块共享内存(最小单位为page) TEEC_RegisterSharedMemory 将共享内存以 ...

  2. CA/TA参数传输中tmpref,memref和Value的区别

    先看一个示例,展示了tmpref和memref的区别, 其中: local buffer.buffer on heap 为tmpref explicit shared memory buffer 为m ...

  3. optee的共享内存的介绍

    共享内存 1.共享内存的介绍 2.共享内存的使用 ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ 1.共享内存的介绍 share memory是一块内存区域, 用于non-secure wo ...

  4. Globalplatform TEE api介绍

    文章目录 1.TEE API介绍 2.Client API : CA与TA通信的API介绍 3.TEE API : TA系统调用TEE OS的API (1).Asymmetric (2).Authen ...

  5. Trustzone安全内核Open Virtualization SierraTEE向Xilinx ZC702移植手册

    本文档描述将OV项目向ZC702开发板移植的过程. 第一章.       环境搭建 ZC702开发板可以通过SD卡和网络两种方式启动,但是从SD卡启动方式在每次OS内核变化时就需要替换SD卡中的旧OS ...

  6. 21. OP-TEE中TA与CA执行流程-------libteec介绍

    历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...

  7. 27. OP-TEE驱动篇----libteec接口在驱动中的实现

    历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...

  8. TEE系列之GP规范TEE API浅析

    TEE系列之GP规范&TEE API浅析 1.GlobalPlatform 2.TEE GP API介绍 2.1 TEE Client API介绍 2.2 TEE OS API 1.Globa ...

  9. TEE 开发入门知识

    一.TEE GP规范文档合集 参考书籍:<手机安全和可信应用开发指南> 参考博客:TEE原理及应用举例 参考规范:GPD TEE API Specification合集下载 官方规范文档地 ...

最新文章

  1. 重磅!2022QS世界大学排名公布!
  2. 机器人领域牛人和研究组列表
  3. Java 异常基础 Exception
  4. php access ole相片,[求助]怎样读取ACCESS数据库中的OLE对象的图片啊???
  5. 前端学习(727):冒泡排序原理
  6. Win7下IIS7 ASP出现HTTP 500错误的解决办法
  7. 《深入浅出DPDK》读书笔记(一):基础部分知识点
  8. 如果40岁仍碌碌无为,牢记2句话,最迟也是大器晚成
  9. 关于Excel中的F2键(知道了,会对Excel的操作非常方便)。
  10. C++高级进阶教程之STL 教程
  11. 4.6 Data符号调制——16QAM
  12. Bootloader解锁加锁 Android刷机
  13. Mac中在Matlab中安装Mosek
  14. 翻译记忆软件-塔多思TRADO经典教程_4
  15. 面试题:浏览器事件冒泡、事件捕获
  16. 目标检测Anchor是什么?怎么科学设置?人人都能彻底搞懂的Anchor深度解析
  17. 解决npm ERR! Unexpected end of JSON input while parsing near的方法汇总
  18. Java学习:流程控制
  19. 期末安卓习题--第七章
  20. 一、Tensor基础

热门文章

  1. 怎么做好企业IT运维工作
  2. 三伏天到了,记得为数据中心降降温
  3. python连接es数据库_Python Elasticsearch API操作ES集群
  4. oracle 信用检查,Oracle EBS 信用(Credit)额度(1)-基础设置
  5. 成功解决AttributeError: ‘Series‘ object has no attribute ‘name’
  6. Py之Numpy:Numpy库中常用函数的简介、应用之详细攻略
  7. 成功解决\h5py\__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float
  8. EL之GB(GBM):利用GB对回归(性别属性编码+调2参)问题(整数值年龄预测)建模
  9. HDU - 6183 暴力,线段树动态开点,cdq分治
  10. Sersync实现触发式文件同步