资料介绍
描述
逐步了解如何为 Minized 创建可工作的 PYNQ 系统。
小型化作为低成本电路板为新开发人员提供了一个尝试新功能或了解 FPGA 工作原理的切入点。本教程重点介绍如何使用现有工具为 Minized 创建 PYNQ 图像,以便您对其进行修改、创建叠加和学习!
那么,让我们开始吧!
准备环境
第一步是为我们的 PYNQ 项目创建 BSP。为此,您可以为 Minized下载预构建的 BSP或按照我的其他教程进行操作。
注意:我在创建本教程时跳过了一些步骤。如果您感到迷茫,请查看我以前的项目,如果您找不到解决方案,请发表评论。
注意:如果你需要干净的 Ubuntu,你可以在这里下载一个:https ://1drv.ms/u/s!As37uPW_18jehTkymDK5EiuWbuC1?e=JBEgII密码是“root”。用oracle虚拟盒子打开就行了。运行“setup_host.sh”(在 PYNQ 脚本文件夹中)并安装 Xilinx 工具。
您将需要创建一些工作目录。例如称它为 Avnet。现在下载 Minized 的存储库并创建模板项目。
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
修改 Vivado 项目
使用 Vivado 2019.1 打开项目
开放式块设计
移除不必要的 IP 核并禁用未使用的 Zynq 接口(不必要)。
将“sdcard_mgr”IP 核添加到模块设计中。
将“sdcard_mgr”连接到 Zynq EMIO 接口。
并修改约束:
打开“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]
保存模块设计并生成新的比特流。
单击文件 → 导出 → 硬件以导出项目 HDF。
这将创建新的“MINIZED_wrapper.hdf”
注意:我已经删除了 previous.hdf 文件
修改 Petalinux 项目
注意:如果你不想玩 petalinux,你可以跳过这整个部分。只需下载一个 Avnet 的 BSP 并将其用于创建 PYNQ rootfs,使用它对 EMMC 内存进行编程(使用最小的 petalinux 映像和 USB 记忆棒并将文件复制到 EMMC)。使用其他引导到 EMMC 的 BOOT.bin。稍后 PYNQ 将下载覆盖并覆盖由 BOOT.bin 编程的比特流。
转到由 Avnet 脚本或 BSP 创建的 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 管理器。
转到图像打包配置并将根文件系统更改为 SD 卡。Image.ub 将在 /dev/mmcblk0p2 分区上搜索 rootfs。
修改引导顺序以在主 sd 上查找“image.ub”
保存并退出。
转到 MzPynq → 项目规范 → 元用户 → recipes-bsp → 设备树 → system_user.dtsi
cd project-spec/meta-user/recipes-bsp/device-tree/
gedit system_user.dtsi
并更改设备树
/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 管理器的情况下构建通过,这意味着也应该在 PYNQ 中构建。
您可以关闭 FPGA 管理器并根据修改后的硬件创建新的 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 内存上构建 Minized PYNQ。您应该将 pynq_bootargs.dtsi 更改为“/dev/mmcblk1p2”。
转到 PYNQ → sdbuild → 脚本并运行“setup_host.sh”
这用于下载构建 PYNQ 映像所需的所有文件和程序。
cd PYNQ/sdbuild/scripts/
bash setup_host.sh
脚本完成后,您可以获取 Vivado 和 SDK 进行构建:
source /home/bartek/petalinux20191/settings.sh;
source /home/bartek/Xilinx/Vivado/2019.1/settings64.sh;
source /home/bartek/Xilinx/SDK/2019.1/settings64.sh;
转到 PYNQ → sdbuild 文件夹并尝试:
make BOARDS=Pynq-Z1
查看 PYNQ 是否设置正确。
我将使用现有的 PYNQ 2.5 imagerootfs for arm
注意:点击此链接可将 Image 快速移植到 PYNQ。
转到 PYNQ → sdbuild 并输入:
bash scripts/image_from_prebuilt.sh MinizedPynq Minized_Pynq.bsp arm bionic.arm.2.5.img;
构建完成后,您将在 PYNQ → sdbuild → 输出中拥有输出文件夹
使用您的最小化 PYNQ 图像。
双击它并恢复 SD-CARD 上的磁盘映像。
flash完成后输入
sudo gparted
并调整第二个分区的大小以使用设备上剩余的所有可用空间。
PYNQ 的密码是“xilinx”
现在我们可以将 USB HUB 与相机和 WI-FI 适配器连接起来。
使用 nano 生成“wpa_supplicant.conf”
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
和写:
network={
ssid="SSID"
psk="PASSWORD"
}
现在加载“wpa_supplicant”并等待 ip-address
sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 -B
sudo dhclient wlan0
Jupyter notebook 应该在你的 Minized 上运行。
打开浏览器并连接到 PYNQ。使用 wlan0 接口中列出的 IP。
http://192.168.0.102:9090
成功!
创建名为“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)
现在让我们试试 PYNQ 覆盖是否正常工作。
打开公共文件夹并运行“overlay_download”
在脚本中运行第一个单元格
如您所见,没有加载默认覆盖,我们使用的是来自 BOOT.BIN 的比特流。
让我们加载一个叠加层。为此,我将使用 Vivado 生成的文件。
cd /Avnet/hdl/Projects/minized_petalinux/MINIZED_2019_1/
并寻找“hw_handoff”文件夹
此外,我们将需要比特流。只需在 Vivado 项目文件夹中搜索。
重命名这些文件,以便 PYNQ 知道它们引用的是同一个覆盖。
将这些文件上传到 Jupyter Notebook
修改脚本以加载新的覆盖。
概括
所以这些是如何为 Minized 创建 PYNQ 的基础知识。
在下一个教程中,我将尝试向您展示如何为 EMMC 内存创建 PYNQ。
小心!
- 使用Tensil和PYNQ在PYNQ Z1 FPGA板上运行机器学习
- 基于Pynq的汽车仪表板
- 如何为Minized创建PYNQ
- MiniZed和Mighty机器人
- 用于MiniZed的7段LED显示硬件和VHDL模块
- 如何为探测器构建活动创建探测器
- 如何为LCD1602显示器创建自定义字符
- 如何创建和使用LabVIEW中的LLB文件 0次下载
- 如何为混合动力汽车/电动汽车设计加热和冷却系统 23次下载
- 基于AADL的自主无人系统可成长框架综述 3次下载
- Visual C++和MFC创建的应用程序基础知识 0次下载
- allegro与PADS的区别及创建PCB封装的步骤 66次下载
- 开源方案|PYNQ框架下开发可重构运动控制器
- PYNQ的常见问题
- AN1246中文手册之如何在Microchip图形库中创建控件
- 使用PYNQ训练和实现BNN 221次阅读
- 使用TIA Portal创建用于操作和监视机器与工厂的画面 929次阅读
- Visual Studio Code Python使用新的创建环境命令简化项目设置 1217次阅读
- 如何使用Arduino创建停车门禁控制系统? 5060次阅读
- 米尔PYNQ开发板来了 901次阅读
- fireflyAIO-3399C主板创建Ubuntu根文件系统 1101次阅读
- FireflyRK3128主板Ubuntu 根文件系统创建 3139次阅读
- Avnet MiniZed单核Zynq 7Z007S入门开发方案 5161次阅读
- PYNQ中MicroBlaze程序文件的加载过程 2192次阅读
- PYNQ 基于Zynq架构添加了对python的支持 8754次阅读
- 研究人员基于NVIDIA GPU创建了可预测的3D细胞模型 3323次阅读
- 一文详解Avnet Zynq 7Z007SMiniZed开发方案 9594次阅读
- 验证设计和创建可实现的设计 721次阅读
- 低成本 MiniZed Zynq SoC 开发板 7293次阅读
- 如何为工业控制和自动化应用提供隔离数字输入接口 2066次阅读
下载排行
本周
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2Keysight B1500A 半导体器件分析仪用户手册、说明书 (中文)
- 19.00 MB | 4次下载 | 免费
- 3BT134双向可控硅手册
- 1.74 MB | 2次下载 | 1 积分
- 4一种新型高效率的服务器电源系统
- 0.85 MB | 1次下载 | 1 积分
- 5台达VFD-M系列变频器驱动板原厂原理图
- 0.17 MB | 1次下载 | 免费
- 6WTS-100(1.1) UWB 信标定位系统 彩页
- 540.48 KB | 1次下载 | 免费
- 7双向DC-DC转换器用户指南
- 2.98MB | 1次下载 | 免费
- 8联想E46L DAOLL6笔记本电脑图纸
- 1.10 MB | 1次下载 | 5 积分
本月
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 15次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4ST7789V2单芯片控制器/驱动器英文手册
- 3.07 MB | 11次下载 | 1 积分
- 5TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 6STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 7TPS92682-Q1帧定义和示例
- 891.71KB | 6次下载 | 免费
- 8HY12P65/HY12P66数字万用表芯片规格书
- 0.69 MB | 6次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多