如何新建一个TA程序
-
参考Hello World Trusted Application(*)
-
定义UUID和功能ID(ta/include/ta_hello_world.h)
-
在(ta/hello_world_ta.c)中实现函数
-
在Linux(host/hello_world.c)中的用户空间新建/调用这个新的TA
-
构建/克隆并导出所需的tools/flags
1. optee_os 可信应用程序开发工具包
2. optee_client 用于公共TEE Client API接口和库(TEEC_EXPORT)
3. Host and TA toolchain
Hello_World程序修改
** 1、复制hello_world为新建程序 new_taps **

这里我的hello_world编译运行过,所以直接从github重新clone了一份至new_taps

** 2、将文件中hello world 改成new_taps **
需要修改的文件包括

1)修改ta/include/hello_world_ta.h
随机生成一个UUID,如0ed8f0a9-cfc1-4a2c-b571-d942f396c488
根据格式拆分成
0x0ed8f0a9, 0xcfc1, 0x4a2c, 0xb5, 0x71, 0xd9, 0x42, 0xf3, 0x96, 0xc4, 0x88

And 定义function ID的宏
宏的值必须保持与CA部分的commond ID一致
2)修改user_ta_header_defines.h文件

3)修改sub.mk文件

4)修改ta/Makefile文件
与1中的UUID一致

5)修改ta/hello_world_ta.c 文件
修改一些文件名,主要是TA_HELLO_WORLD_CMD_INC_VALUE

** hello_world_ta.c 存放TA功能实现部分代码 **
6)修改host/Main.c文件
linux中调用CA可执行文件的主函数存在的文件

7)修改host/Makefile文件
CA部分编译文件

8)build_ta_helloworld_qemu.sh 文件
** 3、编译 **
执行
./build_ta_helloworld_qemu.sh 或者./build_ta_newtaps_qemu.sh

新项目集成
返回build文件夹

** 1)修改common.mk文件 **
顶部相应位置添加
NEWTAPS_PATH ?= $(ROOT)/new_taps
找到hello_world部分,复制一份修改如下

最后添加

** 2)修改qemu.mk文件 **
同样找到hello_world复制一份

** 3)在Build中执行 make all **
** 4)运行 **
在build中执行
<br /> make -f qemu.mk run-only
<br /> 在normal中执行
<br />new_taps
运行结果如下,自定义一些输出字符串。

Ps.文中两处图片的UUID有误,注意保持一致
网友评论