1. OP-TEE 3.6.0的环境搭建
原书作者的博客:OP-TEE 3.6.0的qemu运行验证
2. 运行optee examples中的测试用例
-
打上 Add-optee-examples patch(patch见该章节末尾的补充)并重新
make -f qemu_v8.mk all
后,在REE的terminal中输入optee_example_
后双击tab键补全就会看到相关的测试执行文件。 -
调整TA的log级别(如果想调整TEE中其他的log level,只需自行搜索
TRACE_LEVEL
找出相应的makefile来修改,比如CFG_TEE_CORE_LOG_LEVEL
。当然,也可以在make时加上相应log level。)# optee_os/mk/config.mk # TA log level CFG_TEE_TA_LOG_LEVEL ?= 1 # - To debug user-mode (TA) allocations: build OP-TEE *and* the TA with: # $ make CFG_TEE_TA_LOG_LEVEL=3
# optee_os/ta/mk/ta_dev_kit.mk cppflags$(sm) += -DTRACE_LEVEL=$(CFG_TEE_TA_LOG_LEVEL)
// optee_os/lib/libutils/ext/include/trace.h #if (TRACE_LEVEL < TRACE_DEBUG) #define DMSG(...) (void)0 #else #define DMSG(...) trace_printf_helper(TRACE_DEBUG, true, __VA_ARGS__) #endif
-
调整tee-supplicant或libteec的log级别
# optee_client/config.mk # Client (User Non Secure) log level CFG_TEE_CLIENT_LOG_LEVEL?=1 # Supplicant log level CFG_TEE_SUPP_LOG_LEVEL?=1
# optee_client/tee-supplicant/Makefile EEC_CFLAGS += -DDEBUGLEVEL_$(CFG_TEE_SUPP_LOG_LEVEL) # optee_client/libteec/Makefile TEEC_CFLAGS += -DDEBUGLEVEL_$(CFG_TEE_CLIENT_LOG_LEVEL)
// optee_client/public/teec_trace.h #if defined(DEBUGLEVEL_3) && !defined(DEBUGLEVEL) #define DEBUGLEVEL TRACE_DEBUG #endif ...
补充:Add-optee-examples patch
build/common.mk -OPTEE_CLIENT_EXPORT ?= $(OPTEE_CLIENT_PATH)/out/export +OPTEE_CLIENT_EXPORT ?= $(OPTEE_CLIENT_PATH)/out/export/usr build/qemu_v8.mk -all: arm-tf buildroot edk2 linux optee-os qemu soc-term +all: arm-tf buildroot edk2 linux optee-os qemu soc-term optee-examples-common clean: arm-tf-clean buildroot-clean edk2-clean linux-clean optee-os-clean \ - qemu-clean soc-term-clean check-clean + qemu-clean soc-term-clean check-clean optee-examples-clean-common OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=vexpress-qemu_armv8a optee-os-clean: optee-os-clean-common +optee-client: optee-client-common +optee-client-clean: optee-client-clean-common
3. 添加自定义测试项
-
拷贝hello_word放在同级目录并改为my_test,并在当前目录下替换名字。
放在同级目录的话,这样你就可以不用去qemu_v8.mk中添加my_test用例了,相当于将my_test用例放到了optee_examples工程中。
$ sed -i 's/hello_world/my_test/g' `grep hello_world -rl .` $ sed -i 's/HELLO_WORLD/MY_TEST/g' `grep HELLO_WORLD -rl .`
其他的按照原书作者的博客 OP-TEE中添加自己的TA和CA 中来改。
-
最后先用脚本 build_ta_my_test.sh 测试能否成功编译CA和TA。如果能成功编译,就直接
make -f qemu_v8.mk all
集成到OPTEE中去。最终:CA会被拷贝到
out-br/target/usr/bin
,TA会被拷贝到out-br/target/lib/optee_armtz
。