当前位置:   article > 正文

OP-TEE在HIKEY上的编译、运行与测试_optee xtest编译

optee xtest编译

笔者使用的是UBUNTU14.04 版本,OP-TEE官方的方法尝试失败,故采用如下方法移植成功:(注意:由于OP-TEE更新后删除了optee_linux_driver,导致此方法已经失效)
1. 新建目录并下载相应交叉编译器,并设置环境变量。

mkdir arm-tc arm64-tc
tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz
tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz
export PATH=${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH
  • 1
  • 2
  • 3
  • 4

若已经下载过官方的OP-TEE,可以通过/build目录下运行make toolchains命令启动toolchains.mk脚本进行下载。
2. 下载并编译Linux kernel:

git clone -b hikey --depth 1 https://github.com/96boards-hikey/linux.git

export LINUX_DIR=${PWD}/linux
export LOCALVERSION="-linaro-hikey"

cd ${LINUX_DIR}
make distclean 
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig 
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j`nproc` Image modules hi6220-hikey.dtb
cd ..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

注意:这里的$(PWD)默认为根目录,若根目录存储空间不足,建议设置路径到存储空间充足的地方去。
3. 构建OP-TEE的Linux驱动:

git clone https://github.com/OP-TEE/optee_linuxdriver.git

export OPTEE_LINUXDRIVER_DIR=${PWD}/optee_linuxdriver

cd ${LINUX_DIR}
export LOCALVERSION="-linaro-hikey"
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- M=${OPTEE_LINUXDRIVER_DIR} clean modules
cd ..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

optee_linuxdriver/core/optee.ko
optee_linuxdriver/armtz/optee_armtz.ko
这个编译过程将会生成如上的关键文件,便于查询编译成功与否。
4. 构建Hikey 的UEFI:

git clone -b hikey --depth 1 https://github.com/96boards/edk2.git linaro-edk2
git clone -b hikey_gendrv --depth 1 https://github.com/linaro-swg/arm-trusted-firmware.git
git clone -b hikey --depth 1 https://github.com/96boards/LinaroPkg.git
git clone --depth 1 git://git.linaro.org/uefi/uefi-tools.git
git clone --depth 1 https://github.com/OP-TEE/optee_os.git

export AARCH64_TOOLCHAIN=GCC49
export EDK2_DIR=${PWD}/linaro-edk2
export UEFI_TOOLS_DIR=${PWD}/uefi-tools
export OPTEE_OS_DIR=${PWD}/optee_os

cd ${EDK2_DIR}
${UEFI_TOOLS_DIR}/uefi-build.sh -c ../LinaroPkg/platforms.config -b RELEASE -a ../arm-trusted-firmware -s ../optee_os hikey
cd ..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

arm-trusted-firmware/build/hikey/release/fip.bin
注意查看是否成功生成如上文件。
5. 下载并编译OP-TEE client

git clone https://github.com/OP-TEE/optee_client.git

export OPTEE_CLIENT_DIR=${PWD}/optee_client

cd ${OPTEE_CLIENT_DIR}
make CROSS_COMPILE=aarch64-linux-gnu- clean all
cd ..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

optee_client/out/export/bin/tee-supplicant
optee_client/out/export/lib/libteec.so.1.0
注意查看是否成功生成如上文件。
6. 构建测试用例

git clone https://github.com/OP-TEE/optee_test.git

export OPTEE_TEST_DIR=${PWD}/optee_test

cd ${OPTEE_TEST_DIR}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

设置两个关键环境变量:
CROSS_COMPILE_HOST: 用于编译非安全客户端应用程序的交叉编译程序。(host/xtest)。
CROSS_COMPILE_TA: 用于编译可信任的应用程序的交叉编译程序 (ta)。
32位安全的用户建立和64位非安全区(默认):

make CROSS_COMPILE_HOST=aarch64-linux-gnu- CROSS_COMPILE_TA=arm-linux-gnueabihf- TA_DEV_KIT_DIR=${OPTEE_OS_DIR}/out/arm-plat-hikey/export-ta_arm32 CFG_DEV_PATH=${PWD}/.. O=${OPTEE_TEST_DIR}/out clean all
cd ..
  • 1
  • 2

64位安全区建设和64位非安全区:

make CROSS_COMPILE_HOST=aarch64-linux-gnu- CROSS_COMPILE_TA=aarch64-linux-gnu- TA_DEV_KIT_DIR=${OPTEE_OS_DIR}/out/arm-plat-hikey/export-ta_arm64 CFG_DEV_PATH=${PWD}/.. O=${OPTEE_TEST_DIR}/out clean all
cd ..
  • 1
  • 2

下面的文件现在已建立:
optee_test/out/xtest/xtest
optee_test/out/ta/create_fail_test/c3f6e2c0-3548-11e1-b86c0800200c9a66.ta
optee_test/out/ta/crypt/cb3e5ba0-adf1-11e0-998b0002a5d5c51b.ta
optee_test/out/ta/storage/b689f2a7-8adf-477a-9f9932e90c0ad0a2.ta
optee_test/out/ta/concurrent/e13010e0-2ae1-11e5-896a0002a5d5c51b.ta
optee_test/out/ta/os_test/5b9e0e40-2636-11e1-ad9e0002a5d5c51b.ta
optee_test/out/ta/rpc_test/d17f73a0-36ef-11e1-984a0002a5d5c51b.ta
optee_test/out/ta/sims/e6a33ed4-562b-463a-bb7eff5e15a493c8.ta
optee_test/out/ta/storage_benchmark/f157cda0-550c-11e5-a6fa0002a5d5c51b.ta
7. 复制到文件系统中的文件
注意:确保完成构建op-tee驱动程序,客户端和测试套件。
下载最新的debian文件系统,可以通过此链接下载
也可以通过如下命令进行下载:

wget https://builds.96boards.org/snapshots/hikey/linaro/debian/410/hikey-jessie_developer_20160225-410.emmc.img.gz
gunzip *.img.gz
  • 1
  • 2

笔者使用的是此版本,未尝试其他版本。
使用Linaro的修改方案’android-tools-fsutils’安装simg2img和编译_ext4fs,安装路径
下载完成后进行安装:

sudo dpkg -i --force-all android-tools-fsutils_*.deb
  • 1

然后对文件系统进行打包并加载:

simg2img hikey-jessie_developer_20160225-410.emmc.img raw.img
mkdir mnt
sudo mount raw.img mnt
cd mnt
  • 1
  • 2
  • 3
  • 4

然后将需要移植的文件移动到此文件系统下:

sudo cp ${OPTEE_LINUXDRIVER_DIR}/core/optee.ko lib/modules/3.18.0-linaro-hikey/extra/core/
sudo cp ${OPTEE_LINUXDRIVER_DIR}/armtz/optee_armtz.ko lib/modules/3.18.0-linaro-hikey/extra/armtz/

sudo cp ${OPTEE_CLIENT_DIR}/out/export/bin/tee-supplicant usr/bin/
sudo cp ${OPTEE_CLIENT_DIR}/out/export/lib/libteec.so.1.0 usr/lib/aarch64-linux-gnu/
sudo ln -sf libteec.so.1.0 usr/lib/aarch64-linux-gnu/libteec.so.1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

最后做以下:

sudo cp ${OPTEE_TEST_DIR}/out/xtest/xtest usr/bin/
sudo mkdir lib/optee_armtz
sudo cp $(find ${OPTEE_TEST_DIR} -name *.ta) lib/optee_armtz/

sudo mkdir -p data/tee

cd ..
sudo make_ext4fs -o -L rootfs -l 1500M -s jessie.updated.img mnt/
sudo umount mnt/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

注意:不要复制*.TA文件到一个不同的路径不然Xtest将延时或失败。
8. 刷写二进制文件到emmc中(确保已经生成了jessie.updated.img和fip.bin):

wget https://builds.96boards.org/snapshots/hikey/linaro/uefi/latest/l-loader.bin
wget https://builds.96boards.org/snapshots/hikey/linaro/uefi/latest/ptable-linux-4g.img
wget https://builds.96boards.org/snapshots/hikey/linaro/uefi/latest/nvme.img
wget https://builds.96boards.org/snapshots/hikey/linaro/debian/latest/boot-fat.uefi.img.gz
gunzip *.img.gz
  • 1
  • 2
  • 3
  • 4
  • 5

刷写过程要求在recovery模式下(具体操作):
若HIKEY板在运行中:关掉HIKEY。
连接HIKEY的串口转USB线到主机。(用以监视调试过程)。
连接J15的PIN1-PIN2以及PIN5-PIN6。(此为recovery模式)
连接HIKEY的微型USB到主机。(用以进行fastboot 烧写)
运行脚本hisi-idt.py向HIKEY板烧写l-loader.bin。
注意:如果记录在hisi-idt.py的dev是不可用的串口,调整命令行下通过手动设置串行端口与“D / dev / ttyusbx”其中X通常0/1)

$ sudo python hisi-idt.py --img1=l-loader.bin
  • 1

不需要重新启动:
运行如下命令进行fastboot(注意不要乱了顺序)

$ sudo fastboot flash ptable ptable-linux-4g.img
$ sudo fastboot flash fastboot fip.bin
$ sudo fastboot flash nvme nvme.img
$ sudo fastboot flash boot boot-fat.uefi.img
$ sudo fastboot flash system jessie.updated.img
  • 1
  • 2
  • 3
  • 4
  • 5

关闭HIKEY板,移除PIN5-PIN6的连接,启动HIKEY板。
注意:不要插入SD卡,否则会报错“Fail to start BootNext”
9. 运行和测试
在HIKEY的命令行中,输入:

depmod
modprobe optee_armtz
tee-supplicant&
xtest
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/129988
推荐阅读
相关标签
  

闽ICP备14008679号