OPTEE Benchmark框架

2023-09-22 13:08:21

安全之安全(security²)博客目录导读

OPTEE调试技术汇总

目录

一、序言

二、Benchmark框架

三、Benchmark实现细节

1、设计概况

2、时间戳源

3、调用时序图

4、添加自定义时间戳

5、构建并运行Benchmark

6、限制和进一步措施


一、序言

        本节中描述的特性依赖于上游不可用的Linux kernel patch,并且在OP-TEE版本3.15.0之前一直在linaro-swg kernel repository中维护。带有此补丁的最新内核源代码可以在基于Linux 5.14的 optee-3.15.0分支中找到。

        Benchmark测试框架在OP-TEE 3.16.0或更高版本上仍然可以像这里描述的那样工作,前提是:(a)使用从分支optee-3.15.0构建的Linux内核,或者(b)benchmark kernel patch 被前向移植。

        如果内核补丁缺失,打印如下错误:

二、Benchmark框架

        由于其性质,OP-TEE是一个跨越多个体系结构层的解决方案,其中每个层都包含自己的复杂部分。为了进一步优化性能,需要一种工具来为每一层提供详细和精确的分析信息。

        需要接收以下情况的延迟(latency)值:

        从非安全世界下的client应用程序到可信应用程序再返回的往返时间。浏览每一层所需时间的详细信息,并原路返回:

  • libTEEC -> Linux OP-TEE kernel driver

  • Linux OP-TEE kernel driver -> OP-TEE OS Core

  • OP-TEE OS Core -> TA entry point (not supported yet)

三、Benchmark实现细节

1、设计概况

        Benchmark框架由以下组件组成:

1)Benchmark Client Application (CA):一个专用的客户端应用程序,它负责分配时间戳循环缓冲区,在Benchmark PTA中注册这些缓冲区,并使用所有OP-TEE层生成的所有时间戳数据。最后,将时间戳数据放入扩展名为.ts的适当文件中。更多的构建细节可以在optee_benchmark上找到。

2)Benchmark Pseudo Trusted Application (PTA):它拥有共享内存中的所有每个cpu循环非安全缓冲区。必须(由CA)调用Benchmark PTA来注册时间戳循环缓冲区。然后,Benchmark PTA调用OP-TEE Linux驱动程序(通过一些RPC方法)在Linux内核层中注册这个循环缓冲区。

3)libTEEC and Linux kernel OP-TEE driver:包括处理来自Benchmark PTA的时间戳缓冲区注册请求的功能。

        当启用Benchmark测试时,所有OP-TEE层(libTEEC、Linux内核OP-TEE驱动程序、OP-TEE操作系统核心)在分配/注册循环缓冲区的条件下,都会用所有调用请求的时间戳数据填充已注册的时间戳循环缓冲区。

2、时间戳源

        Arm性能监视器单元被用作时间戳值的主要来源。之所以选择这种技术,是因为它支持所有Armv7-A/Armv8-A核。除了它可以提供精确的cpu周期计数器值之外,还可以启用EL0访问所有事件,因此用户模式应用程序可以直接从协处理器寄存器读取cpu计数器值,通过避免对EL1内核进行额外的系统调用来实现最小的延迟。

        除了CPU周期计数器值,时间戳本身还包含以下信息:

        1)执行CPU核心索引

        2)OP-TEE层id,该时间戳是从哪里获得的

        3)记录时间戳时的程序计数器值,可用于获取符号名称(文件名和行号)。

3、调用时序图

4、添加自定义时间戳

        目前,时间戳只针对InvokeCommand调用,但也可以在受支持的OP-TEE层中选择自定义位置。在自定义的c源文件中添加时间戳存储命令:

        1)包含适当的头文件      

  • OP-TEE OS Core: bench.h

  • Linux kernel OP-TEE module: optee_bench.h

  • libTEEC: teec_benchmark.h

        2)在您想要放置时间戳的地方的函数中调用bm_timestamp()(对于linux kmod使用optee_bm_timestamp())。

5、构建并运行Benchmark

        请参阅optee_benchmark提供的说明。

6、限制和进一步措施

        应用程序的实现,该应用程序将分析时间戳数据,并为提供avg/min/max值(CPU周期和时间值)的不同类型的调用提供统计数据。

        添加对支持OP-TEE的所有平台的支持。

        增加对S-EL0时间戳的支持。

        为每个时间戳附加额外的有效负载信息,例如,会话。

        在OP-TEE操作系统核心中断上下文中的时间戳。

参考:Benchmark framework — OP-TEE documentation documentation

更多推荐

Anaconda安装和配置 ---- 详细到家

安装1.打开Anaconda官网,选择对应版本,下载到对应目录即可或者进入:Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror2.双击打开.exe文件,然后点击next;3.点击agree4.点击justme,然后next;5.在ChooseIn

热电偶的工作原理

当有两种不同的导体或半导体A和B组成一个回路,其两端相互连接时,只要两结点处的温度不同,一端温度为T,称为工作端或热端,另一端温度为T0,称为自由端(也称参考端)或冷端,回路中将产生一个电动势,该电动势的方向和大小与导体的材料及两接点的温度有关。这种现象称为“热电效应”,两种导体组成的回路称为“热电偶”,这两种导体称为

ruoyi框架使用自定义用户表登录

背景有的时候我们做框架升级或改造的时候,需要用到原来的部分表,比如只是用ruoyi的框架,然后登录的用户逻辑还是想用自己的表,那么接下来这边文章将介绍修改逻辑。修改教程1、SysLoginController.java大家找到这个login方法,这是controller的入口。/***登录方法**@paramlogin

ElasticSearch进阶:一文全览各种ES查询在Java中的实现

ElasticSearch进阶:一文全览各种ES查询在Java中的实现ElasticSearch进阶:一文全览各种ES查询在Java中的实现es基本语句详解查询语句详解前言ElasticSearch第一篇:ElasticSearch基础:从倒排索引说起,快速认知ES完整项目已上传至:ElasticSearchDemo项

代码随想录算法训练营第三十六天| 435. 无重叠区间 763.划分字母区间 56. 合并区间

今天的三道题目,都算是重叠区间问题,大家可以好好感受一下。都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙!还是属于那种,做过了也就会了,没做过就很难想出来。不过大家把如下三题做了之后,重叠区间基本上差不多了435.无重叠区间与引爆气球相似,差不多;代码随想录publicinteraseOverlapInterv

上新!100%国产物料认证,米尔入门级国产核心板全志T113-i方案

自米尔国产全志T113系列的核心板发布以来,这款高性价比、低成本、入门级、高性能的国产核心板咨询不断,配套的开发板已经成交量数百套,深受工程师们的青睐,为了集齐T113全系列的产品,这次米尔发布了基于全志T113-i处理器的核心板和开发板,让广大工程师有了更多的选择。接下来看看这款T113-i国产核心板的性能和优势。M

ETHERNET IP站转CCLKIE协议网关

产品介绍JM-EIP-CCLKIE是自主研发的一款ETHERNET/IP从站功能的通讯网关。该产品主要功能是实现CCLINKIEFB总线和ETHERNET/IP网络的数据互通。本网关连接到ETHERNET/IP总线中做为从站使用,连接到CCLINKIEFB总线中做为从站使用。产品参数技术参数l网关做为ETHERNET/

nginx 安全加固

Nginx官方容器的安全加固主要包括以下几个方面:最小化容器:尽量只包含运行应用程序所需的最小文件和依赖项。这可以减少攻击面,提高安全性。使用非root用户运行容器:默认情况下,Docker容器以root用户身份运行,这可能会带来安全风险。你可以在Dockerfile中使用USER指令来指定一个非root用户运行容器。

人源化抗体的改造方式及其优势

抗体是一类能与抗原特异性结合的免疫球蛋白,作为免疫系统中的重要组成部分,在许多疾病的预防和治疗中发挥着重要作用。抗体治疗的最早应用可以追溯到中国人接种“人痘”预防天花的记载算起,国际上一般公认的人痘接种术最早起源于中国公元10世纪,但据中国的一些史书记载,种痘的兴起更早,始于唐朝。而直到1986年FDA批准了第一个治疗

Python基础之装饰器

文章目录1装饰器1.1定义1.2使用示例1.2.1使用类中实例装饰器1.2.2使用类方法装饰器1.2.3使用类中静态装饰器1.2.4使用类中普通装饰器1.3内部装饰器1.3.1@property2常用装饰器2.1@timer:测量执行时间2.2@memoize:缓存结果2.3@validate_input:数据验证2.

van-button根据参数改变字体颜色,实现高度自定义

本来van-button没有属性去单独自定义字体颜色。通过研究,我发现可以通过:style来实现这一需求。<van-buttonclass="case-btn":color="item.BtnBgColor":style="{color:item.BtnColor}"@click="jumpToUrl(item)">这

热文推荐