optee + qemu 编译

软件

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install android-tools-adb android-tools-fastboot autoconf \
        automake bc bison build-essential ccache cscope curl device-tree-compiler \
        expect flex ftp-upload gdisk iasl libattr1-dev libc6:i386 libcap-dev \
        libfdt-dev libftdi-dev libglib2.0-dev libhidapi-dev libncurses5-dev \
        libpixman-1-dev libssl-dev libstdc++6:i386 libtool libz1:i386 make \
        mtools netcat python-crypto python3-crypto python-pyelftools \
        python3-pycryptodome python3-pyelftools python-serial python3-serial \
        rsync unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev

 

下载源码

$ mkdir -p <optee-project>
$ cd <optee-project>
$ repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml -b 3.9.0
$ repo sync -j4 --no-clone-bundle

 

编译工具链

$ cd <optee-project>/build
$ make toolchains

下载工具链时间太长会导致编译错误,可以先手动下载,再编译

$ mkdir <optee-project>/toolchains
$ cd <optee-project>/toolchains
$ wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
$ wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz


修改 <optee-project>/build/toolchain.mk,不再自动下载工具链

diff --git a/toolchain.mk b/toolchain.mk
index 8bc4b16..a240fad 100644
--- a/toolchain.mk
+++ b/toolchain.mk
@@ -22,7 +22,6 @@ define dltc
        @if [ ! -d "$(1)" ]; then \
                mkdir -p $(1); \
                echo "Downloading $(3) ..."; \
-               curl -s -L $(2) -o $(TOOLCHAIN_ROOT)/$(3).tar.xz; \
                tar xf $(TOOLCHAIN_ROOT)/$(3).tar.xz -C $(1) --strip-components=1; \
        fi
 endef

$ make toolchains

 

编译

$ make -j `nproc`

期间碰到一个编译错误,因为我的bash里面之前为了编译Android 8.1加了一行 export LC_ALL=C,去掉就编译通过了

"aarch64-linux-gnu-ld.bfd: cannot find -los_test"

 

运行

$ make run

 

输入c

$ (qemu) c

REE shell:listening on port 54320
login root

# optee_example_hello_world
Invoking TA to increment 42
TA incremented value to 43
#

TEE shell: listening on port 54321

D/TC:? 0 tee_ta_init_pseudo_ta_session:284 Lookup pseudo TA 8aaaf200-2450-11e4-abe2-0002a5d5c51b
D/TC:? 0 load_ldelf:703 ldelf load address 0x40006000
D/LD:  ldelf:134 Loading TA 8aaaf200-2450-11e4-abe2-0002a5d5c51b
D/TC:? 0 tee_ta_init_session_with_context:573 Re-open TA 3a2f8978-5dc0-11e8-9c2d-fa7ae01bbebc
D/TC:? 0 system_open_ta_binary:257 Lookup user TA ELF 8aaaf200-2450-11e4-abe2-0002a5d5c51b (Secure Storage TA)
D/TC:? 0 system_open_ta_binary:260 res=0xffff0008
D/TC:? 0 system_open_ta_binary:257 Lookup user TA ELF 8aaaf200-2450-11e4-abe2-0002a5d5c51b (REE)
D/TC:? 0 system_open_ta_binary:260 res=0x0
D/LD:  ldelf:169 ELF (8aaaf200-2450-11e4-abe2-0002a5d5c51b) at 0x40051000
D/TC:? 0 tee_ta_close_session:499 csess 0xe17b360 id 1
D/TC:? 0 tee_ta_close_session:518 Destroy session
D/TC:? 0 tee_ta_close_session:499 csess 0xe17bb60 id 1
D/TC:? 0 tee_ta_close_session:518 Destroy session
D/TC:? 0 destroy_context:298 Destroy TA ctx (0xe17bb00)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值