【OP-TEE 3.8.0学习】001_运行环境的搭建及编译

本文详细介绍了如何在Ubuntu 20.04上搭建OP-TEE 3.8.0开发环境,包括安装必要的依赖库、配置git、获取OP-TEE源代码、同步源代码、编译工具链及QEMU等步骤。同时提供了常见问题解决方案,如编译错误和网络问题处理方法。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

 

一、OP-TEE开发环境搭建(Ubuntu-20.04 & op-tee 3.8.0)

1. OP-TEE开发环境需要使用各种依赖库

sudo apt-get install android-tools-adb android-tools-fastboot autoconf automake bc \
bison build-essential 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 libtool \
zlib1g zlib1g:i386 libtool-doc gfortran make mtools netcat python-crypto nzip \
uuid-dev xdg-utils xterm xz-utils python3-pip python3-pyelftools texinfo texlive \

2. git配置

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

3. 安装repo

$ wget https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
$ sudo chmod 777 git-repo
$ sudo mv git-repo /usr/bin/repo

4. 获取OP-TEE源代码

repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 3.8.0

获取op-tee源代码时出现如下异常:

 /usr/bin/env: ‘python’: No such file or directory

针对上述异常的解决办法:

5. sync OP-TEE源代码

repo sync -c -j16

sync后op-tee工程目录如下:

如果在执行repo sync时出现“remote:Repository not found”的报错提示,则需要修改open-tee/.repo目录中的manifest.xml文件,将该文件中所有project域中的“.git”删除,也可以通过如下指令进行修改:

sed -i "s/\.git//g" .repo/manifest.xml

修改完成之后,重新执行repo sync来获取OP-TEE的代码。

6. 获取编译OP-TEE的toolchain

$ cd build
$ make -f toolchain.mk toolchains

查看toolchain.mk文件可知,执行make指令之后,系统会去下载toolchains的tar包,包括32位和64位的编译链接工具,下载完成后会进行解压操作。

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 -f toolchain.mk toolchains”命令后,一直卡在“Downloading xxx ...”那。

手动到https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads下载指定toolchain(toolchain.mk指定了AARCH32_GCC_VERSION和AARCH64_GCC_VERSION)。

这里下载的是gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xzgcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz

将下载的toolchain的tar包放到op-tee源代码的根目录下的toolchains目录,并进行解压

$ tar xf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C aarch32 --strip-components=1
$ tar xf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C aarch64 --strip-components=1

7. 编译QEMU

$ cd build
$ make -f qemu_v8.mk all

编译时报出来的问题1:

Traceback (most recent call last):
  File "scripts/pem_to_pub_c.py", line 61, in <module>
    main()
  File "scripts/pem_to_pub_c.py", line 24, in main
    from Crypto.PublicKey import RSA
ModuleNotFoundError: No module named 'Crypto'
make[1]: *** [mk/subdir.mk:162: out/arm/core/ta_pub_key.c] Error 1
make[1]: Leaving directory '/home/xiaolinwu/xiaolin/op-tee/optee_os'
make: *** [common.mk:396: optee-os-common] Error 2
Traceback (most recent call last):
  File "out/arm/export-ta_arm32/scripts/sign_encrypt.py", line 258, in <module>
    main()
  File "out/arm/export-ta_arm32/scripts/sign_encrypt.py", line 131, in main
    from Cryptodome.Signature import pss
ModuleNotFoundError: No module named 'Cryptodome'
make[1]: *** [ta/arch/arm/link.mk:101: out/arm/ta/avb/023f8f1a-292a-432b-8fc4-de8471358067.ta] Error 1
make[1]: Leaving directory '/home/xiaolinwu/xiaolin/op-tee/optee_os'
make: *** [common.mk:396: optee-os-common] Error 2

安装pycrypto、pycryptodomex

$ sudo pip3 install pycrypto
$ sudo pip3 install pycryptodomex

编译时报出来的问题2:卡住此处

install libcrypto.pc -> /home/xiaolinwu/xiaolin/op-tee/out-br/target/usr/li

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值