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移植和运行的主要内容,如果未能解决你的问题,请参考以下文章
Hikey OP-TEE Helloworld.TA移植和运行
FSL i.MX6 UltraLite EVK OP-TEE的移植