一、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.xz和gcc-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

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

被折叠的 条评论
为什么被折叠?



