0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用PCIE更新AMD ZYNQ的QSPI Flash参考设计

XILINX开发者社区 来源:XILINX开发者社区 2023-11-17 10:02 次阅读

本文作者:AMD 工程师Gao Jackie

简介

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 控制器。

036c1be4-847b-11ee-939d-92fbcf53809c.png

2. BD 中需要分配 XDMA 的 M_AXI 地址如下,可以用 AMD Vivado 的自动地址分配工具完成。

037f9f0c-847b-11ee-939d-92fbcf53809c.png

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
    amd
    +关注

    关注

    25

    文章

    5202

    浏览量

    132639
  • 控制器
    +关注

    关注

    112

    文章

    15240

    浏览量

    171245
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146717
  • 上位机
    +关注

    关注

    26

    文章

    861

    浏览量

    54053
  • Zynq
    +关注

    关注

    9

    文章

    600

    浏览量

    46644

原文标题:开发者分享|使用 PCIE 更新 AMD ZYNQ™ 的 QSPI Flash 参考设计

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    编译可在QSPI Flash上运行的程序

    在前文中已经实现了一个能够在 MDK 平台进行下载代码到 QSPI Flash 中的下载算法,以及一个能跳转执行应用程序的 2nd Bootloader,但若想将代码下载到 QSPI Flas
    的头像 发表于 03-31 09:50 2387次阅读
    编译可在<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>上运行的程序

    使用Zynq设备和Tandem配置的PCIe BOOTUP时间有什么要求?

    嗨,PCIe-Spec定义在稳定供电后100ms,PCIe设备必须为链路训练做好准备。使用7系列Zynq设备无法达到此时间。我使用了两种方法来减少启动时间: - 优化FSBL以达到SPI控制器的最大
    发表于 06-09 16:42

    Zynq无法设置为从QSPI闪存启动怎么解决?

    为了确保正确回退到金启动,AR#67221规定QSPI闪存的D2和D3数据条应连接到4K7上拉。但是看看Zynq xc7z030fbg676,这些引脚也可用作配置模式引脚。QSPI D2 =模式引脚
    发表于 06-09 17:24

    【正点原子FPGA连载】第三十六章基于TCP协议的远程更新QSPI Flash实验-领航者 ZYNQ 之嵌入式开发

    原子公众号,获取最新资料第三十六章基于TCP协议的远程更新QSPI Flash实验在《程序固化实验》中,我们了解了如何通过SDK软件将BOOT.bin文件固化到QSPI中,这种现场通过
    发表于 09-08 11:08

    【正点原子FPGA连载】第三十七章基于UDP协议的远程更新QSPI Flash实验-领航者 ZYNQ 之嵌入式开发

    原子公众号,获取最新资料第三十七章基于UDP协议的远程更新QSPI Flash实验上一实验我们利用TCP协议实现了远程更新QSPI。为了满足
    发表于 09-08 11:10

    什么是QSPI?如何使用QSPIQSPI Flash进行通信呢?

    吧,直接 16 根数据信号线,速度自然变得更快了,但使用 SPI FLash,不就是图一个线少嘛。  为了方便描述,我们将使用 QSPI 接口连接的 SPI Flash 称之为 QSPI
    发表于 03-17 15:17

    Zynq PCIe电路设计

    ZYNQ7045的PCIE电路设计,板卡使用插针式连接器,引出了PCIE信号,未使用金手指。为了插入机箱设计了扩展版,插座与插针对应,带有PCIE金手指。目前遇到的问题是,当板卡连接扩
    发表于 05-16 11:07

    LS1046A上的QSPI Flash不可擦除怎么处理?

    在我定制的LS1046A板上,我们只使用了一个QSPI Flash S25FS512SDSMFI011,通过QSPI_A_CS0/QSPI_A_SCK/
    发表于 05-18 07:56

    使用 PCIE 更新 AMD ZYNQ™ 的 QSPI Flash 参考设计

    的内部资源包括 DDR 控制器,QSPI 控制器,OCM,IIC,SPI 等。 本教程提供一个最小的参考设计,使上位机可以通过 PCIE 端口,通过 S_AXI_GP0 端口访问 ZYNQ 内部
    发表于 11-30 18:49

    浅谈Zynq Qspi控制器的三种模式

    Zynq Qspi控制器支持三种模式:I/O模式、线性地址模式和传统SPI模式,其中线性地址模式双片选支持最大的线性地址空间为32MB,可通过PS DMA读取。
    发表于 07-02 09:34 1.9w次阅读
    浅谈<b class='flag-5'>Zynq</b> <b class='flag-5'>Qspi</b>控制器的三种模式

    如何使用QSPI Flash控制器开发板上的 QSPI Flash进行写读操作

    学习内容 本文首先介绍FlashQSPI Flash控制器的相关内容,然后使用 QSPI Flash 控制器,开发板上的
    的头像 发表于 06-10 17:08 1.2w次阅读
    如何使用<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>控制器开发板上的 <b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>进行写读操作

    【STM32H7】第20章 ThreadX GUIX汉字显示(QSPI Flash全字库)

    【STM32H7】第20章 ThreadX GUIX汉字显示(QSPI Flash全字库)
    发表于 12-02 09:36 14次下载
    【STM32H7】第20章 ThreadX GUIX汉字显示(<b class='flag-5'>QSPI</b> <b class='flag-5'>Flash</b>全字库)

    QSPI flash上运行毫米波芯片的测试代码

    QSPI flash上运行毫米波芯片的测试代码
    发表于 10-28 12:00 0次下载
    在<b class='flag-5'>QSPI</b> <b class='flag-5'>flash</b>上运行毫米波芯片的测试代码

    微控制器外置QSPI Flash选型的注意事项

    为了扩展微控制器可用的 Flash 空间,用户可以使用 QSPI 接口连接 QSPI Flash;为了让用户能尽量像使用片内 Flash
    的头像 发表于 04-07 09:23 1391次阅读

    Zynq中程序存储位置和设置方法

    Zynq中存储程序的地方有QSPI Flash,SD卡,EMMC。
    的头像 发表于 10-17 17:00 780次阅读