本项目我们将把PYNQ框架移植到ZC702开发板上。
ZC702 是 Xilinx 的官方开发板。该板采用 ZC7020 ZYNQ FPGA SoC。该板带有许多外设,包括 HDMI、CAN 总线、UART、嵌入式 Digilent JTAG 编程器、以太网、SD 卡、USB 主机、I2C 总线扩展器和许多支持 SMBUS 的 PMIC,用于监控 SoC 轨。
PYNQ 是 Xilinx 的一个项目,它为 FPGA 带来了 Python 级别的生产力。它允许设计人员导入在 PYNQ 术语中称为覆盖的硬件设计,并编写 Python 代码来寻址和配置内核。
与裸机设计相比,这可以将开发速度提高一个数量级。截至 2020 年,PYNQ 使用带有 UBUNTU 28.04 Rootfs 的 Petalinux 内核。
ZC702开发板不支持官方PYNQ框架。
将 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。
创建 Vivado 设计。我创建了一个针对 ZC702 的自定义 Vivado 设计,其中有一个 BRAM、一个针对内置 LED 和开关的 GPIO 以及一个部署在 PL 上的 AXI IIC 内核,它共享位于 FMC 上的相同 I2C 引脚。
编译设计并将其导出。同时创建一个 SDK FSBL 应用程序以及一个 Hello world 应用程序。另外创建一个名为 PYQN_ZC702 的文件夹并导出生成的比特流和 .tcl 文件。我们将来会用它来证明 PYNQ 框架工作正常。
安装 Virtual Box,安装 Ubuntu 18.0,然后安装 Vivado 2019.1 以及 Petalinux 2019.1。然后将完整的 Vivado 项目文件夹复制到 Ubuntu VM 上。
确保 Vivado 和 Petalinux 都在用户路径中。然后,从项目目录启动 Petalinux 并读取导出的 hdf 项目文件。
为 ZC702 构建自定义内核。更改 rootfs 引导设置,使其从 SD 卡引导。然后禁用网络启动。此外启用常用实用程序,例如 i2cdetect 和 fpga-manager。
petalinux-build
构建内核后,通过发出以下命令创建 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。
通过 scp 复制包含 iPython Notebook 笔记本、ZYNQ 上的 tcl 和比特流文件的文件夹,然后导航至 pynq:9090\ 文件夹位置打开它。
首先加载比特流。然后生成大量数据并通过内存映射调用写入 BRAM。然后通过回读数据并将其打印在笔记本电脑上来确认数据。
结论
这样就完成了演示。在这个项目中,我们展示了如何通过避免完全重新编译 rootfs 来轻松创建自定义 PYNQ 发行版。通过向 BRAM IP 读取和写入数据来验证设计。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !