移植OP-TEE到Zynq MPSoC zcu102开发板

一、前言

因实验需要,本人需要在Zynq MPSoC开发板上移植OP-TEE,该博客记录移植OP-TEE的过程。由于本人移植过程中踩了不少坑,也看了前人的很多文章,发现关于Zynq MPSoC开发板移植OP-TEE的文章几乎没有,因此专门写一篇文章,不仅记录本人移植的过程,也希望能给后人一些参考。

在移植OP-TEE到开发板之前,建议先在QEMU上成功搭建一个环境,在有QEMU搭建的基础之后,再在对应的ARM开发板上移植OP-TEE。

关于QEMUv8搭建OPTEE,可以参考我的这篇文章:QEMU_v8搭建OP-TEE运行环境

二、环境准备&参考资料

正如QEMUv8搭建OP-TEE一样,移植OPTEE到Zynq同样需要先准备对应的环境。

软件环境:Ubuntu 20.04,对应的前置依赖,网络畅通(浏览器和Terminal都能连外网)
硬件环境:Zynq MPSoC zcu102开发板

参考的文档:OPTEE文档——Zynq MPSoC

大部分的编译过程可以参考这个文档,但这个文档里还有一些命令需要补充。

三、拉取代码

首先新建一个文件夹,用于拉取optee zynq的代码,进入该文件夹后执行如下命令。

repo init -u https://github.com/OP-TEE/manifest.git -m zynqmp.xml
repo sync

注意:因为在环境准备中已经解决了连外网的问题,因此这里repo不需要再引用清华的源,可以直接拉取。

这一步,repo init大约耗时1分钟,repo sync大约需要十分钟。

四、编译

拉取代码完成后,如果没有报错,可以进行之后的步骤。进入build目录后,执行如下命令

cd build
make toolchains
make PLATFORM=zynqmp-zcu102 all

make toolchain命令耗时3-5分钟
make PLATFORM=zynqmp-zcu102 all命令耗时半小时左右

注意,这里执行make PLATFORM=zynqmp-zcu102 all之后,并不会直接生成对应的两个镜像,还需要再继续执行命令才可以生成对应的BOOT.bin和zynqmp-zcu102.ub。

根据makefile的提示,这里的make PLATFORM=zynqmp-zcu102 all编译的是tfa,optee-os,u-boot,linux,dtbo,buildroot。并没有编译bootimage(也就是生成两个镜像的命令)。

五、添加firmware并生成镜像

根据官方文档的提示,如果不添加赛灵思官方的firmware,那么将无法生成最终的BOOT.bin和zynqmp-zcu102.ub。
在这里插入图片描述
因此,我们需要找到对应的两个firmware image。由于makefile中指定的版本为2021.1版本,因此我们在该网页Xilinx wiki page中找2021.1版本对应的prebuilt image,即下面截图的这个压缩文件。

在这里插入图片描述
将该文件下载后,不用解压,直接拷贝到optee工程的根目录下(即当前build目录的上一级目录)。之后执行下面的命令,解压该firmware。回到build路径下运行下面的命令

make PLATFORM=zynqmp-zcu102 firmware

该命令可以解压并编译该firmware

之后再执行下面的两条命令,即可生成BOOT.bin和zynqmp-zcu102.ub。

make PLATFORM=zynqmp-zcu102 bootimage #生成BOOT.bin
make PLATFORM=zynqmp-zcu102 fitimage #生成zynqmp-zcu102.ub

这两个文件可以在build目录的zynqmp目录下找到。

六、复制到sd卡并启动

将上面下载的2021-zcu102-release.tar.xz解压,拷贝到zcu102板子的sd卡中,再将上面编译生成的两个镜像文件复制到sd卡中,替换原有的BOOT.bin和image.ub。

之后板子上电,以sd卡方式启动,USB_UART口连线连接到电脑上,在已经安装了串口驱动的情况下,会有4个串口,具体是哪一个可能需要都试一下才知道。以我的为例,我的串口是com7-com10,只有com9是可以正常使用的。

之后打开串口工具,比如SecureCRT或者Putty,我用的是Putty。根据文档的提示,在进入U-boot autoboot之前,将其中断,并执行下面的指令。

在这里插入图片描述

fatload mmc 0 0x30000000 zynqmp-zcu102.ub
bootm 0x30000000

这样OP-TEE就启动成功了,可以执行optee_example_hello_world和xtest进行测试。可以看到结果测试成功。

下面是执行xtest的结果

在这里插入图片描述
到这里就算将OP-TEE移植成功了。

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值