如何使用 Python 来创建一些强大的应用和实用工具

本文将探讨如何以 zynq ultrascale 器件上的 ip 核为目标,使用 python 来创建一些强大的应用和实用工具。此处提供了一个程序包,供您用于读取设备树和访问 ip 核。此外还提供一个实用工具,用于读取物理寄存器和开关 led。
python 是现如今最常用的编程语言之一。原因在于这种语言高产、易于部署且直观。并且正因其热门,产生了大量共享程序包可供其他用户使用。本教程将为您展示如何在 zcu104 开发板上轻松使用 python 来启动并运行程序。用户在构建文件系统时,所有必需的程序包都应已准备就绪。此处并未详细列出所有程序包,因为用户更了解自己的应用需要哪些程序包。
由于最终设计目标是嵌入式软件系统,因此更为实用的用例之一是接入嵌入式软件系统的存储器/外设。这里我们使用 mmap 程序包来打开 /dev/mem 并获取访问权。随后,我们可以在其中创建自己的程序包,以供在各种应用或实用工具中使用。我们还可以使用 subprocess 等程序包来访问文件系统。我曾经使用此方法来读取设备树,查看有哪些 ip 已启用以及这些 ip 的配置方式。在此提供了一个用于通过 python 控制嵌入式系统的定制程序包,供用户作为参考。
硬件设计:
本演示中使用的块设计 (bd) 如下所示。在此使用的是 zcu104 开发板,但此处流程应该是普遍适用的。
请参阅下方链接获取有关 vivado 2020.1 中的嵌入式流程的更多信息。
https://docs.xilinx.com/v/u/2020.1-english/ug898-vivado-embedded-design
为 petalinux 工程添加 python 支持
https://github.com/xilinx/device-tree-xlnx/tree/master/device_tree/data/kernel_dtsi/2020.1/board
在 python 中使用 /dev/mem:
创建 linux 镜像后,可以尝试对硬件设计中的外设进行读写。我们可以使用 /dev/mem,以物理方式接入存储器/寄存器。我们将使用 python 中包含的 mmap 程序包:
其中,addr 即为我们要接入的存储器或寄存器。
创建程序包:
用户可以自行创建程序包,以便将自己的函数添加到其它应用中(请阅读原文参阅附件)。
我已经创建了 1 个此类程序包,它支持用户执行以下操作:
-读取寄存器/存储器
-写入寄存器/存储器
-执行系统命令,如 cat、ls 等
-读取 mdio
-获取物理地址
-mii 转储
-读取设备树节点
-获取设备树属性
使用该程序包来执行读写:
使用该程序包来运行简单的 led 开关应用:
以下示例可用于开关 axi gpio led:
此程序包将永久循环,用户可使用 ctrl+ z 将其停止。
使用该程序包来读取 mdio:
此处我们将使用实用工具通过 mdio 来读取 phy:
#gem 地址、物理地址、偏移
使用该程序包来检测有效的物理 (phy) 地址:
我们可以在此处搜索有效的 phy 地址:
使用该程序包来执行 mii 转储:
在该程序包中包含 mii_dump 实用工具,它将搜索设备树中的任何已启用的 gem ip、自动检测有效的 phy 地址并转储 phy 寄存器:
读取设备树节点:
在此已经创建了一个实用工具,用于读取内核中的设备树节点。创建普遍适用任何设计的脚本时,此工具很有用,因为用户可以根据硬件来创建/使用应用。
例如,我们可以返回设备树中的所有 ip:
我们还可以筛选此搜索,查找设备树中已启用的所有 gem:
用户还可以仅搜索状态设置为“okay”的所有器件节点:


智米自然风风扇评测 有着出色的颜值表现
京微雅格液晶模块TG03荣膺2012年度中国最佳FPGA市场创新奖
2022年前8个月我国进口机电产品(含集成电路)4.56万亿元
Redmi K40系列上市后或将供不应求
三大运营商停售达量限速套餐,是要变相涨价吗
如何使用 Python 来创建一些强大的应用和实用工具
索尼Xperia 1具体参数详细介绍
Intel推出第二代神经计算棒 将满足新一代智能设备的需求
5G消息离成功还需要多久的时间
华为P10:我就是来统治安卓的
嵌入式Web服务器BOA移植与测试设计概述
俄军的无人机发展有多快
日本软银将开发可变形仿真机器人,2017年完成
发展工业物联网国内形势大好,工业物联网未来机遇巨大
2023国家网络安全宣传周 | 华为安全参展指南来啦!
怎么解决有关于data保存时间的时序错误?
野外施工神级装备:大功率便携式移动电源-在施工环境及野外环境下应用
美国国家安全局NSA的议程可能不仅仅是追踪比特币的公共账簿
电化学沉积技术在集成电路行业的应用
为自动化测试选择合适的Python框架