基于QEMU的OPTEE/ATF学习

基于QEMU的OPTEE/ATF学习

OPTEE/ATF

# 环境安装问题

# Ubuntu 20.04, 19.10 or 19.04 出现 libqtgui4 : Depends: libpng12-0 (>= 1.2.13-4) but it is not installed

E: Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify a solution). 问题的解决方法:

Ubuntu 20.04, 19.10 或者 19.04 中,可以通过 PPA 安装 libpng,安装 PPA 及 libpng12-0 的命令如下。

# 解决方法

1
2
3
sudo add-apt-repository ppa:linuxuprising/libpng12
sudo apt update
sudo apt install libpng12-0

# OPTEE/ATF 环境安装

我的虚拟机是 Ubuntu18.04

# (一)常规流程(比较考验网速)

  1. 安装必要依赖
1
2
3
4
5
6
7
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:i386 libtool libz1:i386 make \
mtools netcat python-crypto python-serial python-wand unzip uuid-dev \
xdg-utils xterm xz-utils zlib1g-dev
  1. 创建 opentee 目录
1
2
3
4
mkdir open-tee		//创建目录
cd open-tee //切换到创建的目录
repo init -u https://github.com/OP-TEE/manifest.git -m default_stable.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ -b 2.6.0 //初始化repo,使用清华的repo减少一些麻烦

  1. 打开.repo/manifest.xml,在 revision 后添加 clone-depth=“1”,因为一些 linux project,qemu project 太大,只克隆一层
1
time repo sync -j8 -f
  1. 获取 toolchain
1
2
cd build			//切换到build目录
make -f toolchain.mk toolchains //下载toolchain
  1. 开始编译使用 qemu 运行 OP-TEE 的工程

    准备好 toolchain 和 source code 之后,下一步就是编译工程,具体操作如下:

1
2
cd build		//切换到build目录
make -f qemu.mk all //编译工程
  1. 启动 qemu
1
2
cd build
make -f qemu.mk run-only
  1. 运行 OP-TEE 和 linux

    在 qemu 界面中输入字母 “c” 回车之后,就会启动两个 terminal,一个是 OP-TEE 的 terminal, 另外一个是 linux 的 terminal。

# (二)使用搭建好的的 optee

https://blog.csdn.net/chelseablue1905/article/details/85344941

注意在 build_qemu.sh 时会报错,

1
builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration

按照发布的补丁:https://git.qemu.org/?p=qemu.git;a=commit;h=75e5b70e6b5dcc4f2219992d7cffa462aa406af0

删除 qemu/util/memfd.c 中报错部分的 static 函数以及引用头文件重新编译即可

# 参考文章

http://www.fredyblog.cn/index.php/2021/06/28/arm-atf-optee/

https://icyshuai.blog.csdn.net/article/details/71499619

Author

y1seco

Posted on

2022-04-10

Updated on

2022-04-10

Licensed under

Comments

:D 一言句子获取中...