简介
AMD ZYNQ 7000 的 S_AXI 端口提供了外设访问 PS 内部外设控制器的接口,这其中包括 4 个 S_AXI_HP 端口以及两个 S_AXI_GP 端口。一般来说,可以访问的内部资源包括 DDR 控制器,QSPI 控制器,OCM,IIC,SPI 等。
本教程提供一个最小的参考设计,使上位机可以通过 PCIE 端口,通过 S_AXI_GP0 端口访问 ZYNQ 内部的 QSPI 控制器,用来更新 Flash 的启动分区。
软件方面,移植了 Embedded SW的相关驱动代码至 xdma 平台,并提供了一个简单的上位机测试程序,用来烧写启动镜像至 Flash 分区。
教程中所有涉及的设计及代码均在 Windows 和 Linux(Ubuntu20.04)平台下作了验证。
系统设计
1. 系统设计框图参考如下。在设计实例化了一个 XDMA IP,通过其 M_AXI 端口连接至 ZYNQ 的 S_AXI_GP0,以访问 PS QSPI 控制器。
2. BD 中需要分配 XDMA 的 M_AXI 地址如下,可以用 AMD Vivado 的自动地址分配工具完成。
3. 如果有访问其它外设的需求,详细的地址可以参考 UG585 的 Table 4‐1: System-Level Address Map。
UG585:https://docs.xilinx.com/r/en-US/ug585-zynq-7000-SoC-TRM
环境需求
硬件环境:
ZC706 开发板
Windows10/11 或者 Ubuntu20.04 主机
软件环境:
Vivado Design Suite 2022.2
Petalinux 2022.2
CMake > 2.15
Windows + Visual Studio 或者 Linux + GCC
代码结构
硬件:
HW 文件夹里面里面包含 Vivado 工程,直接用 Vivado 2022.2 打开。
固件:
此参考设计用 petalinux 制作系统启动镜像,完整的 petalinux 工程位于 fw 目录下。
执行 petalinux-build 可以编译。
执行 petalinux-package –boot –u-boot –force –fpga XXX.bit 生成 BOOT.BIN 文件。
软件:
qspi的驱动软件移植自 Embedded SW,主要的改动包括修改 xil_io.c 文件,用 xdma 的驱动替换默认的 Xil_In32 和 Xil_Out32 的实现。
软件支持 Windows 和 Linux 的主机,采用 cmake 环境。如果在 Windows 下,可以选择 Visual Studio 作为编译工具。编译过程如下:
1.cdsw
2.mkdir build
3.cmake .. && make
测试结果
在 petalinux 下生成的 BOOT.BIN 文件放在生成的上位机软件目录下,执行后可以看到更新 FLASH 的进度条在变化,说明 FLASH 被正常少烧写。
完成后切换到 QSPI FLASH 启动模式,上电观察启动过程。
-
amd
+关注
关注
25文章
5453浏览量
133987 -
控制器
+关注
关注
112文章
16240浏览量
177599 -
FlaSh
+关注
关注
10文章
1627浏览量
147819 -
上位机
+关注
关注
27文章
934浏览量
54750 -
Zynq
+关注
关注
10文章
608浏览量
47142
原文标题:开发者分享|使用 PCIE 更新 AMD ZYNQ™ 的 QSPI Flash 参考设计
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论