移植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移植成功了。

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zynq Ultrascale+ ZCU106是一款由赛灵思(Xilinx)推出的高性能嵌入式开发平台。它集成了一颗Zynq Ultrascale+ MPSoC芯片,该芯片拥有高性能的ARM Cortex-A53和ARM Cortex-R5处理器核心,以及FPGA可编程逻辑资源。ZCU106开发板以其强大的计算能力和灵活的可编程性,适用于多种应用领域。 在ZCU106资料中,我们可以找到以下内容: 1. 芯片手册和技术参考手册:这些手册提供了关于Zynq Ultrascale+ MPSoC芯片架构、性能特性和配置选项的详细说明。它们指导开发人员正确使用芯片并充分发挥其能力。 2. 开发板用户指南:该指南介绍了ZCU106开发板的硬件设计、接口定义和连接方式。它还包含了开发板的使用说明和调试技巧,帮助使用者快速上手并进行开发。 3. 软件开发工具:赛灵思提供了一系列软件开发工具,包括Xilinx SDK、Vivado Design Suite和PetaLinux等。这些工具可以帮助开发者进行FPGA设计、ARM嵌入式软件开发和系统集成等任务。 4. 示例设计和应用笔记:赛灵思为ZCU106开发板提供了丰富的示例设计和应用笔记,涵盖了各种应用场景,如图像处理、视频编解码、机器学习等。这些示例设计和应用笔记提供了具体的实现代码和使用说明,帮助开发者快速上手并进行自己的定制开发。 总之,Zynq Ultrascale+ ZCU106资料提供了全面灵活的参考资源,帮助开发者理解和使用ZCU106开发板以及其搭载的Zynq Ultrascale+ MPSoC芯片,进行高性能嵌入式系统的设计和开发。无论是初学者还是经验丰富的开发者,都可以通过这些资料获得所需的指导和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值