OP-TEE系列之(三)如何新建一个TA程序

如何新建一个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 **

post_03_1.jpg

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

post_03_2.jpg

** 2、将文件中hello world 改成new_taps **

需要修改的文件包括

post_03_3.jpg

1)修改ta/include/hello_world_ta.h

http://www.itu.int/ITU-T/asn1/uuid.html

随机生成一个UUID,如0ed8f0a9-cfc1-4a2c-b571-d942f396c488

根据格式拆分成

0x0ed8f0a9, 0xcfc1, 0x4a2c, 0xb5, 0x71, 0xd9, 0x42, 0xf3, 0x96, 0xc4, 0x88

post_03_4.jpg

And 定义function ID的宏

​  宏的值必须保持与CA部分的commond ID一致

2)修改user_ta_header_defines.h文件

post_03_5.jpg

3)修改sub.mk文件

post_03_6.jpg

4)修改ta/Makefile文件

与1中的UUID一致

post_03_7.jpg

5)修改ta/hello_world_ta.c 文件

修改一些文件名,主要是TA_HELLO_WORLD_CMD_INC_VALUE

post_03_8.jpg

** hello_world_ta.c 存放TA功能实现部分代码 **

6)修改host/Main.c文件

linux中调用CA可执行文件的主函数存在的文件

post_03_10.jpg

7)修改host/Makefile文件

CA部分编译文件

post_03_9.jpg

8)build_ta_helloworld_qemu.sh 文件

** 3、编译 **

执行

./build_ta_helloworld_qemu.sh 或者./build_ta_newtaps_qemu.sh

post_03_11.jpg

新项目集成

返回build文件夹

post_03_12.jpg

** 1)修改common.mk文件 **

顶部相应位置添加

NEWTAPS_PATH ?= $(ROOT)/new_taps

找到hello_world部分,复制一份修改如下

post_03_14.jpg

最后添加

post_03_13.jpg

** 2)修改qemu.mk文件 **

同样找到hello_world复制一份

post_03_15.jpg

** 3)在Build中执行 make all **

** 4)运行 **

在build中执行


make -f qemu.mk run-only


在normal中执行


new_taps

运行结果如下,自定义一些输出字符串。

post_03_16.jpg

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

你可能感兴趣的:(OP-TEE系列之(三)如何新建一个TA程序)