初识optee 在QEMU平台上的编译、运行

1.安装依赖的工具
先安装repo。
然后在Ubuntu中启动一个Terminal,执行如下命令,安装依赖的其他工具。
$ sudo apt-get install android-tools-fastboot autoconf bison cscope curl \
               flex gdisk libc6:i386 libfdt-dev libglib2.0-dev \
               libpixman-1-dev libstdc++6:i386 libz1:i386 netcat \
               python-crypto python-serial uuid-dev xz-utils zlib1g-dev


2.下载OP-TEE源代码
执行如下命令即可。
$ mkdir -p $HOME/optee
$ cd $HOME/optee
$ repo init -u https://github.com/OP-TEE/manifest.git -m default_stable.xml -b master
$ repo sync

3.获取工具链,即交叉编译器
进入build目录
$ make -f toolchain.mk toolchains

4.编译源码
$ make -f qemu.mk all

我是在ubuntu 16.04 系统上编译的,编译提示如下错误:
提示toolchain编译链找不到,这边作了如下修改:
diff --git a/toolchain.mk b/toolchain.mk
index 33c6dfb..6d20d9e 100644
--- a/toolchain.mk
+++ b/toolchain.mk
@@ -6,20 +6,20 @@ TOOLCHAIN_ROOT 			?= $(ROOT)/toolchains
 
 AARCH32_PATH 			?= $(TOOLCHAIN_ROOT)/aarch32
 AARCH32_CROSS_COMPILE 		?= $(AARCH32_PATH)/bin/arm-linux-gnueabihf-
-AARCH32_GCC_VERSION 		?= gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf
-SRC_AARCH32_GCC 		?= http://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/${AARCH32_GCC_VERSION}.tar.xz
+AARCH32_GCC_VERSION 		?= gcc-linaro-6.3.1-2017.05-i686_arm-linux-gnueabihf
+SRC_AARCH32_GCC 		?= http://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-i686_arm-linux-gnueabihf.tar.xz
 
 AARCH64_PATH 			?= $(TOOLCHAIN_ROOT)/aarch64
 AARCH64_CROSS_COMPILE 		?= $(AARCH64_PATH)/bin/aarch64-linux-gnu-
-AARCH64_GCC_VERSION 		?= gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu
-SRC_AARCH64_GCC 		?= http://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/aarch64-linux-gnu/${AARCH64_GCC_VERSION}.tar.xz
+AARCH64_GCC_VERSION 		?= gcc-linaro-6.3.1-2017.05-i686_aarch64-linux-gnu
+SRC_AARCH64_GCC 		?= http://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-i686_aarch64-linux-gnu.tar.xz
 
 # Due to relocation error on the 96board edk forest, let's keep the old
 # toolchain for a while.
 LEGACY_AARCH64_PATH             ?= $(TOOLCHAIN_ROOT)/aarch64-legacy
 LEGACY_AARCH64_CROSS_COMPILE    ?= $(LEGACY_AARCH64_PATH)/bin/aarch64-linux-gnu-
-LEGACY_AARCH64_GCC_VERSION      ?= gcc-linaro-aarch64-linux-gnu-4.9-2014.08_linux
-LEGACY_SRC_AARCH64_GCC          ?= http://releases.linaro.org/archive/14.08/components/toolchain/binaries/${LEGACY_AARCH64_GCC_VERSION}.tar.xz
+LEGACY_AARCH64_GCC_VERSION      ?= gcc-linaro-4.9.4-2017.01-i686_aarch64-linux-gnu
+LEGACY_SRC_AARCH64_GCC          ?= http://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu/gcc-linaro-4.9.4-2017.01-i686_aarch64-linux-gnu.tar.xz
 
 # Download toolchain macro for saving some repetition
 # $(1) is $AARCH.._PATH		: i.e., path to the destination
然后在build目录继续执行:
$ make -f toolchain.mk toolchains

等待下载完成,然后进行编译
make -f qemu.mk all

4.启动QEMU模拟器运行OP-TEE
make -f qemu.mk run-only

跳出如下界面,然后输入 c ,启动相关服务:

然后在REE的终端回车,输入:
$optee_hello_world


 可以看到TEE的log输出。 
  

猜你喜欢

转载自blog.csdn.net/cigogo/article/details/78722516