ZYBO-Z7开发板的PYNQ框架移植(PYNQ镜像制作)

2023-10-25 17:30

本文主要是介绍ZYBO-Z7开发板的PYNQ框架移植(PYNQ镜像制作),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

**

ZYBO-Z7开发板的PYNQ框架移植(PYNQ镜像制作)

**
PYNQ官方给出SD img 文件的开发板目前有三块:PYNQ-Z1,PYNQ-Z2以及ZCU104。笔者所用的开发板为ZYBO-Z7,需要自己生成SD卡的img来实现PYNQ功能。

参考:https://blog.csdn.net/qq575542641/article/details/89155521

一: 基本框架搭建
框架搭建基于Ubuntu16.04,此处注意18.04版本在框架移植方面仍存在问题,建议使用16.04版本。笔者电脑用的是Win10系统,所以采用VMware虚拟机进行SD img 文件的生成,同时虚拟机方便操作过程中的文件拷贝,同样用Windows系统的朋友们建议采用这种方法。注意虚拟机的内存设置尽量大一些,避免在之后镜像生成中报错,笔者用2g内存出现过镜像生成失败的情况。

安装好Ubuntu系统后建议先更换软件源,在system setting中选择Software&Updates,这里笔者用的是中科大的软件源
在这里插入图片描述

完成后我们正式开始环境搭建

1. 基本库环境:
修改shell环境,

sudo dpkg-reconfigure dash

此处注意一定要选择no,否则会导致之后petalinux安装失败

sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev \
flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip \
texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev zlib1g:i386 \
screen pax gzip
sudo apt-get install tofrodos gawk xvfb zlib1g-dev:i386
sudo apt-get install tftpd-hpa
sudo chmod a+w /var/lib/tftpboot/

2.Xilinx基本环境安装
为了完成 img 生成,这里需要安装的软件包括:Petalinux,Vivado以及Vivado SDK。另需要板级镜像文件:bionic.arm.2.3.img。这里注意一下版本号的对应关系:
pynq_rootfs_arm_v2.3下载地址:离线镜像在这里插入图片描述
笔者所用的Vivado为2018.2版本,所对应的板级镜像即为v2.3版本,以此类推。

首先进入管理员权限来生成文件夹

sudo -s
mkdir -p /opt/pkg/petalinux/2018.2

同时为生成的文件夹赋予权限,同样与之后Petalinux的成功安装有关:

chown <your_user_name> /opt/pkg/
chown <your_user_name> /opt/pkg/petalinux
chown <your_user_name> /opt/pkg/petalinux/2018.2
chgrp <your_user_name> /opt/pkg/
chgrp <your_user_name> /opt/pkg/petalinux
chgrp <your_user_name> /opt/pkg/petalinux/2018.2

之后exit命令退出管理员模式

将下载好的Petalinux安装包复制到虚拟机(例:Downloads文件夹)
在这里插入图片描述
在对应的文件中右键打开终端(或cd命令到含有安装包的文件夹)
首先赋予执行权限:

sudo chmod +x petalinux-v2018.2-final-installer.run

之后运行安装包安装到指定路径

./petalinux-v2018.2-final-installer.run /opt/pkg/petalinux/2018.2

Ubuntu系统中准备好Vivado安装包
与前面的安装过程相同,在对应文件夹右键终端输入:

sudo ./xsetup

安装路径选择默认的 /opt/Xilinx/ ,安装完成后会自动生成对应的Vivado和SDK文件夹
终端中对执行所属权进行修改

sudo chmod 777 -R /opt/Xilinx/
sudo chmod 777 -R ~/.Xilinx/

3.PYNQ组件下载

  1. 下载开发包
git clone https://github.com/Xilinx/PYNQ.git
cd PYNQ
git checkout v2.3
git checkout -b ZYBO-Z7
  1. 重要:检测安装依赖库环境
    依次进入下载好的 /PYNQ/sdbuild/scripts/
    运行setup_host.sh
chmod +x setup_host.sh
./setup_host.sh
  1. 成功后通过终端打开编辑shell环境文件
sudo gedit  ~/.bashrc

在打开的文档末尾追加:

source /opt/pkg/petalinux/2018.2/settings.sh
source /opt/Xilinx/Vivado/2018.2/settings64.sh
source /opt/Xilinx/SDK/2018.2/settings64.sh
export PATH=/opt/qemu/bin:/opt/crosstool-ng/bin:$PATH
  1. 进入文件夹 /opt/crosstool-ng/lib/crosstool-ng-1.22.0/scripts/build/libc/
    打开文件newlib.sh
    将"{http://mirrors.kernel.org/sourceware/newlib,
    ftp://sourceware.org/pub/newlib}"
    改为 “ftp://sourceware.org/pub/newlib"或者"http://mirrors.kernel.org/sourceware/newlib”
    如图:
    在这里插入图片描述
  2. 源文件修改
    因为笔者并没有安装SDx环境,所用进入 /PYNQ/sdbuild/ 文件夹,打开Makefile
    删除如下内容:
which sdx | fgrep ${KERNEL_VERSION}

环境搭建完成

二:soc系统构建
为了完成PYNQ的SD img的成功生成,我们需要的材料有:
1.rootfs文件(不含内核信息的镜像,可以加速生成过程)其中ZYNQ7000采用的是arm镜像,ZYNQ UltraScale+采用的为aarch64镜像
2.开发板的板级描述文件,具体可分为两种形式:
1.直接提供bsp文件;
2.提供bit文件和hdf文件
具体可见PYNQ官网介绍:
在这里插入图片描述
这里我们采用第二种方法。

Vivado工程建立

  1. 新建Vivado工程,板卡选择ZYBO-Z7开发板
  2. Create Block design,添加ZYNQ7000 IP核,点击Run Block Automation
  3. 双击ZYNQ7000对IP核进行配置(如图)需要注意保证SD,enet以及gpio端口使能
  4. Create HDL Wrapper之后生成bit流
  5. export hardware(注意勾选include bitstream)
    在这里插入图片描述

三:框架移植
1.板级描述文件的准备
在上一步床创建的Vivado工程目录中找到
<project_name>.runs\impl_1<project_name>_wrapper.bit
<project_name>.sdk<project_name>_wrapper.hdf
其中<project_name>为你在Vivado中所命名的工程名
修改二者文件名为base.bit 以及system.hdf
其中bit流文件用于FPGA配置,hdf文件用于对已建立的Soc系统进行描述

2.ZYBO-Z7镜像构建

  1. 在 /PYNQ/sdbuild/ 目录下新建文件夹 ‘prebuilt’
    将bionic.arm.2.3.img文件拷贝至该文件夹
  2. 在 /PYNQ/boards/ 目录下新建文件夹 ‘ZYBO-Z7’
  3. 在 ZYBO-Z7 中再新建两个文件夹分别为 base 和petalinux_bsp
  4. 在 petalinux_bsp 中再建立文件夹 hardware_project
  5. 分别将base.bit拷贝到base;system.hdf拷贝到hardware_project
  6. 复制/boards/PYNQ-Z2中的 .spec文件至ZYBO-Z7下并修改文件夹名为ZYBO-Z7.spec
  7. 打开ZYBO-Z7.spec,修改内容如下
ARCH_${BOARD} := arm
BSP_${BOARD} := 
BITSTREAM_${BOARD} := base/base.bit
STAGE4_PACKAGES_Pynq-Z2 := pynq  ethernet

返回 /PYNQ/sdbuild/ 打开终端

make BOARDS=ZYBO-Z7 \
PREBUILT=./prebuilt/bionic.arm.2.3.img

等待img文件生成完成。

3.烧写SD卡
将 /sdbuild/output 目录下生成的.img复制至Windows

下载并使用 Win32DiskImager将镜像烧写至SD卡(至少8g)上
烧写完成后将U盘重新接入Ubuntu虚拟机,注意查看分区内容,FAT32分区是否存在BOOT.bin以及image.ub文件。如果没有将 /PYNQ/sdbuild/output/boot/ 文件夹下对应的文件拷贝至这一分区。
烧写失败需还原SD卡请参考SD卡还原

4.SD 卡测试
将烧录完成的SD卡插入板卡中,接通网线,并上电启动。
建议采用Xshell进行端口交互
出现下图即说明启动成功在这里插入图片描述
在这里插入图片描述
恭喜你,你的ZYBO板以及拥有自己的Linux系统了,现在可以用ifconfig命令查看一下
在这里插入图片描述
这里笔者遇到过第一次上电启动检测不到eth0连接的问题,解决方法如下:
首先进入管理员模式

sudo -s

使能eth0

ifconfig eth0 up

为eth0分配IP地址,这里需要查看自己计算机的ip,确保二者在同一网段

ifconfig eth0 192.168.1.223 netmask 255.255.255.0

完成后退出管理员模式,再次ifconfig即可查看到eth0

框架移植完成

附录:

四:Jupyter Notebook的使用
在端口中输入jupyter notebook
在这里插入图片描述
复制红线部分,打开浏览器,粘贴,修改localhost:8888部分为 <your_ZYBO_IP_address>:9090 即可访问jupyter notebook
在这里插入图片描述
另:
文件夹路径输入\PYNQ\Xilinx可以直接访问板上文件在这里插入图片描述

Fin

这篇关于ZYBO-Z7开发板的PYNQ框架移植(PYNQ镜像制作)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284105

相关文章

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简