簡(jiǎn)介
AMD ZYNQ 7000 的 S_AXI 端口提供了外設(shè)訪問(wèn) PS 內(nèi)部外設(shè)控制器的接口,這其中包括 4 個(gè) S_AXI_HP 端口以及兩個(gè) S_AXI_GP 端口。一般來(lái)說(shuō),可以訪問(wèn)的內(nèi)部資源包括 DDR 控制器,QSPI 控制器,OCM,IIC,SPI 等。
本教程提供一個(gè)最小的參考設(shè)計(jì),使上位機(jī)可以通過(guò) PCIE 端口,通過(guò) S_AXI_GP0 端口訪問(wèn) ZYNQ 內(nèi)部的 QSPI 控制器,用來(lái)更新 Flash 的啟動(dòng)分區(qū)。
軟件方面,移植了 Embedded SW的相關(guān)驅(qū)動(dòng)代碼至 xdma 平臺(tái),并提供了一個(gè)簡(jiǎn)單的上位機(jī)測(cè)試程序,用來(lái)燒寫(xiě)啟動(dòng)鏡像至 Flash 分區(qū)。
教程中所有涉及的設(shè)計(jì)及代碼均在 Windows 和 Linux(Ubuntu20.04)平臺(tái)下作了驗(yàn)證。
系統(tǒng)設(shè)計(jì)
1. 系統(tǒng)設(shè)計(jì)框圖參考如下。在設(shè)計(jì)實(shí)例化了一個(gè) XDMA IP,通過(guò)其 M_AXI 端口連接至 ZYNQ 的 S_AXI_GP0,以訪問(wèn) PS QSPI 控制器。
2. BD 中需要分配 XDMA 的 M_AXI 地址如下,可以用 AMD Vivado 的自動(dòng)地址分配工具完成。
3. 如果有訪問(wèn)其它外設(shè)的需求,詳細(xì)的地址可以參考 UG585 的 Table 4‐1: System-Level Address Map。
UG585:https://docs.xilinx.com/r/en-US/ug585-zynq-7000-SoC-TRM
環(huán)境需求
硬件環(huán)境:
ZC706 開(kāi)發(fā)板
Windows10/11 或者 Ubuntu20.04 主機(jī)
軟件環(huán)境:
Vivado Design Suite 2022.2
Petalinux 2022.2
CMake > 2.15
Windows + Visual Studio 或者 Linux + GCC
代碼結(jié)構(gòu)
硬件:
HW 文件夾里面里面包含 Vivado 工程,直接用 Vivado 2022.2 打開(kāi)。
固件:
此參考設(shè)計(jì)用 petalinux 制作系統(tǒng)啟動(dòng)鏡像,完整的 petalinux 工程位于 fw 目錄下。
執(zhí)行 petalinux-build 可以編譯。
執(zhí)行 petalinux-package –boot –u-boot –force –fpga XXX.bit 生成 BOOT.BIN 文件。
軟件:
qspi的驅(qū)動(dòng)軟件移植自 Embedded SW,主要的改動(dòng)包括修改 xil_io.c 文件,用 xdma 的驅(qū)動(dòng)替換默認(rèn)的 Xil_In32 和 Xil_Out32 的實(shí)現(xiàn)。
軟件支持 Windows 和 Linux 的主機(jī),采用 cmake 環(huán)境。如果在 Windows 下,可以選擇 Visual Studio 作為編譯工具。編譯過(guò)程如下:
1.cdsw
2.mkdir build
3.cmake .. && make
測(cè)試結(jié)果
在 petalinux 下生成的 BOOT.BIN 文件放在生成的上位機(jī)軟件目錄下,執(zhí)行后可以看到更新 FLASH 的進(jìn)度條在變化,說(shuō)明 FLASH 被正常少燒寫(xiě)。
完成后切換到 QSPI FLASH 啟動(dòng)模式,上電觀察啟動(dòng)過(guò)程。
-
amd
+關(guān)注
關(guān)注
25文章
5519瀏覽量
135039 -
控制器
+關(guān)注
關(guān)注
113文章
16580瀏覽量
180464 -
FlaSh
+關(guān)注
關(guān)注
10文章
1650瀏覽量
149563 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
950瀏覽量
55193 -
Zynq
+關(guān)注
關(guān)注
10文章
612瀏覽量
47499
原文標(biāo)題:開(kāi)發(fā)者分享|使用 PCIE 更新 AMD ZYNQ? 的 QSPI Flash 參考設(shè)計(jì)
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
編譯可在QSPI Flash上運(yùn)行的程序

使用Zynq設(shè)備和Tandem配置的PCIe BOOTUP時(shí)間有什么要求?
Zynq無(wú)法設(shè)置為從QSPI閃存啟動(dòng)怎么解決?
【正點(diǎn)原子FPGA連載】第三十六章基于TCP協(xié)議的遠(yuǎn)程更新QSPI Flash實(shí)驗(yàn)-領(lǐng)航者 ZYNQ 之嵌入式開(kāi)發(fā)
【正點(diǎn)原子FPGA連載】第三十七章基于UDP協(xié)議的遠(yuǎn)程更新QSPI Flash實(shí)驗(yàn)-領(lǐng)航者 ZYNQ 之嵌入式開(kāi)發(fā)
什么是QSPI?如何使用QSPI與QSPI Flash進(jìn)行通信呢?
Zynq PCIe電路設(shè)計(jì)
LS1046A上的QSPI Flash不可擦除怎么處理?
使用 PCIE 更新 AMD ZYNQ? 的 QSPI Flash 參考設(shè)計(jì)
GD32-Colibri-F207實(shí)驗(yàn)板QSPI_FLASH
如何使用QSPI Flash控制器開(kāi)發(fā)板上的 QSPI Flash進(jìn)行寫(xiě)讀操作

在Linux/U-Boot里為QSPI Flash使用UBIFS
通過(guò)KEIL制作QSPI接口的外部Flash下載算法

在mmWave SDK增加QSPI Flash驅(qū)動(dòng)的示例

評(píng)論