[optee] 02. 项目结构

3/16/2021 opteetrustzone

optee 的源代码可以从 github (opens new window) 获取。在 Linux 使用 repo 的方式可以获取到完整的 optee 源代码如下:

# 本教程是用的是 3.12.0 版本的 optee,运行环境为 QEMU 虚拟的 ARMv8 架构。
repo init -b 3.12.0 -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml
1
2

注意:拉取过程很多东西都需要翻墙,建议为 github 和 repo 设置代理。github 代理教程参见 这里 (opens new window),repo 代理设置参见这份 Dockerfile (opens new window)

下载完成后,可见项目结构如下

.
|-- build
|-- buildroot
|-- edk2
|-- linux
|-- mbedtls
|-- optee_benchmark
|-- optee_client
|-- optee_examples
|-- optee_os
|-- optee_test
|-- qemu
|-- soc_term
`-- trusted-firmware-a
1
2
3
4
5
6
7
8
9
10
11
12
13
14

各目录的作用介绍如下:

目录 说明
build (opens new window) 这个工程的编译目录,里面包含了各种 Makefile 文件和相关配置文件
buildroot (opens new window) TODO
edk2 (opens new window) TODO
linux (opens new window) linux 内核代码,其 driver/tee 子目录存放 TEE 对应的驱动程序
mbedtls (opens new window) TODO
optee_benchmark (opens new window) TODO
optee_client (opens new window) 包含 CA 程序调用的用户空间层面的接口库源码,其 tee_supplicant 子目录的代码会被编译成一个二进制。该二进制主要的作用是:调用 CA 接口加载 TA image 时,TEE OS 通过该二进制从文件系统获取 TA image,并传递给 TEE OS,然后再将 TA image 放到 TEE OS 运行。
optee_examples (opens new window) 示例代码
optee_os (opens new window) 存放 OP-TEE OS 的源代码和相关文档
optee_test (opens new window) optee 的测试程序 xtest 的源码,主要用来测试 TEE 提供的各种算法逻辑和其他功能
qemu (opens new window) QEMU 源代码
soc_term (opens new window) 在启动时与 gnome-terminal 命令一起启动终端,用于建立启动的两个终端之间的端口监听,方便 OP-TEE OS 的日志和linux 内核日志分别输出到两个终端
trusted-firmware-a (opens new window) TODO

@TODO:其他目录的功能后续弄懂再补充 😦

# 参考文献