TEE中TA和CA的编译

2. OP-TEE中添加自己的TA和CA

京东购买地址

当当购买地址

天猫购买地址

非常感谢在此期间大家的支持以及各位友人的支持和帮助!!!。

为方便和及时的回复读者对书中或者TEE相关的问题的疑惑,也为了大家能有一个统一的交流平台。我搭建了一个简单的论坛,网址如下:

https://www.huangtengxq.com/discuz/forum.php

关于您的疑问可在“相关技术讨论“”中发帖,我会逐一回复。也欢迎大家发帖,一起讨论TEE相关的一些有意思的feature。共同交流。同时该论坛中也会添加关于移动端虚拟化的相关技术的板块,欢迎各位共同交流学习

 

 

OP-TEE中添加自己的TA和CA

  本章将讲述如何在想OP-TEE中添加自有的TA和CA程序,并使其运行起来。在 搭建完成qemu+OP-TEE的环境之后,开始着手添加自有的TA和CA程序。本文使用的代码可以以下链接中下载

my_test

 

1.源代码及相关目录准备

  第一步,为方便操作,首先复制hello_world目录为my_test

  第二步,修改my_test/ta目录中的Makefie并添加自有的TA部分的代码,我修改之后的目录文件如下

上述目录文件说明如下:

Makefile文件:编译TA时使用的makefile文件

my_test.c文件:主要是存放TA部分代码的入口处理函数,CA的commond请求最终会被TA_InvokeCommandEntryPoint函数处理。

my_test_handle.c文件:存放具体响应CA的commond请求的功能函数

sub.mk文件:定义该TA中需要被编译的source code。

user_ta_header_defines.h文件:定义UUID等相关宏

include/my_test_handle.h文件:定义了该TA需要使用到的类型

include/my_test_ta.h文件:定义了UUID的宏以及与CA对应的commond ID宏

2.修改TA目录中的代码和makefile

1.修改sub.mk文件,将该TA中所有的.c文件添加到编译文件总,修改完成之后如下图所示:

2.定义UUID值和commond ID的值

  编译include/my_test_ta.h文件,定义该TA程序的UUID宏为TA_MY_TEST_UUID,并定义commond ID的宏(宏的值必须保持与CA部分的commond ID一致),UUID的值可以自己填写也可以从一下网址中生成:http://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx

3.修改user_ta_header_defines.h文件

  将my_test_ta.h文件include到该文件中以便获取UUID的定义

4.修改Makefile文件

  修改Makefile文件,将变量BINARY的值修改成新增TA的UUID值

CFG_TEE_TA_LOG_LEVEL ?= 4
CPPFLAGS += -DCFG_TEE_TA_LOG_LEVEL=$(CFG_TEE_TA_LOG_LEVEL)

# The UUID for the Trusted Application
BINARY=9269fadd-99d5-4afb-a1dc-ee3e9c61b04c

include $(TA_DEV_KIT_DIR)/mk/ta_dev_kit.mk

5.添加该TA需要处理的逻辑代码

  添加TA的具体实现代码,也即是该TA需要实现什么功能,在本例子中将该部分的代码存放在my_test_handle.c文件中,本工程的所有TA和CA的代码将最文章source code章节中给出,亦可发邮箱跟我要:shuaifengyun@126.com。该TA的代码处理逻辑如下:

3.CA部分代码的修改和编写

1.CA部分的代码存放在my_test/host目录中,文件结构体如下:

main.c文件:该文件就是在linux中调用CA可执行文件的主函数存在的文件

my_test_ca.h文件:定义相关宏和申明接口,主要包括UUID,commondID值以及其他结构体

Makefile文件:编译CA可执行文件使用的makefile文件

 

2.修改Makefile,主要修改BINARY变量和OBJ变量,如果CA部分的代码不止一个.c文件,则需要将所有的.c文件编译生成的.o文件名称添加到OBJS变量中,而BINARY变量就是编译完成之后生成的Binary的名称。本例子修改后的结果如下:

4.尝试编译TA和CA代码

  在my_test目录下有一个build_ta_mytest_qemu.sh文件,执行该脚本就能直接单独编译TA和CA的代码,该脚本与helloworld目录中的build_ta_hello_world.sh一样。

  修改完my_test目录下的代码之后,在my_test目录下运行build_ta_mytest_qemu.sh脚本,如果有错误则按照提示进行修改。执行完成之后,在ta目录下就会生成对应的ta image文件

5.将TA image和CA binary集成到rootfs和全局的makefile中。

该步骤需要修改build/common.mk文件和build/quem.mk文件

1.修改build/common.mk文件

  将TAimage和CA binary集成到fs中需要修改file-tee-common目标的内容(该目标主要用来生成启动时的文件脚本)修改如下:

添加my_test的依赖目标:

定义my_test目标需要的路径变量:

2.修改build/qemu.mk文件,添加该TA模块的targe编译目标

6.将添加的TA和CA编译到整个工程中

  修改完成之后,在build目录下直接执行make all(执行该编译需要将Makefile链接成qemu.mk),或者执行make -f qemu.mk all

7.完成运行和测试添加的TA和CA

  在build目录下运行make run-only或者make -f qemu.mk run-only。然后按照上一章节启动qemu并运行linux和OP-TEE,在启动的Linux terminal端直接执行my_test的相关指令就行,最终结果如下:

8.Source Code

  由于没法上传附件,故,我将my_test的source code上传到了资源区,下载链接如下:

my_test

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值