0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用PetaLinux自定义ZynqMP平台

YCqV_FPGA_EETre 来源:FPGA开发圈 2020-06-03 17:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本篇博文涵盖了配置设备树以将外设和第三方应用详细信息添加到 PetaLinux 工程中的基本流程。

在某些情况下,设备树无法生成相关外设所需的所有必需信息,例如,以太网 PHY 信息。

在此类情况下,您需要手动将此板级信息和特定开发板信息添加到设备树文件 (system-user.dtsi) 中。

PetaLinux 工具流程的顶级概况:

为 ZynqMP 平台创建和配置 PetaLinux 工程的基本步骤:

1. 在 china.xilinx.com 上可通过以下链接获取 Petalinux 安装程序和 BSP 文件:

https://china.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html

2. 使用以下命令获取 PetaLinux 设置:

source/settings.sh

3. 创建 PetaLinux ZynqMP 工程:

a. BSP 流程:

petalinux-create -t project -s xilinx-zcu102-v2019.1-final.bsp

(此示例适用于 ZCU102 开发板)

注:BSP 文件需从china.xilinx.com 下载

b. 模板流程:

petalinux-create --type project --template zynqMP --name custom-project

4.导入HDF

a. petalinux-config--get-hw-description=

b. 将“DTG SETTINGS”中的 MACHINE_NAME 值更改为相应的值。机器名称可采用下列任一值:ac701-full、ac701-lite、kc705-full、kcu105、zc1275-revb、zcu1285- reva、zc1751-dc1、zc1751-dc2、zc702、zc706、avnet-ultra96-rev1、zcu100-revc、zcu102- rev1.0、zcu104-revc、zcu106-reva、zcu111-reva、zedboard、vcu118- rev2.0 和 sp701-rev1.0

5. 保存并退出工程配置

6.运行以下命令以构建整个工程:

petalinux-build

PetaLinux 构建流程概述:

成功构建工程后,PetaLinux 会自动生成各种设备树文件,以及专用于评估的构建镜像或定制平台。

以下是构建 PetaLinux 工程时创建的各组件的树形结构:

编辑设备树文件以添加以太网 PHY 信息的步骤

建议使用 system-user.dtsi文件来添加、修改和删除各节点或值。

最后将添加系统用户 DTSI,这表示其中包含的值优先级较高。

您可通过在系统用户 DTSI 中定义其它 DTSI 来覆盖其中的任何现有值。

以下是将 PHY 信息添加到 PS 以太网节点的示例:

/dts-v1/;

/include/ "system-conf.dtsi"

/ {

};

Describe outside this "};".

&gem0{

phy-handle = <&phy0>;

ps7_ethernet_0_mdio: mdio {

phy0: phy@7 {

compatible = "marvell,88e1116r";

device_type = "ethernet-phy";

reg = <7>;

};

};

};

※ Definitions that do not exist in template

/include/ "system-conf.dtsi"

/ {

<< Fill in here >>

};

Define gem0 inzynqmp.dtsi:

gem0: ethernet@ff0b0000 {

compatible = "cdns,zynqmp-gem";

status = "disabled";

interrupt-parent = <&gic>;

interrupts = <0 57 4>, <0 57 4>;

reg = <0x0 0xff0b0000 0x0 0x1000>;

clock-names = "pclk", "hclk", "tx_clk";

#address-cells = <1>;

#size-cells = <0>;

#stream-id-cells = <1>;

iommus = <&smmu 0x874>;

power-domains = <&pd_eth0>;

};

设备树文件 system-user.dtsi 用途如下:

1. 添加节点

- 可将未寄存的节点或子节点添加到评估板的设备树和 PCW 的设备树中。

在以下示例中,我们可向 system-user.dtsi 添加信息,以便将原先使用 MIO (RGMII) 的 GEM0 更改为使用 EMIO (GMII) 并通过 GMII to RGMII IP 连接到另一个 PHY 芯片:

zynq-7000.dtsi

gem0: ethernet@e000b000 {

compatible = "cdns,zynq-gem", "cdns,gem";

reg = <0xe000b000 0x1000>;

status = "disabled";

interrupts = <0 22 4>;

clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;

clock-names = "pclk", "hclk", "tx_clk";

#address-cells = <1>;

#size-cells = <0>;

};


zc702.dtsi:

&gem0 {

phy-handle = <ðernet_phy>;

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_gem0_default>;

phy-reset-gpio = <&gpio0 11 0>;

phy-reset-active-low;

ethernet_phy: ethernet-phy@7 {

reg = <7>;

device_type = "ethernet-phy";

};

};


pcw.dtsi:

&gem0 {

phy-handle = <&phy0>;

phy-mode = "gmii";

status = "okay";

xlnx,ptp-enet-clock = <0x69f6bcb>;

ps7_ethernet_0_mdio: mdio {

#address-cells = <1>;

#size-cells = <0>;

gmii_to_rgmii_0: gmii_to_rgmii_0@8 {

compatible = "xlnx,gmii-to-rgmii-1.0";

phy-handle = <&phy0>;

reg = <8>;

};

};

};


请在此处添加外部 PHY 定义。

注:gmii_to_rgmii IP 的定义已作说明。

system-user.dtsi:

&gem0 {

ps7_ethernet_0_mdio: mdio {

#address-cells = <1>;

#size-cells = <0>;

phy0: phy@1 {// Add this node

reg = <1>;

microchip,led-modes = <1>;

};

gmii_to_rgmii_0: gmii_to_rgmii_0@8 {

compatible = "xlnx,gmii-to-rgmii-1.0";

phy-handle = <&phy0>;

reg = <8>;

};

};

};

2. 添加节点内容

可添加在评估板的设备树和 PCW 的设备树中未寄存的节点内容(参数)。请参阅以下示例中高亮的参数:

system-user.dtsi:

&gem0 {

local-mac-address = [00 0a 35 00 1e 53];

gmii2rgmii-phy-handle = <&gmii_to_rgmii_0>;

xlnx,has-mido = <0x1>;// Add these

ps7_ethernet_0_mdio: mdio {

#address-cells = <1>;

#size-cells = <0>;

phy0: phy@1 {

reg = <1>;

microchip,led-modes = <1>;

};

gmii_to_rgmii_0: gmii_to_rgmii_0@8 {

compatible = "xlnx,gmii-to-rgmii-1.0";

phy-handle = <&phy0>;

reg = <8>;

};

};

};

3. 更改节点的内容

您可更改在评估板的设备树和 PCW 的设备树中已寄存的参数值:

system-user.dtsi:

&gem0 {

local-mac-address = [00 0a 35 00 1e 53];

gmii2rgmii-phy-handle = <&gmii_to_rgmii_0>;

xlnx,has-mido = <0x1>;

phy-handle = <&phy0>;// Change the Value

};

4. 删除节点中的参数定义

可使用以下命令来删除评估板的设备树中已寄存的非必要参数行:/delete-property/

&gem0 {

/delete-property/ pinctrl-names;

/delete-property/ pinctrl-0;

/delete-property/ phy-reset-gpio;

/delete-property/ phy-reset-active-low;

};

5. 删除节点

您可使用以下命令来删除评估板设备树中已寄存的非必要节点和子节点:/delete-node/

&gem0 {

/delete-node/ ethernet-phy@7;// Delete Node

};

请注意,如果在别处引用某个节点,那么删除或更改该节点的值后,必须删除该节点。

操作方式如下:

6.使整个驱动定义无效化

您可禁用评估板设备树和 PCW 设备树中已启用的驱动定义。

驱动定义在 pcw.dtsi 中激活,状态为“okay”;

要将其禁用,请在system-user.dtsi 中写入以下内容:

&gem0 {

status = “disabled";

};

在 PetaLinux 中构建第三方 Linux 应用

执行如下修改后,可将任意现有实用工具(例如:iperf3)添加到 PetaLinux 工程中

编辑 /project-spec/meta-user/recipes-core/images/petalinux-image.bbappend

添加对应 Yocto 脚本可理解的实用程序名称(例如,iperf3)。
例如:
IMAGE_INSTALL_append = " peekpoke"

IMAGE_INSTALL_append = " gpio-demo"

IMAGE_INSTALL_append = “ iperf3 ”<<= add this line

使用以下命令将此应用作为用户包添加到 rootfs 中:

Petalinux-config -c rootfs->User Packages -> [*] iperf3

构建完成后,此应用会显示在 /usr/bin/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    26

    文章

    6413

    浏览量

    120711
  • BSP
    BSP
    +关注

    关注

    1

    文章

    104

    浏览量

    28087

原文标题:【开发者分享】使用 PetaLinux自定义ZynqMP平台

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 216次阅读
    使用Python/MyHDL创建<b class='flag-5'>自定义</b>FPGA IP

    MCUXpresso SDK创建自定义清单

    概述 MCUXpresso SDK 24.12 介绍塞德恩汉CED支持自定义清单,使开发人员能够精确定义其工作区中包含哪些组件、驱动程序、中间件和板支持包。此功能在极简主义、可重复性和 CI/CD
    发表于 04-07 07:11

    极海APM32F427如何实现自定义USB HID设备与PC进行通信

    最近需要使用到 APM32F427 枚举成Custom HID设备进行用户自定义通信,但是官方的例程只有提供的HID枚举为鼠标或者键盘类型的设备。这里记录一下,怎么使用Geehy官方的USB中间件,实现自定义的USB HID设备进行用户通信。
    的头像 发表于 03-30 09:30 2762次阅读
    极海APM32F427如何实现<b class='flag-5'>自定义</b>USB HID设备与PC进行通信

    如何为 Vision Five 2 编译自定义 Linux 内核?

    Vision Five 2 的 Debian 用户指南只提供了半页关于如何编译自己的内核的相当稀疏的内容。仅从该文档中,我无法制作我的自定义内核。那里的信息似乎相当不完整。如果有人能提供一些
    发表于 02-24 07:44

    电能质量监测装置可自定义监测时段吗?

    电能质量监测装置普遍支持自定义监测时段,现代中高端装置还具备分时差异化监测与灵活触发能力,可按时间、事件或混合策略定制采集与存储,兼顾精度、效率与存储成本。 一、自定义监测时段的核心实现方式 1.
    的头像 发表于 12-10 16:49 1172次阅读

    电能质量在线监测装置的自定义监测时段功能有哪些应用场景?

    电能质量在线监测装置的 自定义监测时段功能 ,核心价值是通过 “按需配置监测时间、采样频率和数据策略”,实现精准监测、资源优化与数据针对性分析,其应用场景覆盖工业生产、商业运营、电网运维、特殊保障等
    的头像 发表于 12-10 14:01 518次阅读
    电能质量在线监测装置的<b class='flag-5'>自定义</b>监测时段功能有哪些应用场景?

    电能质量在线监测装置可自定义监测时段吗?

    电能质量在线监测装置 完全支持自定义监测时段 ,并提供 精细化、差异化 的配置能力。核心通过 嵌入式任务调度系统 结合 本地 / 远程参数配置 实现,可灵活设定监测开始 / 结束时间、采样频率、数据
    的头像 发表于 12-10 13:58 460次阅读
    电能质量在线监测装置可<b class='flag-5'>自定义</b>监测时段吗?

    无图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 中的自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检查,用户可实现工作流程的高效自动化运行。
    的头像 发表于 11-30 14:13 773次阅读
    无图形界面模式下<b class='flag-5'>自定义</b>检查工具的应用

    采用汇编指示符来使用自定义指令

    具体实现 1、采用.word .half .dword等汇编指示符直接插入自定义指令,这种方法需要自己指定寄存器。其中.word为插入一个字的数据即32位,.half为插入半字即16位
    发表于 10-28 06:02

    如何使用SDK进行自定义音频播放功能

    在上一篇文章安信可离线语音模组 VC-01、VC-02 系列教程 【二次开发篇】自定义音频替换失败过程中,简要概述了res_build_tool.py 文件, 其主要的作用就是将音频文件进行转换,从而使编译固件的时候能够将音频文件编译到BIN中,然后在各项事件触发的时候实现播放。
    的头像 发表于 09-25 15:52 4305次阅读
    如何使用SDK进行<b class='flag-5'>自定义</b>音频播放功能

    LOTO示波器自定义解码功能—CANFD解码

    LOTO示波器软件更新了自定义解码功能,并在bilibili上传了演示视频,视频链接: https://www.bilibili.com/video/BV1wq3ezjEjQ
    的头像 发表于 07-11 10:34 1191次阅读
    LOTO示波器<b class='flag-5'>自定义</b>解码功能—CANFD解码

    大彩讲堂:VisualTFT软件如何自定义圆形进度条

    VisualTFT软件如何自定义圆形进度条
    的头像 发表于 07-07 17:10 1899次阅读
    大彩讲堂:VisualTFT软件如何<b class='flag-5'>自定义</b>圆形进度条

    KiCad 中的自定义规则(KiCon 演讲)

    “  Seth Hillbrand 在 KiCon US 2025 上为大家介绍了 KiCad 的规则系统,并详细讲解了自定义规则的设计与实例。  ”   演讲主要围绕 加强 KiCad 中的自定义
    的头像 发表于 06-16 11:17 2554次阅读
    KiCad 中的<b class='flag-5'>自定义</b>规则(KiCon 演讲)

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘可以
    的头像 发表于 06-05 14:19 2604次阅读

    如何使用自定义设置回调函数?

    你好,我正在尝试编写自己的自定义设置回调函数,并使用 fastEnum=false。 是否有任何代码示例或资料可供我参考? void CyU3PUsbRegisterSetupCallback
    发表于 05-21 06:11