资料介绍
描述
本教程展示了如何为 Minized 创建 PYNQ,它使用带有额外存储选项的 EMMC 内存作为 PMOD sdcard。
准备环境
首先,我们需要使用这些脚本从 Avnet GitHub 克隆存储库,我们将构建我们的项目和 BSP。
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;
git clone https://github.com/Xilinx/PYNQ.git --branch image_v2.5.4;
wget http://downloads.element14.com/downloads/zedboard/minized/minized_ttc_2019_1.bsp.zip?ICID=minized-datasheet-widget;
unzip minized_ttc_2019_1.bsp.zip?ICID=minized-datasheet-widget;
转到 petalinux → 脚本并编辑“make_minized_qspi_minimal_bsp.sh”
cd petalinux/scripts;
gedit make_minized_qspi_minimal_bsp.sh;
更改 Vivado 和 Petalinux 安装路径
运行脚本并等待它完成。
./make_minized_qspi_minimal_bsp.sh
同时,我们将基于“minized_ttc_2019.1.bsp”创建项目
打开新终端和源 petalinux settings.sh
source /home/bartek/petalinux20191/settings.sh
并创建项目
petalinux-create -t project -s minized_ttc_2019_1.bsp
打开新创建的项目。
cd minized_ttc_2019_1
在里面您可以看到“硬件”文件夹,其中包含用于构建该 BSP 的硬件设计。
我们将需要修改用于该项目的设备树,否则 Petalinux 将无法在 FPGA 管理器打开的情况下构建。
转到项目规范→元用户→食谱-bsp→设备树→文件并编辑“system-user.dtsi”
cd project-spec/meta-user/recipes-bsp/device-tree;
gedit system-user.dtsi
我们可以安全地删除引用 Wi-Fi 模块和加速度计的节点。
我以前尝试过,重新编程 FPGA 会导致 Wi-Fi 驱动程序崩溃,这就是我删除它的原因,如果你离开加速度计节点,petalinux 构建也会失败。
/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 addresses are defined with petalinux-config, but here they are overwritten so that one can program the flash internally */
&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>;
partition@0x00000000 {
label = "boot";
reg = <0x00000000 0x00ff0000>;
};
};
};
/* PMOD SD Interface */
&sdhci0 {
status = "okay";
bus-width= <4>;
xlnx,has-cd = <0x0>;
xlnx,has-power = <0x0>;
xlnx,has-wp = <0x0>;
/* cd-inverted; */
wp-inverted;
mmccardpmod: mmccardpmod@1 {
/* reg = <0>; */
compatible = "mmc-card";
};
};
/* SD Interface for eMMC */
&sdhci1 {
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;
};
};
/* Console UART. UART1 is tied to the USB serial port on the Zedboard */
&uart1 {
status = "okay";
current-speed = <115200>;
port-number = <0>;
};
/ {
};
PYNQ 设置
打开 PYNQ → sdbuild → 脚本并运行“setup_host.sh”脚本(如果你之前没有)。
cd PYNQ/sdbuild/scripts;
bash setup_host.sh
现在我们需要修改 PYNQ 的引导设置。
打开 PYNQ → sdbuild → boot → meta-pynq → recipes-bsp → device-tree 并编辑“pynq_bootargs.dtsi”
cd PYNQ/sdbuild/boot/meta-pynq/recipes-bsp/device-tree;
gedit pynq_bootargs.dtsi
将“/dev/mmcblk0p2”更改为“/dev/mmcblk1p2”
此外,您将需要为 arm 架构预构建的 rootfs映像。请参阅 PYNQ 快速移植指南。
下载它。
转到 PYNQ → sdbuild 并输入:
make BOARDS=Pynq-Z1
查看 PYNQ 是否设置正确。
修改最小化最小
我们在开始时为 Minized QSPI 运行的脚本现在应该完成了。
打开 petalinux → 项目 → minized_qspi_minimal_2019_1 并添加实用程序包以格式化内存(可选)。
cd petalinux/projects/minized_qspi_minimal_2019_1;
petalinux-config -c rootfs
启用“e2fsprogs”、“e2fsprogs-resize2fs”、“e2fsprogs-e2fsck”包。
您可以在 petalinux 窗口中使用“/”搜索软件包。
退出并重建项目
petalinux-build
现在我们将通过 JTAG 启动我们的系统。
petalinux-boot --jtag --fpga --kernel --verbose;
登录到 Minized,例如使用 cutecom 或 putty。
格式化 EMMC
现在我们将格式化 EMMC。(可选,稍后我们可以使用“dd”将图像写入EMMC)
使用“df -h”命令列出所有已安装的驱动器及其位置
df -h
或“fdisk -l”
fdisk -l
EMMC 是“/dev/mmcblk1”
我们需要创建两个分区。一个用于“image.ub”,第二个用于“rootfs”
第一个分区需要是 FAT32,第二个分区需要是 ext4。
打开 mmcblk1。
fdisk /dev/mmcblk1
使用 fdisk 删除分区并写入更改。
d
1
d
2
w
现在我们需要创建新分区(您可以使用“format_emmc.sh”脚本作为参考,它位于本地/bin 中)。
fdisk /dev/mmcblk1
o
n
p
1
enter (default command)
+255M
w
现在我们有了第一个分区,例如 255Mb。
fdisk /dev/mmcblk1
n
p
2
enter (default command)
enter (default command)
w
制作第一个分区 w95 fat32
fdisk /dev/mmcblk1
t
1
b
w
或使用 mkfs 将 mmblk1p1 格式化为 fat32
mkfs.vfat -F 32 -n boot /dev/mmcblk1p1
将 mmblk1p2 格式化为 ext4
mkfs.ext4 -L root /dev/mmcblk1p2
现在您的 EMMC 已准备好作为存储介质。
创建基础项目
打开 hdl → 项目 → minized_petalinux →MINIZED_2019_1
打开块设计并删除未使用的 IP(您可以将 SD 卡管理器连接到 SDIO_0 端口以获得额外存储)。
生成新的双流并从项目中导出 HDF。
创建 PYNQ 映像
转到 minized_ttc_2019_1 项目并更改引用的 HDF 和图像打包配置。
cd minized_ttc_2019_1;
petalinux-config --get-hw-description=/home/bartek/Desktop/Minized_EMMC/Avnet;
构建项目并打包新的 BSP。
petalinux-build;
petalinux-package --bsp --p ${PWD} --hwsource /home/bartek/Desktop/Minized_EMMC/Avnet/hdl/Projects/minized_petalinux/MINIZED_2019_1 -o MinizedEMMCPynq;
使用先前下载的“bionic.arm.2.5.img”将创建的 BSP 复制到 PYNQ → sdbuild
并创建 PYNQ 镜像
cd PYNQ/sdbuild;
bash scripts/image_from_prebuilt.sh MinizedEMMCPynq MinizedEMMCPynq.bsp arm bionic.arm.2.5.img;
最好为 Minized 创建自定义图像。我们需要对 PYNQ 板项目进行一些修改。(准备好的包在附件 MinizedPynq.7z 中)将其提取到某个地方,例如“ PYNQ/zz ”<-这是我们的板存储库。
我已经修改了 petalinux_bsp → meta-user → ... → user_2018-06-26-17-14-00.cfg
并为某些 USB Wi-Fi 模块启用内核驱动程序。
在打包 BSP 之前,您可以通过“ petalinux-config -c kernel ”来执行此操作。
cd PYNQ/sdbuild;
make PREBUILT=/home/bartek/PYNQ/sdbuild/bionic.arm.2.5.img BOARDDIR=/home/bartek/PYNQ/zz BOARD=Minizedzik
如果它不起作用,请尝试添加 PYNQ_SDIST:
make PYNQ_SDIST=/home/bartek/Downloads/pynq-2.5.tar.gz PREBUILT=/home/bartek/PYNQ/sdbuild/bionic.arm.2.5.img BOARDDIR=/home/bartek/PYNQ/zz BOARD=Minizedzik
缩小的图像应该在输出文件夹中。
恢复 USB 驱动器上的磁盘映像。
并将 partition2 的大小调整为小于 EMMC 减去 partition1 的大小(例如 7Gb)并检查错误。
将 USB 驱动器连接到 Minized。
使用“dd”命令将图像写入 EMMC(这需要一段时间)。
dd if=/dev/sda of=/dev/mmcblk1
如果您希望检查错误。
e2fsck /dev/mmcblk1p1
e2fsck /dev/mmcblk1p2
使用“minized_ttc_2019_1”BOOT.bin 最小化的程序
petalinux-build;
petalinux-package --boot --fpga --u-boot -o BOOT.bin --force;
program_flash -f ./BOOT.bin -offset 0 -flash_type qspi_single -fsbl ./images/linux/zynq_fsbl.elf;
Minized 将使用 QSPI 内存来加载 BOOT.bin。
ZYNQ 将使用该 BOOT.bin 来加载 FSBL 为 FPGA 进行 Minized 编程,然后加载 u-boot 以在“/dev/mmcblk1p1”分区上搜索 image.ub。Image.ub 将等到“/dev/mmcblk1p2”被挂载并加载rootfs。
现在 Minized 应该使用 PYNQ 系统启动。
现在让我们挂载 pmod sdcard 并编写一些东西来测试功能。
mkdir mnt;
ls -l /dev | grep mmc;
sudo mount /dev/mmcblk0p2 mnt;
打开 mnt 文件夹并创建.txt 文件。
cd mnt;
sudo nano TestWrite.txt;
退出并保存,umount sdcard。
cd ..;
sudo umount mnt;
让我们检查一下 sdcard 上的内容。
创建叠加层
我已将此项目升级为 Vivado 2020.1 版本。
打开 Vitis HLS 并为 xc7z007 芯片创建新的空项目。
单击源→新文件
创建附加 IP 核
转到项目设置→综合并在“顶级功能”中键入“添加”
单击确定并运行综合。
将我们的 IP 导出到本地 IP 存储库。
提取“add.zip”
打开 Vivado 并将新 IP 添加到项目并将其连接到 AXI 互连。
保存项目并导出比特流。
打开 Vivado 项目并搜索bistream和.hwh文件。
复制并重命名这些文件。
将它们上传到 Minized,但首先我们需要 Wi-Fi。
启动 Minized 并连接到它,例如使用 putty。
如您所见,Minized 检测到了我们的无线适配器
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 -B
sudo dhclient wlan0
打开互联网浏览器并连接到 Minized(密码是 xilinx)
http://192.168.0.105:9090/tree?
通过 jupyter notebook 上传文件。
结束
现在您已准备好基于这三个项目开发自己的 IOT 应用程序。
让您的 Minized 工作并分享您的工作 :)
- 使用Tensil和PYNQ在PYNQ Z1 FPGA板上运行机器学习
- 基于Pynq的汽车仪表板
- 如何为Minized创建可工作的PYNQ系统
- MiniZed和Mighty机器人
- 用于MiniZed的7段LED显示硬件和VHDL模块
- 如何为探测器构建活动创建探测器
- 使用Ultra96 PYNQ测定织物GSM
- 如何为LCD1602显示器创建自定义字符
- 如何创建和使用LabVIEW中的LLB文件 0次下载
- 如何为混合动力汽车/电动汽车设计加热和冷却系统 23次下载
- 何为NFC?资料下载
- Visual C++和MFC创建的应用程序基础知识 0次下载
- allegro与PADS的区别及创建PCB封装的步骤 66次下载
- PYNQ的常见问题
- AN1246中文手册之如何在Microchip图形库中创建控件
- 使用PYNQ训练和实现BNN 221次阅读
- Java反射威廉希尔官方网站 实现对象的创建 2123次阅读
- 如何为ATE应用创建具有拉电流和灌电流功能的双输出电压轨 693次阅读
- 创建STM32工程模板 1085次阅读
- 如何创建 Docker 镜像的能力 1023次阅读
- 如何为MSP430设计固件以收集和处理IC的数据 1881次阅读
- 如何为制造和组装做好最好的PCB设计准备 1543次阅读
- ADI公司:加速迈向工业4.0 1054次阅读
- 米尔PYNQ开发板来了 901次阅读
- digilent支持Python编程的Zynq开发板介绍 3398次阅读
- Avnet MiniZed单核Zynq 7Z007S入门开发方案 5161次阅读
- PYNQ中MicroBlaze程序文件的加载过程 2192次阅读
- PYNQ 基于Zynq架构添加了对python的支持 8754次阅读
- 一文详解Avnet Zynq 7Z007SMiniZed开发方案 9594次阅读
- 低成本 MiniZed Zynq SoC 开发板 7293次阅读
下载排行
本周
- 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 积分
评论
查看更多