我们把 CA 和TA 编译的依赖环境 统称为TDK (Trust Develop Kit)
其中 TDK 目录 结构如下 :
├── Android.mk
├── ca_export_arm
│ ├── bin
│ ├── bin_android
│ ├── bin_softfp
│ ├── include
│ ├── lib
│ ├── lib_android
│ └── lib_softfp
├── ca_export_arm64
│ ├── bin
│ ├── bin_android
│ ├── include
│ ├── lib
│ └── lib_android
├── CHANGELOG.md
├── LICENSE
├── README.md
└── ta_export
│ ├── host_include
│ ├── include
│ ├── keys
│ ├── lib
│ ├── mk
│ ├── scripts
│ └── src
很明显, ca_export_arm 和 ca_export_arm64 是给CA 编译使用的依赖, ta_export 是给 ta 编译使用的依赖
由于项目太多,会经常遇到各种各样的奇怪问题 , 当你遇到奇怪问题,确认代码无误的时候, 需要立刻意识到 环境问题
1:CA 传输的数据 送往 ta 丢失 或者篡改
2:TA 操作 buffer 爆出 0xffff0001 错误
3:TA 的 fastcall 无法返回
4:TA 的API cmd 传递的buffer 数据被篡改
5:TA 无法被成功load
遇到这样的问题,需要首先需要明确环境问题, 下面给出一个基本范式:
- TA 文件和 OPTEE OS 位数要相同
- libteec.so 和 tee-supplicant 要和系统保持一致, 且 是有同一个toolchains 编译出来的
- so文件也有32 bit 和 64 bit 区分,但是和 TA 文件bit 没有强相关
遇到这样的问题, 可以自己重新编译optee_client 代码 , OPTEE os , 重做TDK ,一定能解决问题
标签:总结,bin,lib,遇到,ca,TEE,export,include,TA From: https://www.cnblogs.com/coversky/p/18127330