python led"/>
python led
原标题:Python on Zynq - 手把手教你如何在Zybo上跑Python制作一个LED呼吸灯
来源: www.DIGILENT/community
作者: Michael080808
导读
继 Xilinx 联合 DIGILENT 推出世界上第一款支持 Python 的 FPGA 嵌入式计算系统 后,通过 “Python + 开源硬件” 加速创新,正成为时下开源软硬件爱好者的一股全新关注热潮。
既然同样是 ZYNQ 开发板,“小粉” PYNQ(Zynq-7020)可以跑 Python 进行控制,那么作为经典 Zynq 开发板,有“小 Zedboard 之称” 的 Digilent Zybo(Zynq-7010)是否也可以呢?
这不,DIGILENT 中文技术社区用户 Michael080808 近日就在社区内就发布了一篇全新教程,手把手教你如何「在 Zybo 上跑 Python 制作一个LED呼吸灯项目」吧~
01
作者感言
ZYBO上运行Python,对于有开发经验的同学来说,设计PL部分和配置安装Python并不是非常难,主要的难度还是在Linux的选择和配置上。大家对于Linux的Kernel、U-boot、Rootfs编译,Linux驱动开发不熟悉,会对Python的使用构成影响。一旦解决这些问题,使用Python进行调用将变得非常轻松,提供给他人进行二次开发也更容易,更方便。希望这个教程可以给大家一点帮助。
02
Demo视频
03
材料清单
硬件准备:
一块 Digilent Zybo 开发板;
一张 8GB 以上的 Micro SD 卡;
一个 SD 卡读卡器;
一根 Micro USB 数据线;
一根以太网线;
软件准备:
Vivado 2015.4
xillinux-1.3.img.gz
xillinux-eval-zybo-2.0a.zip
PuTTY或者Xshell(Windows系统)
Win32DiskImager(Windows系统)
04
实现步骤
Vivado 2015.4:.html
xillinux-1.3.img.gz:.3.img.gz
xillinux-eval-zybo-2.0a.zip:.0a.zip
Win32DiskImager(Windows系统):/
* 实际测试中,Xillybus制作的Vivado工程可以在2017年以前的版本,即除2017.1和2017.2版本上进行综合、布线、生成比特流(Bitstream)文件(*.bit)。Digilent官方提供的支持是以2015.4为基础的。因此在这里使用2015.4版本
2.解压xillinux-1.3.img.gz,得到xillinux-1.3.img文件
3.将MicroSD卡进行格式化成FAT32文件系统格式
4.将镜像烧写到SD卡中:选定xillinux-1.3.img镜像,选定SD卡盘符,进行烧写
5.解压xillinux-eval-zybo-2.0a.zip,将bootfiles文件夹内的boot.bin和devicetree.dtb拷贝到SD卡第一个分区
6.打开Vivado,选择Tools -> Run Tcl ,选择解压xillinux-eval-zybo-2.0a.zip目录下blockdesign中的xillydemo-vivado.tcl生成工程
7.点击生成bitstream,等待生成bitstream后,在工程目录下找到xillydemo.bit,同样拷贝到SD卡第一个分区
8.将SD卡插入Zybo开发板上,确认VGA旁边的JP5跳线连接在SD上,连接网线到路由器上,连接Micro USB线到电脑上,打开Zybo
9.查看设备管理器以确定Zybo使用的串口端口号,使用PuTTY或者Xshell进行连接
10.对文件系统部分进行扩展,以防止下边使用过程中SD卡空间不够用:
重启之后,使用resize2fs扩展文件系统
11.在确定联网的情况下使用sudo apt-get update; sudo apt-get upgrade; 对Xillinux(Ubuntu 12.04 LTS)进行更新
如果遇到身边没有路由器,只有电脑能够上网,怎么办?
将网线连接在笔记本电脑上
Windows上:
1)将以太网的TCP/IPv4协议IP地址设置成192.168.137.1,子网掩码设置成255.255.255.0
2)设置好自己常用的DNS服务器地址,例如
阿里云DNS:223.5.5.5,223.6.6.6;
360DNS:123.125.81.6,101.226.4.6
114DNS:114.114.114.114,114.114.115.115
Google DNS:8.8.8.8,8.8.4.4
3)将能够连接Internet的连接共享给连有Zybo的以太网连接
4)确保网络防火墙允许192.168.137.0~192.168.137.255网段的数据能够通过
5)在Zybo上设置/etc/network/interfaces文件如下:
6)在Zybo上设置/etc/resolv.conf,添加常用的DNS服务器,同时将网关192.168.137.1添加到其中
7)重启网络服务,这样,就可以使用Windows为Zybo共享网络了
Linux上:Zybo保持默认设置,Linux上编辑有线连接,将IPv4设置中的方法改成与其它计算机共享,保存即可共享网络
*实际测试还是与路由直接连接的时候速度最快,所以尽量使用路由进行连接
除了串口连接,还有什么方法可以连接Zybo上的Linux
可以使用OpenSSH通过网络进行Linux的访问:首先先安装OpenSSH的服务器端,sudo apt-get install openssh-server(如果Zybo需要访问其他Linux,需要安装OpenSSH的客户端,sudo apt-get install openssh-client)
OpenSSH访问必须需要密码,所以需要passwd命令设置密码:
然后使用PuTTY或者Xshell通过输入IP地址,输入用户名和密码,通过OpenSSH进行访问
12.安装python:sudo apt-get install python3 python3-dev python3-dbg(在Ubuntu 12.04 LTS上,Python最高支持3.2版本)
13.创建一个python脚本,添加以下内容:
#!/usr/bin/python3
#-*- coding:utf-8 -*-
import time
import sys
import os
dir = 0
pwm = 0
try:
while True:
os.system('echo 1 > /sys/class/leds/mmc_led/brightness')
time.sleep(0.01 * pwm / 100)
os.system('echo 0 > /sys/class/leds/mmc_led/brightness')
time.sleep(0.01 * (100 - pwm) / 100)
if dir == 0:
pwm = pwm + 10
else:
pwm = pwm - 10
if pwm > 100:
dir = 1
pwm = 100
if pwm < 0:
dir = 0
pwm = 0
except KeyboardInterrupt:
os.system('echo 0 > /sys/class/leds/mmc_led/brightness')
exit()
*对于Linux系统下设备的读写控制,可以参考这篇博客:.html
*Linux系统下所有的设备都是基于Linux树状结构进行设备挂载,基于文件读写的方式进行操作。向控制结点通过pipe管道写入数据,使得LED被点亮
*下面是测试的时候的视频:WP_20170805_00_36_34_Pro.mp4
*python通过os.system('')调用系统命令进行LED的控制
14.执行脚本,可以观察到,MIO7对应的LED呈现呼吸灯状态
责任编辑:
更多推荐
python led
发布评论