Hikey OP-TEE Helloworld.TA移植和运行

Posted Q7318

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hikey OP-TEE Helloworld.TA移植和运行相关的知识,希望对你有一定的参考价值。

一.获得Helloworld的TA源码
将TA源码下载到OP-TEE工程目录下,一般为/devel/optee

git clone https://github.com/jenswi-linaro/lcu14_optee_hello_world.git optee_helloworld 
cd optee_helloworld

当然参照optee_test的TA程序也可以自行编写,这里使用官方人员编写的代码。
二. 编译代码
需要执行OP-TEE工程编译与测试的过程时,下载的toolchains进行编译,配置变量命令如下:
若编译的用户空间是64位,指定编译器:

export HOST_CROSS_COMPILE=$PWD/../toolchains/aarch64/bin/aarch64-linux-gnu-

若编译的用户空间是32位,指定编译器:

export HOST_CROSS_COMPILE=$PWD/../toolchains/aarch32/bin/arm-linux-gnueabihf-

配置其他相关变量:

export TA_CROSS_COMPILE=$PWD/../toolchains/aarch32/bin/arm-linux-gnueabihf-
export TEEC_EXPORT=$PWD/../optee_client/out/export
export TA_DEV_KIT_DIR=$PWD/../optee_os/out/arm/export-ta_arm32

最后进行编译:

make

注意:编译需要OP-TEE先进行编译,不然会出现找不到ta_dev_kit.mk的编译错误。

三.将TA添加至OP-TEE工程中
修改optee/build中的配置文件hikey.mk:

ARM_TF_PATH         ?= $(ROOT)/arm-trusted-firmware
+HELLO_WORLD_PATH                ?= $(ROOT)/optee_helloworld

添加传送文件命令到busybox:

cat $(GEN_ROOTFS_PATH)/filelist-final.txt | sed '/fbtest/d' > $(GEN_ROOTFS_PATH)/filelist-all.txt
    export KERNEL_VERSION=$(call KERNEL_VERSION); \\
    export TOP=$(ROOT); export MULTIARCH=$(MULTIARCH); \\
    $(expand-env-var) <$(PATCHES_PATH)/rootfs/initramfs-add-files.txt >> $(GEN_ROOTFS_PATH)/filelist-all.txt; \\
    +find $(HELLO_WORLD_PATH) -type f -name "hello_world" | \\
        +sed 's/\\(.*\\)/file \\/bin\\/hello_world \\1 755 0 0/g' >> $(GEN_ROOTFS_PATH)/filelist-all.txt;
    +find $(HELLO_WORLD_PATH)/ta -name "*.ta" | \\
        +sed 's/\\(.*\\)\\/\\(.*\\)/file \\/lib\\/optee_armtz\\/\\2 \\1\\/\\2 +444 0 0/g' >> $(GEN_ROOTFS_PATH)/filelist-all.txt;
find $(OPTEE_TEST_OUT_PATH) -type f -name "xtest" | sed 's/\\(.*\\)/file \\/bin\\/xtest \\1 755 0 0/g' >> $(GEN_ROOTFS_PATH)/filelist-all.txt; \\

若是QEMU中,则修改方式为:

@echo "# xtest / optee_test" > $(GEN_ROOTFS_FILELIST)
    @find $(OPTEE_TEST_OUT_PATH) -type f -name "xtest" | sed 's/\\(.*\\)/file \\/bin\\/xtest \\1 755 0 0/g' >> $(GEN_ROOTFS_FILELIST)
    @echo "# TAs" >> $(GEN_ROOTFS_FILELIST)
    @echo "dir /lib/optee_armtz 755 0 0" >> $(GEN_ROOTFS_FILELIST)
    +@find $(HELLO_WORLD_PATH) -type f -name "hello_world" | \\
        +sed 's/\\(.*\\)/file \\/bin\\/hello_world \\1 755 0 0/g' >> $(GEN_ROOTFS_FILELIST)
    +@find $(HELLO_WORLD_PATH)/ta -name "*.ta" | \\
        +sed 's/\\(.*\\)\\/\\(.*\\)/file \\/lib\\/optee_armtz\\/\\2 \\1\\/\\2 444 0 0/g' >> $(GEN_ROOTFS_FILELIST)
    @find $(OPTEE_TEST_OUT_PATH) -name "*.ta" | \\
        sed 's/\\(.*\\)\\/\\(.*\\)/file \\/lib\\/optee_armtz\\/\\2 \\1\\/\\2 444 0 0/g' >> $(GEN_ROOTFS_FILELIST)

更改完毕后,重新编译,此时Helloworld.ta便成功移植到OP-TEE工程镜像文件中了。
运行效果如下:

注意:在运行hello_world命令之前请先加载tee-supplicant &驱动,
若出现如下错误重新执行hello_world:

以上是关于Hikey OP-TEE Helloworld.TA移植和运行的主要内容,如果未能解决你的问题,请参考以下文章

OP-TEE在HIKEY上的编译运行与测试

Hikey OP-TEE Helloworld.TA移植和运行

OP-TEE xtest 功能记录

FSL i.MX6 UltraLite EVK OP-TEE的移植

FSL i.MX6 UltraLite EVK OP-TEE的移植

为 Hikey970 构建 AOSP 时出错