PYNQ-Z2零基础学习详解

本人在学习PYNQ,想用自己的理解来解释零基础学习过程中的一些坑,同时采用非官方语言来介绍如何使用PYNQ。大家有什么问题可以给我留言。也可以关注微信公众号    三丰杂货铺    一起讨论。

 

 

简介:PYNQ是“python productivity for zynq”的缩写,它是一块开发板,是赛灵思公司出品,能用python来简化开发赛灵思公司的zynq的芯片的。通常FPGA开发都是采用硬件描述语言的(如verilog)的。pynq实现了用python纯软件编程。片上系统SOC包含两部分,PS和PL端(是什么不知道,先记住),用Python编程,主要是对PS端的简化。

 

day 0

       搭建硬件

其实就是利用win32磁盘工具给SD卡烧录一个镜像,也即linx系统。然后将SD卡插到PYNQ-Z2里面。最后上电看一看灯的闪烁是否符合要求就行。

注意:1.通过读卡器给TF卡烧录系统后,会弹出不可用,是否格式化的窗口。点否即可。

2。供电模式要设置正确,如果使用电源适配器给PYNQ供电,要更改跳线。(USB供电的模式电流小)

3.可以直接用网线连接电脑和PYNQ,也可以通过路由器连接。通过路由器连接,PYNQ就可以上网。电脑连WIFI,电脑通过网线和PYNQ连接,PYNQ也可以上网!

 

day 1

    搭建软件环境

就是说,不能直接在pynq上编程,要在计算机上编。大概有3种方式:

1.计算机和PYNQ网线直连,进入jupyter,然后编程,把程序下载到pynq里

2.在文件管理器打开pynq的文件列表,把编号的程序拖进去

3.通过串口连接,最快,适用于没网的情况。设备里出现usb serial convert A和usb serial convert B而没有出现端口号时,可以下载个360驱动试一试。看端口下是COM几,我这次是COM10。打开串口终端,可以发送指令。可以ping一下

注意:1.使用串口时,要使用专用可传输数据的USB线,不能用仅可充电的USB线,线在PYNQ那里要确认插入进去

           2.搭建软件环境指的是在自己笔记本电脑上登陆upyter页面,这样就可以利用python在电脑上给pynq编程了。

           3.如果在打开设备管理器时,找不到com口,可以点击查看,再点击显示隐藏设备,灰色的口是没有连接的,黑色的就是正确的。

串口和路由器这两种连接方式是可以共存的

 

day 2

今天,用day1的第一种方法中的jupyter来给pynq的板子点亮第一个LED灯。

led灯直接连接到了PYNQ的PL端,为了通过python控制led,我们要先导入overlay。私以为,通过路由器连接是最好最安全的方法。是在线编程

代码如下:

from pynq.overlays.base import BaseOverlay
base_overlay = BaseOverlay("base.bit")
base_overlay.leds[0].on()
import time
while True:#base_overlay.leds[0].on()#time.sleep(0.5)#base_overlay.leds[0].off()#time.sleep(0.5)for i in range(0,8):base_overlay.rgbleds[4].write(i)time.sleep(0.1)

先插入overlay,再令灯闪灭。给大家介绍一些英文文档供大家学习:

 https://pynq.readthedocs.io/en/latest/index.html

https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.led.html

https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.rgbled.html

day 3

今天来学习使用拨码以及按键,会一些python语法,然后查阅文档,是很好的学习方法。该代码段功能主要是通过读取按键与拨码的值来控制灯的闪灭

from pynq.overlays.base import BaseOverlay
base_overlay = BaseOverlay("base.bit")
if (base_overlay.switches[0].read()==0 and base_overlay.switches[1].read()==0) :base_overlay.leds[0].on()
elif (base_overlay.switches[0].read()==0 and base_overlay.switches[1].read()==1) :base_overlay.leds[1].on()
elif (base_overlay.switches[0].read()==1 and base_overlay.switches[1].read()==0) :base_overlay.leds[2].on()
elif (base_overlay.switches[0].read()==1 and base_overlay.switches[1].read()==1) :base_overlay.leds[3].on()#注意python的elif和and和C语言不一样
#btn = base_overlay.buttons[0].read()#按键
#print(btn)
#sw = base_overlay.switches[0].read()
#print(sw)
#base_overlay.switches[0].wait_for_value(1)#等待拨码值为1才执行下一句
#print("switch on")
#base_overlay.buttons[0].wait_for_value(1)#等待按键值为1才执行下一句
#print("btn pressed")
import time
while 1:if base_overlay.buttons[0].read() == 1 :#按键for i in range(0,8):base_overlay.rgbleds[4].write(i)time.sleep(0.1)  

day 4

用串口shell指令,直面linux系统。用putty打开后的界面,在里面输入sudo apt-get install vim安装vim(需笔记本联网)

输入密码的时候,xilinx不显示,输入完成后直接回车即可

然后新建一个源码文件:sudo vim test.py

输入xilinx密码

就可以进入编译环境辣!

进入编译环境,先点击i进入编辑模式,默认是指令模式

最后保存,也可以下载到pynq中运行编写的代码

day 5

我们还可以参与pynq社区里的项目

从github上安装BNN社区项目出现这种情况是因为你的PYNQ没有连接路由器(也可能其他原因,反正是玄学,同样的情况第二次就不行了)。

解决方法是在通过串口连接板子的同时,电脑连路由器LAN口,PYNQ连另一个LAN口

成功界面:

以上步骤是将项目下载到pynq板子上,之后我们就可以从jupyter上运行代码辣!

 

day 7

今天基于vivado在PL端操作,之前是基于PS端。

在安装好vivado之后,需要先导入板层文件,这样开发就会变得快多了。

在创建好vivado工程之后,编程之前,加载 XDC 约束文件,控制引脚分配。

创建工程的时候,有Boards和Parts,要确认选择了Boards后选择PYNQ-Z2

用vivado的供电方式如下:

 


## 微信公众号

欢迎大家关注我的个人公众号,现阶段主要总结Robomaster相关的计算机视觉知识:Qt,C++,CMake,OpenCV等等
公众号名称:三丰杂货铺


 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1617874.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

sony z2 android 5.0,索尼Xperia Z2 5.0 root教程_索尼Z2获取5.0系统的root

来说一下咱们的索尼Xperia Z2手机的5.0系统的root,因为现在很多机友的系统是5.0的,可是对于5.0的系统很多机友还不知道如何进行root操作,之前的针对4.4的系统的root方法肯定是用不到5.0的系统上的,因此需要专门的针对5.0的root软件…

超详细pynq-z2入门

pynq-z2入门 文章目录 0.pynq架构介绍1.下载pynq-z2镜像2.镜像烧录3.将pc端的IP地址改为192.168.2.1004.开发板跳线帽连接5.开发板上电6. 安装好jupyter环境7.通过IP地址192.168.2.99或者pynq:9090连接开发板8.访问板子的文件系统8. 通过samba传输文件 pynq-z2的一些基本信息参…

机械革命z2黑苹果双系统改造计划

机械革命z2黑苹果改造计划 原来的系统硬盘才256G实在太小了,趁固态便宜搞了一块大华C900Plus-b 1T固态,加上之前电脑里后加的一块海康威视c2000pro 1T准备搞一个winmac双系统生产力工具 黑苹果效果展示 黑苹果的详细教程b站上有很多,也可以…

PYNQ-Z2 镜像烧录设备启动网络设置

文章用于学习记录 文章目录 前言一、PYNQ-Z2 开发板板卡介绍二、环境配置与板卡启动1. 软硬件准备2. 烧写镜像3. 连接 PC,上电启动 三、给电脑配置一个静态的 IP四、连接到 Jupyter五、Samba 文件共享六、例程测试总结 前言 PYNQ 即 pythonZYNQ ,ZYNQ 分…

零基础编程桌球小游戏

对于零基础的同学来说自己编程一个小游戏之类的会有很大的成就感吧。那么我就来分享一些编程小游戏的技巧。就拿一个台球在台球桌上动来说吧。对于零基础的人来说要不急不躁慢慢的来。我分享的代码可能有些简化,不见得是最好的但是是最上手的。 在编程过程中我们会用…

java 台球_Java实现简单台球游戏

Java实现简单台球桌问题,供大家参考,具体内容如下 需求: 使小球可以在桌面上移动,移动到桌面边缘将被弹回,显示小区的移动 素材: 小球照片 桌球照片 程序源代码: package 桌球游戏; import java…

QQ桌球瞄准器开发(5)使用注册表保存配置

原文链接: http://dev.mjxy.cn/a-Step-5-Use-the-registry-to-save-the-configuration.aspx 转载请注明: 敏捷学院-技术资源库 http://mjxy.cn 作者:邢泉 本节介绍如何使用注册表保存程序的配置信息,方便我们再次运行程序的时候加载上次的…

QQ桌球瞄准器开发(2)创建项目添加主窗体

转载请注明: 敏捷学院-技术资源库 http://mjxy.cn 作者:邢泉 原文链接:http://dev.mjxy.cn/a-Step-2-Create-the-main-form-to-add-items.aspx 我使用的是VS2010 .NET Framework 4,实际.NET 2.0以上都可以完成这个程序。 创建项目 在“…

打架斗殴行为识别算法

打架斗殴行为识别算法通过yolov7网络模型深度学习算法,打架斗殴行为识别算法对提取到的信息进行分析和比对,判断是否存在打架斗殴行为。打架斗殴行为识别算法一旦打架斗殴行为识别算法识别到打架斗殴行为,系统会立即生成预警信息,…

java基于SSM框架的洗车店预约系统的设计与实现

基于SSM框架的洗车店预约系统的设计与实现 #### 开发工具(eclipse/idea): eclipse4.5/4.8或者idea2018,jdk1.8 * * * 洗车店预约系统设计了注册会员和管理人员两个功能模块,其功能如下: 1、注册、登陆 该系统根据操作权限的不同分为管理员和…

基于Java实现的汽车租赁管理系统、SSM/SpringBoot两个版本都有+mysql汽车出租系统实现

基于Java实现的汽车租赁管理系统、SSM/SpringBoot两个版本都有mysql汽车出租系统实现 感兴趣的朋友可以家 3060912346 主要技术 SpringBoot\SSM(两个版本都有) HTML、jQuery、HTML、CSS、JS Mysql bootstrap 开发工具和环境 Eclipse\idea(都…

基于SSM的车辆维修管理系统

其他项目,点击作者主页 目录 1 系统简介 2 系统相关技术 2.1面向对象 2.2 SSM框架 2.3 Tomcat服务器 2.4 MySQL数据库 2.5 Navicat工具 3 需求分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2 需求分析 4 系统设计 4.1 …

车辆管理系统(asp.net+SqlServer)

摘 要 2 Abstract 3 第1章 绪 论 6 1.1研究意义 6 1.2研究背景 6 1.3国内外研究现状 7 1.4本课题研究的主要内容 7 第2章 关键技术分析及其在课题中的应用 8 2.2 Sql server 8 2.4 PowerDesigner Trial 10 第3章 系统实施 12 3.1系统功能简介 12 3.2车辆信息管理流程 14 3.2.1车…

基于SSH开发小型洗车门店客户管理系统

基于S2SH开发小型洗车门店客户管理系统论文文件资料(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:MyEclipse(Eclipse)JdkTomcatMYSQL数据库运行效果图: 基于S2SH开发小型洗车门店客户管理系统论文文件资料(大…

基于Python的车辆管理系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字):系统实现功能包括: 管理员:运营信息的管理、车辆维修信息的管理、事故信息的管理、司机信息…

车到家洗车管理系统[JavaWeb]SSH+MySQL+Jsp

GitHub地址:https://github.com/yzk2356911358/CarmessageSystem 数据库:https://download.csdn.net/download/yzk2356911358/10793734

【C++11新特性】可变参数模板

文章目录 1. 认识可变参数模板2. 可变参数模板的定义方式3. 参数包的展开方式3.1 递归展开参数包3.2 逗号表达式展开参数包 1. 认识可变参数模板 可变参数模板是C11新增的最强大的特性之一,它对参数高度泛化,能够让我们创建可以接收可变参数的函数模板和…

QEMU 仿真RISC-V freeRTOS 程序

1. 安裝RISC-V 仿真環境 --QEMU 安裝包下載地址: https://www.qemu.org/ 安裝命令及安裝成功效果如下所示, target-list 設定爲riscv32-softmmu, $ cat ~/project/qemu-8.0.4/install.sh sudo apt-get install libglib2.0-dev sudo apt-get install libpixman-1-dev ./co…

给微软.Net runtime运行时提交的几个Issues

前言 因为目前从事的CLRJIT,所以会遇到一些非常底层的问题,比如涉及到微软的公共运行时和即时编译器或者AOT编译器的编译异常等情况,这里分享下自己提的几个Issues。原文:微软.Net runtime运行时提交的几个Issues Issues 一.issues one 第一个System.Numerics.Vecto…

报错处理:Docker容器无法启动

具体报错: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"program\": executable file not found in $PATH": unknown. 报错环境: 该报错出现在使用…