sudo apt-get install samba smbclient git make expect vim net-tools python3-pip python2.7 binfmt-support qemu qemu-user-static openssl
sudo apt-get install apache2
sudo /etc/init.d/apache2 restart
sudo apt-get update
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
cd git-repo/
cp repo ~/bin/
mkdir ~/bin/
cp repo ~/bin/
chmod a+x ~/bin/repo
ssh-keygen -t rsa -C "bgk11xxxx@live.com"
cat ~/.ssh/id_rsa.pub
git config --global user.email "bgk11xxxx@live.com"
git config --global user.name "bgk11xxxx"
git config --global credential.helper store
cd
cat .gitconfig
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 libcap-dev libfdt-dev libftdi-dev libglib2.0-dev libgmp-dev libhidapi-dev libmpc-dev libncurses5-dev libpixman-1-dev libssl-dev libtool make mtools netcat ninja-build python3-crypto python3-pycryptodome python3-pyelftools python3-serial rsync unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev
mkdir optee
cd optee/
export PATH=/home/ubuntu/bin:$PATH
cd /usr/bin/
sudo ln -sf python3 python
cd -
repo init -u git@github.com:OP-TEE/manifest.git -m qemu_v8.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 3.17.0
ls -a
rm -rf .repo/
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.17.0
# 修改.repo/manifests/qemu_v8.xml
repo sync -j16
git clone --branch edk2-stable202105 git://github.com/tianocore/edk2.git
git clone --branch edk2-stable202105 https://github.com/tianocore/edk2.git
cd edk2/
git submodule sync
git submodule update --init
cd build
make -f toolchain.mk toolchains
# 修改启动项build/qemu_v8.mk
make -f qemu_v8.mk all -j16
make -f qemu_v8.mk run-only
# 修改.repo/manifests/qemu_v8.xml
--- a/qemu_v8.xml
+++ b/qemu_v8.xml
@@ -20,10 +20,10 @@
<!-- Misc gits -->
<project path="buildroot" name="buildroot/buildroot.git" revision="refs/tags/2021.11" clone-depth="1" />
- <project path="edk2" name="tianocore/edk2.git" revision="refs/tags/edk2-stable202202" sync-s="true" />
+ <!-- project path="edk2" name="tianocore/edk2.git" revision="refs/tags/edk2-stable202202" sync-s="true" />-->
<project path="mbedtls" name="Mbed-TLS/mbedtls.git" revision="refs/tags/mbedtls-2.26.0" clone-depth="1" />
<project path="optee_rust" name="apache/incubator-teaclave-trustzone-sdk.git" revision="3272b38b013395e3376a38af6315633239d26c1c" />
<project path="qemu" name="qemu/qemu.git" revision="refs/tags/v7.0.0" clone-depth="1" />
- <project path="trusted-firmware-a" name="TF-A/trusted-firmware-a.git" revision="refs/tags/v2.6" clone-depth="1" remote="tfo" />
+ <project path="trusted-firmware-a" name="TF-A/trusted-firmware-a.git" revision="refs/tags/v2.6" clone-depth="1" remote="tfo" />
<project path="u-boot" name="u-boot.git" revision="refs/tags/v2021.04" remote="u-boot" clone-depth="1" />
</manifest>
# 修改启动项build/qemu_v8.mk
diff --git a/qemu_v8.mk b/qemu_v8.mk
index c98e460..72860b2 100644
--- a/qemu_v8.mk
+++ b/qemu_v8.mk
@@ -11,7 +11,7 @@ COMPILE_S_KERNEL ?= 64
################################################################################
# If you change this, you MUST run `make arm-tf-clean` first before rebuilding
################################################################################
-TF_A_TRUSTED_BOARD_BOOT ?= n
+TF_A_TRUSTED_BOARD_BOOT ?= y
BR2_ROOTFS_OVERLAY = $(ROOT)/build/br-ext/board/qemu/overlay
BR2_ROOTFS_POST_BUILD_SCRIPT = $(ROOT)/build/br-ext/board/qemu/post-build.sh
@@ -35,7 +35,7 @@ include common.mk
DEBUG ?= 1
# Option to use U-Boot in the boot flow instead of EDK2
-UBOOT ?= n
+UBOOT ?= y
# Option to build with GICV3 enabled
GICV3 ?= y
@@ -146,7 +146,7 @@ TF_A_EXPORTS ?= \
TF_A_DEBUG ?= $(DEBUG)
ifeq ($(TF_A_DEBUG),0)
-TF_A_LOGLVL ?= 30
+TF_A_LOGLVL ?= 40
TF_A_OUT = $(TF_A_PATH)/build/qemu/release
else
TF_A_LOGLVL ?= 50
@@ -423,9 +423,9 @@ QEMU_VIRT = true
QEMU_XEN ?= -drive if=none,file=$(XEN_EXT4),format=raw,id=hd1 \
-device virtio-blk-device,drive=hd1
else
-QEMU_CPU ?= max,sve=off
-QEMU_SMP ?= 2
-QEMU_MEM ?= 1057
+QEMU_CPU ?= cortex-a53
+QEMU_SMP ?= 4
+QEMU_MEM ?= 2048
QEMU_VIRT = false
endif
1、整体集成构建
基于官方构建,加入自定义ca/ta后一体构建到rootfs,在qemu上运行
$ mkdir -p <optee-project>
$ cd <optee-project>
$ repo init -u https://github.com/OP-TEE/manifest.git -m ${TARGET}.xml [-b ${BRANCH}]
$ repo sync -j4 --no-clone-bundle
$ cd <optee-project>/build
$ make -j2 toolchains
$ make -j `nproc`
$ mkdir optee
$ cd optee
$ repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml
$ repo sync
$ cd build
$ make toolchains
$ make run
在optee_examples目录参照hello world拷贝一份代码
将项目相关的换成自定名字
特别注意UUID需要更改,ca和ta要对应
否则运行是会报如下错误
failed with code 0xffff0008 origin 0x3
Demo添加完毕,构建并运行qemu
make -f qemu_v8.mk all -j4
make -f qemu_v8.mk run-only
运行结果
2、单独构建optee_examples
按照官方repo的代码结构
构建optee_client
将install文件拷贝到optee_examples目录,修改顶层CMakeLists.txt
指定gcc并构建ca
cmake -DCMAKE_C_COMPILER=/home/ubuntu/optee3/toolchains/aarch32/bin/arm-linux-gnueabihf-gcc ..
也可以make单编
构建ta,配置环境变量
进入到项目的目录
参考
关于OP-TEE代码中对UUID的设置导致编译出错_teec_opensession failed with code 0xffff000c origi_whcz的博客-CSDN博客