OP-TEE 3.6.0的optee examples测试用例

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

你可能感兴趣的:(optee)