ZYNQ LINUX运行python的环境搭建

[ZYNQ LINUX运行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:
在这里插入图片描述
读取设备树节点:
在此已经创建了一个实用工具,用于读取内核中的设备树节点。创建普遍适用任何设计的脚本时,此工具很有用,因为用户可以根据硬件来创建/使用应用。
例如,我们可以返回设备树中的所有 IP:

在这里插入图片描述
用户还可以仅搜索状态设置为“okay”的所有器件节点:

在这里插入图片描述

赛灵思中文技术支持社区

欢迎在赛灵思中文技术支持社区中留言讨论开发过程中遇到的问题与启发!

本社区致力于为Xilinx 用户及生态合作伙伴提供一个分享、讨论和相互协作解决问题的交流社区,注册即可浏览论坛内容或者参与讨论。

https://support.xilinx.com/s/?language=zh_CN

可通过微信关注:赛灵思官网
在这里插入图片描述

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在赛灵思(Xilinx)的Zynq芯片上搭建Linux系统,可以按照以下步骤进行操作: 1. 准备工作: - 下载适用于Zynq芯片的Linux内核源代码和根文件系统(Root File System)。可以从Xilinx官方网站或其他可靠来源获取。 - 确保你有一个交叉编译工具链,用于构建Linux内核和设备树文件。可以使用Xilinx提供的工具链或其他适用的交叉编译工具链。 2. 配置交叉编译工具链: - 将交叉编译工具链添加到系统的PATH环境变量中,以便可以直接使用命令行进行交叉编译。 3. 构建Linux内核: - 进入内核源代码目录,并使用交叉编译工具链进行配置。可以使用以下命令: ``` make ARCH=arm CROSS_COMPILE=<交叉编译工具链前缀> xilinx_zynq_defconfig ``` - 根据需要,可以使用`make menuconfig`命令进行更详细的内核配置。 - 使用交叉编译工具链进行编译,可以使用以下命令: ``` make ARCH=arm CROSS_COMPILE=<交叉编译工具链前缀> ``` - 编译完成后,将生成的内核映像(例如`zImage`)保存到适当的位置。 4. 构建设备树文件: - 进入内核源代码目录,并使用交叉编译工具链进行设备树配置。可以使用以下命令: ``` make ARCH=arm CROSS_COMPILE=<交叉编译工具链前缀> xilinx_zynq_defconfig ``` - 根据需要,可以使用`make menuconfig`命令进行更详细的设备树配置。 - 使用交叉编译工具链进行编译,可以使用以下命令: ``` make ARCH=arm CROSS_COMPILE=<交叉编译工具链前缀> dtbs ``` - 编译完成后,将生成的设备树文件(例如`.dtb`文件)保存到适当的位置。 5. 构建根文件系统: - 将根文件系统解压到适当的位置。可以使用以下命令: ``` tar xf <根文件系统压缩包> -C <目标目录> ``` - 根据需要,可以对根文件系统进行定制和配置。 6. 配置引导加载程序(Bootloader): - 根据你使用的引导加载程序(如U-Boot)的要求,进行相应的配置。这可能涉及到设定引导参数、设备树文件路径等。 7. 运行Linux系统: - 将Zynq芯片与计算机连接,并使用串口或网络进行通信。 - 配置引导加载程序以启动Linux内核和根文件系统。 - 在Zynq芯片上执行引导加载程序,启动Linux系统。 这些步骤提供了一个基本的概述,用于在Zynq芯片上搭建Linux系统。具体的细节和配置可能因芯片型号、开发板和系统需求而有所不同。建议参考Xilinx的文档和相关资源,以获取更详细和特定的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值