感谢 帅峰云 博主的教程,书已购买讲的很细致:https://blog.csdn.net/shuaifengyun/article/details/71499619

感谢 技术宅阿棍儿 up主的视频,已三连投币:https://www.bilibili.com/video/av55057371/

上一篇搭建了 Qemu & OPTEE 的运行环境,并且运行了 ~/optee/optee_examples/hello_world 中的示例代码。

我们想向 OPTEE环境中添加自己的 TA/CA,最简单的方法当然是找示例代码作为模板,修改关键内容并且添加自己的代码段。

一、示例代码的目录结构

先来看下 ~/optee/optee_examples/hello_world 示例代码的目录结构:

左侧为 示例代码 hello_world的目录结构,上边为其中比较重要的文件。

host 文件夹存放的是 CA的代码,重要文件是 main.c。

ta 文件夹存放的是 TA的代码,重要文件是 hello_world_ta.c。

各个目录下都有一个 Makefile,清一色的编译套路,稍作修改即可。

二、复制代码

复制代码前,因为以前文件中有很多中间文件,需要先清理一下。

git clean -fx

之后翻看了下 host 和 ta 的文件,少了很多以前的中间文件。

创建 ~/optee/optee_examples/mytest 文件夹,将 hello_world 中的文件都复制过来。

使用 Vscode  -  文件  -  打开文件夹  - ,进入这个工作目录。

三、编辑文件,替换代码内容

./host/main.c:

main.c 中主要的内容有:

res = TEEC_InitializeContext(NULL, &ctx);res = TEEC_OpenSession(&ctx, &sess, &uuid,TEEC_LOGIN_PUBLIC, NULL, NULL, &err_origin);res = TEEC_InvokeCommand(&sess, TA_HELLO_WORLD_CMD_INC_VALUE, &op,&err_origin);TEEC_CloseSession(&sess);TEEC_FinalizeContext(&ctx);

我们对如下进行修改,先是 CTRL + F 搜索 hello,然后将 hello world 改为 mytest,大写同理。

36 44 53 82 86 行有改动,三处注释三处代码。

./host/Makefile:

没什么改动,只需要改下输出可执行文件名称。

./ta/include/hello_world_ta.h:

将 ./ta/include/hello_world_ta.h 重命名为 mytest_ta.h

依然是 CTRL + F 搜索 hello,然后将 hello world 改为 mytest,大写同理。

然后修改 UUID,按照注释的提示,UUID生成器链接:http://www.itu.int/ITU-T/asn1/uuid.html

上边的链接打开很慢,最后还是要跳转到这个链接,这个打开很快:https://www.uuidgenerator.net/

7c07d8be-244a-4491-8f26-0d1d8f2dd4e7

复制,对照着修改。使用网页生成器生成的 UUID能保证唯一性,不会与别人发布的冲突

UUID可以自行随意修改,但如果需要发布,可能会与他人的造成冲突。只能用于本地个人测试。

./ta/sub.mk:

将指定的源文件,改为 mytest_ta.c。

./ta/hello_world_ta.c:

将 ./ta/hello_world_ta.c 重命名为 mytest_ta.c

继续 CTRL + F 搜索 hello,然后将 hello world 改为 mytest,大写同理。

找到 static TEE_Result inc_value ,修改运算逻辑。

./ta/Makefile:

修改 UUID

./ta/user_ta_header_defines.h:

头文件、和UUID宏的名称

下面第 45行的内容暂且先不要修改。

四、将此文件夹添加进编译列表中

修改 ~/optee/optee_examples/Makefile,把 mytest 添加进去。Esc,:wq 保存退出。

五、编译 运行

回到目录  ~/optee/build  下。

make run

c回车

optee_hello_world

optee_mytest

Arm TrustZone 学习 - 0.3 向 OPTEE 添加用户自己的 TA/CA相关推荐

  1. Arm TrustZone 学习 - 0.2 Qemu - OPTEE 虚拟运行环境搭建

    感谢 帅峰云 博主的教程,书已购买讲的很细致:https://blog.csdn.net/shuaifengyun/article/details/71499619 感谢 技术宅阿棍儿 up主的视频, ...

  2. mysql 给库赋权,MySQL 8.0.18给数据库添加用户和赋权问题

    MySQL 8.0.18给数据库添加用户和赋权问题 1. 首选使用root用户登录数据库 mysql -uroot -p 2. 使用mysql 数据库 USE mysql; 3. 为mysql创建用户 ...

  3. mysql8创建用户并授权_新版mysql8.0.12添加用户并设置权限避免踩坑!

    新版MySQL8.0.12中,添加用户并设定权限 MySQL8.0之前在添加用户的时候可以直接设置用户权限如: GRANT ALL ON *.* TO `zqj`@`ip` IDENTIFIED BY ...

  4. ARM Trustzone介绍-视频学习

    ARM Cache介绍 ARM Trustzone介绍 ARM-GIC中断控制器介绍

  5. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

  6. I.MX6ULL ARM Linux学习笔记

    I.MX6ULL ARM Linux学习笔记 写在前面 S1:U-Boot S2:正点原子U-Boot编译 S3:U-Boot基本命令第1讲:help.bdinfo和环境变量命令 S4:U-Boot基 ...

  7. 嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器

    嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器 一.ADC 1. 什么是ADC ADC(analog digital converter):模数转换(也就是模拟量转换为数字量).由于CPU ...

  8. 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)

    嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...

  9. ARM GIC(五) ARM TrustZone如何支持安全中断 分析笔记。

    目录 CPU是如何支持安全中断的? GIC是如何支持安全中断的? 外设如何支持安全中断 TF-A2.6.0 源码分析 前几篇博文主要梳理了GIC V3架构基础,中断全生命周期,以及中断IRQ.FIQ基 ...

最新文章

  1. IP 网络性能的度量标准
  2. 在DataGridView控件中加入ComboBox下拉列表框的实现
  3. spring配置文件路径修改后web.xml配置
  4. 线程池2--创建线程
  5. App乱世,3721离我们有多远
  6. 20200930 《计算感知》第1节课 笔记
  7. 如何在有scoped不影响elementUI 的其他页面组件,进行单页面修改的几种方法。
  8. 二叉树的层序遍历 IIPython解法
  9. hex转换成C语言源程序吗,第6节:把.c源代码编译成.hex机器码的操作流程
  10. ijkplayer框架深入剖析
  11. wordpress建立数据库连接时出错
  12. 云计算的运营方式有哪些?
  13. 秋招/校招面试不完全整理
  14. 218分照样可以成为同声传译研究生3
  15. 《满江红》非岳飞所作?
  16. 2018 ACM ICPC Arabella Collegiate Programming Contest A
  17. HTML链接CSS的三种方法
  18. copa-pi测试软件,COPA-DATA SCADA/HMI自动化软件中的先锋——zenOn 6.20
  19. 在arm开发板上画日本国旗
  20. 某学校对教师每月工资的计算规定如下:固定工资+课时补贴。教授的固定工资为5000元,每个课时补贴50元。副教授的固定工资为3000元,每个课时补贴30元。讲师的固定工资为2000元,每个课时补贴20元

热门文章

  1. cocos2d-x3.6 连连看随机地图实现
  2. 最少拦截系统,简单dp,(学长说这是贪心?!。。。。。。也是醉了)
  3. Android 使用AsyncTask 后监听异步加载完毕的动作
  4. 【Java从0到架构师】SSM 整合(XML、纯注解)
  5. 【Java从0到架构师】SpringMVC - 异常处理_拦截器
  6. 软件设计师备考知识04
  7. 安装自己写的插件时,报插件版本过高,请升级JAR包或者安装低版本插件的问题
  8. oracle表分析效果怎么看,Oracle 索引与表分析几种方法
  9. c++检测固定usb端口有无设备接入_电脑USB技术白皮书
  10. html 文字过多如何显示,当页面文字过多时,怎么用css使超出部分显示省略号?(单/多行代码演示)...