資料介紹
描述
逐步了解如何為 Minized 創(chuàng)建可工作的 PYNQ 系統(tǒng)。
小型化作為低成本電路板為新開發(fā)人員提供了一個嘗試新功能或了解 FPGA 工作原理的切入點。本教程重點介紹如何使用現(xiàn)有工具為 Minized 創(chuàng)建 PYNQ 圖像,以便您對其進行修改、創(chuàng)建疊加和學(xué)習(xí)!
那么,讓我們開始吧!
準(zhǔn)備環(huán)境
第一步是為我們的 PYNQ 項目創(chuàng)建 BSP。為此,您可以為 Minized下載預(yù)構(gòu)建的 BSP或按照我的其他教程進行操作。
注意:我在創(chuàng)建本教程時跳過了一些步驟。如果您感到迷茫,請查看我以前的項目,如果您找不到解決方案,請發(fā)表評論。
注意:如果你需要干凈的 Ubuntu,你可以在這里下載一個:https ://1drv.ms/u/s!As37uPW_18jehTkymDK5EiuWbuC1?e=JBEgII密碼是“root”。用oracle虛擬盒子打開就行了。運行“setup_host.sh”(在 PYNQ 腳本文件夾中)并安裝 Xilinx 工具。
您將需要創(chuàng)建一些工作目錄。例如稱它為 Avnet。現(xiàn)在下載 Minized 的存儲庫并創(chuàng)建模板項目。
mkdir Avnet;
cd Avnet;
git clone https://github.com/Avnet/bdf.git --branch master;
git clone https://github.com/Avnet/hdl.git --branch 2019.1;
git clone https://github.com/Avnet/petalinux.git --branch 2019.1;
并從 Xilinx GitHub 下載 PYNQ 映像。
git clone https://github.com/Xilinx/PYNQ.git -b image_v2.5.4
![poYBAGOAMhmAXS5NAAArkraGC38689.png](https://file.elecfans.com/web2/M00/7D/9C/poYBAGOAMhmAXS5NAAArkraGC38689.png)
修改 Vivado 項目
使用 Vivado 2019.1 打開項目
![poYBAGOX27iAPmAeAAArBm-EswM749.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX27iAPmAeAAArBm-EswM749.png)
開放式塊設(shè)計
![poYBAGOX28mAeHxjAAMlMo4mamk405.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX28mAeHxjAAMlMo4mamk405.png)
移除不必要的 IP 核并禁用未使用的 Zynq 接口(不必要)。
將“sdcard_mgr”IP 核添加到模塊設(shè)計中。
![pYYBAGOX28uAbTE3AAAukE3T5sw657.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX28uAbTE3AAAukE3T5sw657.png)
將“sdcard_mgr”連接到 Zynq EMIO 接口。
![pYYBAGOX286AVhg9AAEcxh54hpM363.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX286AVhg9AAEcxh54hpM363.png)
并修改約束:
打開“minized_petalinux.xdc”并添加:
#SD - CARD
set_property PACKAGE_PIN L15 [get_ports PMOD1_PIN1_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN1_0]
set_property PACKAGE_PIN M15 [get_ports PMOD1_PIN2_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN2_0]
set_property PACKAGE_PIN L14 [get_ports PMOD1_PIN3_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN3_0]
set_property PACKAGE_PIN M14 [get_ports PMOD1_PIN4_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN4_0]
set_property PACKAGE_PIN K13 [get_ports PMOD1_PIN7_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN7_0]
set_property PACKAGE_PIN L13 [get_ports PMOD1_PIN8_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN8_0]
set_property PACKAGE_PIN N13 [get_ports PMOD1_PIN9_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN9_0]
set_property PACKAGE_PIN N14 [get_ports PMOD1_PIN10_0]
set_property IOSTANDARD LVCMOS33 [get_ports PMOD1_PIN10_0]
保存模塊設(shè)計并生成新的比特流。
單擊文件 → 導(dǎo)出 → 硬件以導(dǎo)出項目 HDF。
這將創(chuàng)建新的“MINIZED_wrapper.hdf”
注意:我已經(jīng)刪除了 previous.hdf 文件
![poYBAGOX29GARudFAABGV6hQhWc517.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX29GARudFAABGV6hQhWc517.png)
修改 Petalinux 項目
注意:如果你不想玩 petalinux,你可以跳過這整個部分。只需下載一個 Avnet 的 BSP 并將其用于創(chuàng)建 PYNQ rootfs,使用它對 EMMC 內(nèi)存進行編程(使用最小的 petalinux 映像和 USB 記憶棒并將文件復(fù)制到 EMMC)。使用其他引導(dǎo)到 EMMC 的 BOOT.bin。稍后 PYNQ 將下載覆蓋并覆蓋由 BOOT.bin 編程的比特流。
轉(zhuǎn)到由 Avnet 腳本或 BSP 創(chuàng)建的 petalinux 項目
petalinux-create -t project -n MzPynq --template zynq
更改 petalinux 項目的引用 HDF。
此命令將在 MINIZED.sdk 文件夾中搜索.hdf 文件。如果有兩個.hdf 文件,petalinux 會返回錯誤。
petalinux-config --get-hw-description=../../../hdl/Projects/minized_petalinux/MINIZED_2019_1/MINIZED.sdk/
(可選)啟用 FPGA 管理器。
![poYBAGOX29eADwycAABU3RLm-6U296.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX29eADwycAABU3RLm-6U296.png)
轉(zhuǎn)到圖像打包配置并將根文件系統(tǒng)更改為 SD 卡。Image.ub 將在 /dev/mmcblk0p2 分區(qū)上搜索 rootfs。
![pYYBAGOX29uAQSn4AABWk4ATgJ4950.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX29uAQSn4AABWk4ATgJ4950.png)
修改引導(dǎo)順序以在主 sd 上查找“image.ub”
![poYBAGOX296AIU-AAABWzxY5JMI384.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX296AIU-AAABWzxY5JMI384.png)
保存并退出。
轉(zhuǎn)到 MzPynq → 項目規(guī)范 → 元用戶 → recipes-bsp → 設(shè)備樹 → system_user.dtsi
cd project-spec/meta-user/recipes-bsp/device-tree/
gedit system_user.dtsi
并更改設(shè)備樹
/include/ "system-conf.dtsi"
/ {
aliases {
serial0 = &uart1;
serial1 = &uart0;
};
};
&flash0 {
compatible = "micron,n25q128", "jedec,spi-nor";
};
/{
usb_phy0: usb_phy@0 {
compatible = "ulpi-phy";
#phy-cells = <0>;
reg = <0xe0002000 0x1000>;
view-port = <0x0170>;
drv-vbus;
};
};
&usb0 {
dr_mode = "otg";
usb-phy = <&usb_phy0>;
} ;
&qspi {
#address-cells = <1>;
#size-cells = <0>;
flash0: flash@0 {
compatible = "micron,m25p80";
reg = <0x0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
};
};
/* SD Interface for PMOD */
&sdhci0 {
status = "okay";
non-removeable;
bus-width= <4>;
xlnx,has-cd = <0x0>;
xlnx,has-power = <0x0>;
xlnx,has-wp = <0x0>;
mmccard: mmccard@0 {
reg = <0>;
compatible = "mmc-card";
/* broken-hpi; */
};
};
/ {
};
保存并
petalinux-build
如果在打開 FPGA 管理器的情況下構(gòu)建通過,這意味著也應(yīng)該在 PYNQ 中構(gòu)建。
您可以關(guān)閉 FPGA 管理器并根據(jù)修改后的硬件創(chuàng)建新的 BSP
petalinux-config
petalinux-build;
petalinux-package --bsp -p /home/bartek/Minized_Pynq/Avnet/petalinux/projects/MzPynq -o Minized_Pynq
使用打包的 BOOT.bin 最小化程序
cd ../../../../images/linux/;
petalinux-package --boot --fpga --fsbl --u-boot --force;
program_flash -f BOOT.BIN -fsbl zynq_fsbl.elf -flash_type qspi-x4-single;
對 PYNQ 的修改
Note:
如果您在 Avnet BSP 的 EMMC 內(nèi)存上構(gòu)建 Minized PYNQ。您應(yīng)該將 pynq_bootargs.dtsi 更改為“/dev/mmcblk1p2”。
![pYYBAGOX2-KAB4uFAABTD2coo5g865.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX2-KAB4uFAABTD2coo5g865.png)
![pYYBAGOX2-aAFQdZAABFIPY3CCs885.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX2-aAFQdZAABFIPY3CCs885.png)
轉(zhuǎn)到 PYNQ → sdbuild → 腳本并運行“setup_host.sh”
這用于下載構(gòu)建 PYNQ 映像所需的所有文件和程序。
cd PYNQ/sdbuild/scripts/
bash setup_host.sh
腳本完成后,您可以獲取 Vivado 和 SDK 進行構(gòu)建:
source /home/bartek/petalinux20191/settings.sh;
source /home/bartek/Xilinx/Vivado/2019.1/settings64.sh;
source /home/bartek/Xilinx/SDK/2019.1/settings64.sh;
轉(zhuǎn)到 PYNQ → sdbuild 文件夾并嘗試:
make BOARDS=Pynq-Z1
查看 PYNQ 是否設(shè)置正確。
?
我將使用現(xiàn)有的 PYNQ 2.5 imagerootfs for arm
注意:點擊此鏈接可將 Image 快速移植到 PYNQ。
轉(zhuǎn)到 PYNQ → sdbuild 并輸入:
bash scripts/image_from_prebuilt.sh MinizedPynq Minized_Pynq.bsp arm bionic.arm.2.5.img;
構(gòu)建完成后,您將在 PYNQ → sdbuild → 輸出中擁有輸出文件夾
使用您的最小化 PYNQ 圖像。
![poYBAGOX2-qAXViQAAAy3K_7xWs174.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX2-qAXViQAAAy3K_7xWs174.png)
雙擊它并恢復(fù) SD-CARD 上的磁盤映像。
flash完成后輸入
sudo gparted
并調(diào)整第二個分區(qū)的大小以使用設(shè)備上剩余的所有可用空間。
PYNQ 的密碼是“xilinx”
![poYBAGOX2-6ASPlWAAAgec1W9cc504.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX2-6ASPlWAAAgec1W9cc504.png)
現(xiàn)在我們可以將 USB HUB 與相機和 WI-FI 適配器連接起來。
![pYYBAGOX2_GAZOfzAAAq_8XIy_A464.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX2_GAZOfzAAAq_8XIy_A464.png)
![poYBAGOX2_OAT7qDAAAoBLxozq8823.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX2_OAT7qDAAAoBLxozq8823.png)
使用 nano 生成“wpa_supplicant.conf”
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
和寫:
network={
ssid="SSID"
psk="PASSWORD"
}
現(xiàn)在加載“wpa_supplicant”并等待 ip-address
sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 -B
sudo dhclient wlan0
Jupyter notebook 應(yīng)該在你的 Minized 上運行。
![pYYBAGOX2_aAIphcAAAoGaXYiB8412.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX2_aAIphcAAAoGaXYiB8412.png)
打開瀏覽器并連接到 PYNQ。使用 wlan0 接口中列出的 IP。
http://192.168.0.102:9090
成功!
![poYBAGOX2_iAQyHTAABEBIG2Qqk146.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX2_iAQyHTAABEBIG2Qqk146.png)
創(chuàng)建名為“Testing.ipynb”的新文件。該腳本將占用 10 幀并在 Jupyter 筆記本中顯示,每幀延遲 1 秒。
import os
import cv2
import time
from matplotlib import pyplot as plt
from IPython.display import clear_output
cap = cv2.VideoCapture(0)
if cap.isOpened():
print("Camera opened")
else:
print("Failed to open camera")
i = 1
while (i < 10):
check, frame = cap.read()
if check == False:
print(f"Error reading frame! {i}")
else:
plt.imshow(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
i += 1
time.sleep(1)
clear_output(wait=True)
現(xiàn)在讓我們試試 PYNQ 覆蓋是否正常工作。
打開公共文件夾并運行“overlay_download”
![poYBAGOX2_2AdZP6AABwlJHwxNI662.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX2_2AdZP6AABwlJHwxNI662.png)
在腳本中運行第一個單元格
![pYYBAGOX3AaAPD--AABQ-TrOyJ4406.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX3AaAPD--AABQ-TrOyJ4406.png)
如您所見,沒有加載默認(rèn)覆蓋,我們使用的是來自 BOOT.BIN 的比特流。
讓我們加載一個疊加層。為此,我將使用 Vivado 生成的文件。
cd /Avnet/hdl/Projects/minized_petalinux/MINIZED_2019_1/
并尋找“hw_handoff”文件夾
![pYYBAGOX3AiAEfEXAAA1HuZQFRU008.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX3AiAEfEXAAA1HuZQFRU008.png)
此外,我們將需要比特流。只需在 Vivado 項目文件夾中搜索。
![poYBAGOX3AqAAGGlAAARqLQ7Pqw397.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX3AqAAGGlAAARqLQ7Pqw397.png)
重命名這些文件,以便 PYNQ 知道它們引用的是同一個覆蓋。
![poYBAGOX3A-AX6YzAAAOqGmuhxg196.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX3A-AX6YzAAAOqGmuhxg196.png)
將這些文件上傳到 Jupyter Notebook
![pYYBAGOX3BSAYx8_AABRwTN-F6Q329.png](https://file.elecfans.com/web2/M00/83/8F/pYYBAGOX3BSAYx8_AABRwTN-F6Q329.png)
修改腳本以加載新的覆蓋。
![poYBAGOX3BeANWYpAADFJ9f_iL4353.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX3BeANWYpAADFJ9f_iL4353.png)
![poYBAGOX3B6AKPPwAACeVc5fWHA975.png](https://file.elecfans.com/web2/M00/83/06/poYBAGOX3B6AKPPwAACeVc5fWHA975.png)
概括
所以這些是如何為 Minized 創(chuàng)建 PYNQ 的基礎(chǔ)知識。
在下一個教程中,我將嘗試向您展示如何為 EMMC 內(nèi)存創(chuàng)建 PYNQ。
小心!
- 使用Tensil和PYNQ在PYNQ Z1 FPGA板上運行機器學(xué)習(xí)
- 基于Pynq的汽車儀表板
- 如何為Minized創(chuàng)建PYNQ
- MiniZed和Mighty機器人
- 用于MiniZed的7段LED顯示硬件和VHDL模塊
- 如何為探測器構(gòu)建活動創(chuàng)建探測器
- 如何為LCD1602顯示器創(chuàng)建自定義字符
- 如何創(chuàng)建和使用LabVIEW中的LLB文件 0次下載
- 如何為混合動力汽車/電動汽車設(shè)計加熱和冷卻系統(tǒng) 23次下載
- 基于AADL的自主無人系統(tǒng)可成長框架綜述 3次下載
- Visual C++和MFC創(chuàng)建的應(yīng)用程序基礎(chǔ)知識 0次下載
- allegro與PADS的區(qū)別及創(chuàng)建PCB封裝的步驟 67次下載
- 開源方案|PYNQ框架下開發(fā)可重構(gòu)運動控制器
- PYNQ的常見問題
- AN1246中文手冊之如何在Microchip圖形庫中創(chuàng)建控件
- 使用PYNQ訓(xùn)練和實現(xiàn)BNN 592次閱讀
- 使用TIA Portal創(chuàng)建用于操作和監(jiān)視機器與工廠的畫面 1089次閱讀
- Visual Studio Code Python使用新的創(chuàng)建環(huán)境命令簡化項目設(shè)置 1420次閱讀
- 如何使用Arduino創(chuàng)建停車門禁控制系統(tǒng)? 5302次閱讀
- 米爾PYNQ開發(fā)板來了 964次閱讀
- fireflyAIO-3399C主板創(chuàng)建Ubuntu根文件系統(tǒng) 1190次閱讀
- FireflyRK3128主板Ubuntu 根文件系統(tǒng)創(chuàng)建 3390次閱讀
- Avnet MiniZed單核Zynq 7Z007S入門開發(fā)方案 5344次閱讀
- PYNQ中MicroBlaze程序文件的加載過程 2271次閱讀
- PYNQ 基于Zynq架構(gòu)添加了對python的支持 8860次閱讀
- 研究人員基于NVIDIA GPU創(chuàng)建了可預(yù)測的3D細(xì)胞模型 3454次閱讀
- 一文詳解Avnet Zynq 7Z007SMiniZed開發(fā)方案 9892次閱讀
- 驗證設(shè)計和創(chuàng)建可實現(xiàn)的設(shè)計 786次閱讀
- 低成本 MiniZed Zynq SoC 開發(fā)板 7449次閱讀
- 如何為工業(yè)控制和自動化應(yīng)用提供隔離數(shù)字輸入接口 2173次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數(shù)據(jù)手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數(shù)據(jù)手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機控制開發(fā)板用戶指南
- 5.78MB | 8次下載 | 免費
- 5STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現(xiàn)
- 2.94MB | 4次下載 | 免費
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費
- 8零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機智能手環(huán)心率計步器體溫顯示設(shè)計
- 0.10 MB | 137次下載 | 免費
- 4A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數(shù)據(jù)手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費
- 7PIC16F716 數(shù)據(jù)手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統(tǒng)EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論