×

把PYNQ框架移植到ZC702开发板上

消耗积分:2 | 格式:zip | 大小:0.04 MB | 2022-12-05

陈超

分享资料个

描述

本项目我们将把PYNQ框架移植到ZC702开发板上。

介绍

ZC702 是 Xilinx 的官方开发板。该板采用 ZC7020 ZYNQ FPGA SoC。该板带有许多外设,包括 HDMI、CAN 总线、UART、嵌入式 Digilent JTAG 编程器、以太网、SD 卡、USB 主机、I2C 总线扩展器和许多支持 SMBUS 的 PMIC,用于监控 SoC 轨。

pYYBAGOIJ4yAbgukAAPAALf2u8I088.png
 

PYNQ 是 Xilinx 的一个项目,它为 FPGA 带来了 Python 级别的生产力。它允许设计人员导入在 PYNQ 术语中称为覆盖的硬件设计,并编写 Python 代码来寻址和配置内核。

与裸机设计相比,这可以将开发速度提高一个数量级。截至 2020 年,PYNQ 使用带有 UBUNTU 28.04 Rootfs 的 Petalinux 内核。

ZC702开发板不支持官方PYNQ框架。

pYYBAGOIO_yAcPZsAACfZZz7HXE379.jpg
 

将 PYNQ 移植到新板的官方方法是在 UBuntu 主机上下载框架并创建使用板 BSP 和板自定义参数的自定义板文件。

在这里,我们将采用涉及重新使用官方 PYNQ 2.5 映像的捷径。

以简单的方式移植 PYQN。

下载 PYNQ 映像 2.5 并将其刻录到 SD 卡。这将使用包含内核和设备树的 FATFS 分区和包含 rootfs 的 ext4 分区对 SD 卡进行分区,在 PYNQ 的情况下,rootfs 是 UBUNTU 18.0 根文件系统。

要在 ZC702 上启动电路板,我们必须自定义 PYNQ V2.5 映像的默认内核,该映像针对 ZC7020 的 400 针版本到 ZC702 上的 484 针 SOC。

步骤1

创建 Vivado 设计。我创建了一个针对 ZC702 的自定义 Vivado 设计,其中有一个 BRAM、一个针对内置 LED 和开关的 GPIO 以及一个部署在 PL 上的 AXI IIC 内核,它共享位于 FMC 上的相同 I2C 引脚。

第2步

编译设计并将其导出。同时创建一个 SDK FSBL 应用程序以及一个 Hello world 应用程序。另外创建一个名为 PYQN_ZC702 的文件夹并导出生成的比特流和 .tcl 文件。我们将来会用它来证明 PYNQ 框架工作正常。

第三步

安装 Virtual Box,安装 Ubuntu 18.0,然后安装 Vivado 2019.1 以及 Petalinux 2019.1。然后将完整的 Vivado 项目文件夹复制到 Ubuntu VM 上。

第4步

确保 Vivado 和 Petalinux 都在用户路径中。然后,从项目目录启动 Petalinux 并读取导出的 hdf 项目文件。

步骤#5

为 ZC702 构建自定义内核。更改 rootfs 引导设置,使其从 SD 卡引导。然后禁用网络启动。此外启用常用实用程序,例如 i2cdetect 和 fpga-manager。

petalinux-build

步骤#6

构建内核后,通过发出以下命令创建 boot.img 文件

petalinux-package --boot --format BIN --fsbl ./images/linux/zynq_fsbl.elf --fpga ./images/linux/download.bit --u-boot
//run this from within image directory

这将 uboot 引导加载程序、内核打包在一个文件中。最后使用我们之前烧录PYNQ镜像的SD卡,用新文件覆盖启动镜像文件和设备树。

以上步骤完成了PYNQ移植到ZC702的过程。将SD卡放在ZC702上,将boot开关的位置改为all ON,SoC从SD卡启动。

连接USB串口显示PYNQ正常启动。您可能需要修改uboot 设置,以便uboot 可以从SD ​​卡的第二个分区读取rootfs。

将以太网电缆从主机连接到 ZC702

一旦 PYNQ 启动,我们就可以通过主机笔记本电脑端连接到它。然后打开 Web 浏览器并导航到 pynq:9090。这将带来如下所示的默认页面。PYNQ 的默认密码是xilinx

现在我们已经启动了 PYNQ,下一步是测试它如何在 ZC702 上运行。使用 WinSCP 传输我们之前在 PYNQ 文件夹中创建的两个文件。

测试 PYNQ

为测试 PYNQ 框架,将测试自定义 Vivado 设计。下面的框图显示了连接到 AXI 互连的 BRAM IP。这样做的目的是从PS端读写BRAM。

poYBAGOIO_6ARXrZAAC3Q5vHQCc018.png
 

通过 scp 复制包含 iPython Notebook 笔记本、ZYNQ 上的 tcl 和比特流文件的文件夹,然后导航至 pynq:9090\ 文件夹位置打开它。

首先加载比特流。然后生成大量数据并通过内存映射调用写入 BRAM。然后通过回读数据并将其打印在笔记本电脑上来确认数据。

poYBAGOIPAKAOAdwAAHCHgy6Dx8689.png
 

结论

这样就完成了演示。在这个项目中,我们展示了如何通过避免完全重新编译 rootfs 来轻松创建自定义 PYNQ 发行版。通过向 BRAM IP 读取和写入数据来验证设计。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !