第1章:开发环境搭建
做TEE开发,环境搭建是第一道坎。说实话,我见过太多人卡在这一步,折腾几天连Hello World都跑不起来。今天我就把QEMU模拟器和ARM开发板的搭建经验,一次性讲清楚。
1.1 QEMU模拟器环境搭建
QEMU模拟器,说白了就是一台虚拟的ARM电脑。你不需要买开发板,也能跑OP-TEE。我个人习惯用QEMU做前期验证,等逻辑跑通了再上真板子。
核心思路:QEMU模拟的是ARMv8-A架构,支持AArch64和AArch32两种模式。OP-TEE在QEMU上跑,其实就是一个完整的双系统环境——REE侧跑Linux,TEE侧跑OP-TEE OS。
搭建步骤其实不复杂,我列一下关键点:
- 安装依赖包:你需要Python 3.x、Git、Make、GCC等基础工具。我建议用Ubuntu 20.04或22.04 LTS,坑最少。
- 克隆OP-TEE仓库:官方有个repo工具,能一键拉取所有组件。命令很简单:
repo init -u https://github.com/OP-TEE/manifest.git - 同步代码:
repo sync -j4,这里注意网络问题。我在公司内网遇到过同步失败,后来换了代理才搞定。 - 编译QEMU:进入
build目录,执行make -j$(nproc) qemu。第一次编译大概要20分钟,喝杯咖啡吧。
小技巧:如果你只想快速验证,可以用预编译的QEMU二进制文件。但我不推荐,自己编译能更深入理解整个链路。
1.2 ARM开发板环境搭建
真机调试和模拟器完全是两码事。我最早用树莓派3B+做过OP-TEE移植,踩了不少坑。后来改用Hikey960和Juno开发板,稳定性好很多。
常见的开发板选择:
| 开发板型号 | 架构 | 推荐指数 | 备注 |
|---|---|---|---|
| Hikey960 | AArch64 | ★★★★★ | 官方支持最好,文档齐全 |
| Juno r2 | AArch64 | ★★★★☆ | ARM官方板,但价格偏高 |
| 树莓派3B+ | AArch32 | ★★★☆☆ | 需要自己移植,适合练手 |
| QEMU | 虚拟化 | ★★★★★ | 开发调试首选 |
搭建开发板环境,核心是烧录固件。你需要准备:
- Bootloader:U-Boot或ARM Trusted Firmware(ATF)
- OP-TEE OS:编译好的tee.bin或tee-pager.bin
- Linux内核:支持OP-TEE驱动(optee.ko)
- 文件系统:包含OP-TEE客户端库和测试工具
注意:烧录前一定要确认串口线连接正确。我曾经因为TX/RX接反,折腾了一整天才发现是线的问题。嗯,这种低级错误,犯一次就够了。
1.3 交叉编译工具链配置
交叉编译,说白了就是在你的x86电脑上编译出ARM能跑的程序。这里有个关键点:工具链版本必须和你的目标架构匹配。
我推荐两种方式:
- 使用Linaro工具链:官方维护,稳定可靠。下载地址在
releases.linaro.org,选择aarch64-linux-gnu或arm-linux-gnueabihf。 - 使用OP-TEE自带工具链:在
toolchains目录下,执行make toolchains自动下载。我个人更推荐这种方式,版本匹配度最高。
配置环境变量是个细活。我习惯这样写:
# 设置交叉编译器路径
export CROSS_COMPILE=aarch64-linux-gnu-
export CC=${CROSS_COMPILE}gcc
export LD=${CROSS_COMPILE}ld
export AR=${CROSS_COMPILE}ar
# 设置OP-TEE相关路径
export TA_DEV_KIT_DIR=$HOME/optee/optee_os/out/arm/export-ta_arm64
export OPTEE_CLIENT_EXPORT=$HOME/optee/optee_client/out/export
避坑指南:我曾经在编译TA时遇到链接错误,折腾半天发现是CROSS_COMPILE没设置对。你想想看,编译器都找错了,怎么可能编译通过?所以每次编译前,先执行echo $CC确认一下。
1.4 验证环境是否搭建成功
环境搭好了,怎么确认能用?我一般跑三个测试:
- 编译测试:写一个简单的Hello World TA,编译通过就算成功一半。
- 启动测试:在QEMU或开发板上启动OP-TEE,看到
OP-TEE: initialized日志就对了。 - 功能测试:运行
xtest测试套件,全部通过说明环境完美。
这里我画了一张环境搭建的流程图,帮你理清整体逻辑:
这张图把整个流程串起来了。你从选择平台开始,然后根据平台走不同分支,最后都汇聚到工具链配置和验证环节。说白了,不管用QEMU还是开发板,最终目的都一样——让OP-TEE跑起来。
我的建议:如果你是新手,先从QEMU开始。等熟悉了OP-TEE的编译和运行流程,再上开发板。这样能省掉很多硬件调试的烦恼。
好了,环境搭建就讲到这里。记住一句话:环境搭好了,后面的事就顺了。如果遇到问题,多看看官方文档和社区论坛,大部分坑都有人踩过。
可可精品资料库