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

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

3天内不再提示

Petalinux工程中设备树的介绍

YCqV_FPGA_EETre 来源:XILINX嵌入式 作者:Terry Ni 2021-02-20 16:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。

Petalinux 工程中设备树的位置

当我们创建了一个 petalinux 工程后(以zcu102为例),在编译的时候,会自动生成对应的设备树文件。这些设备树的描述信息通常在以下2个工程路径下。

第一个是在 components/plnx_workspace/device-tree/device-tree 路径下,这个路径下主要保存的都是基于你导入的hdf/xsa后,自动生成的设备树信息。通常包括PS的设备树,时钟的设备树,PL 部分 IP 的设备树(Xilinx发布的包含驱动的IP),以及设备树头文件。

。/components/plnx_workspace/device-tree/device-tree/zynqmp-clk-ccf.dtsi

。/components/plnx_workspace/device-tree/device-tree/zcu102-revc.dtsi

。/components/plnx_workspace/device-tree/device-tree/pl.dtsi

。/components/plnx_workspace/device-tree/device-tree/system-top.dts

。/components/plnx_workspace/device-tree/device-tree/zynqmp.dtsi

。/components/plnx_workspace/device-tree/device-tree/system-conf.dtsi

。/components/plnx_workspace/device-tree/device-tree/pcw.dtsi

另一个是在 project-spec/meta-user/recipes-bsp/device-tree/files路径下,这个路径下主要就是用户基于自动生成的设备树,自行添加和修改的部分。这部分可以查看 UG1144 第10章 Device Tree Configuration 节的内容。

。/project-spec/meta-user/recipes-bsp/device-tree/files/openamp.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/pl-custom.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/xen-qemu.dtsi

。/project-spec/meta-user/recipes-bsp/device-tree/files/xen.dtsi

需要注意的是,如果 petalinux-config-》DTGsettings-》MACHINE_NAME 采用的是xilinx开发板预设的名称的话(UG1144DTG Settings 章节中的 Machine name 的说明),那么会自动生成对应开发板相关的设备树信息。

b1c67ca2-71af-11eb-8b86-12bb97331649.png

所以如果使用的是自己的硬件平台,那么尽量不要使用预设的名称,这样可以避免导入多余的设备树信息从而导致编译失败或者最终功能不正确。

如何修改设备树

1. 基于自动生成的设备树,添加和修改节点。

通过修改。/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi,来实现对之前已经定义的设备树节点中的属性进行变更,也可以添加没有自动生成的设备树节点。

/dts-v1/;

/include/ “system-conf.dtsi”

/ {

};

&gem0 {

phy-handle = 《&phy0》;

ps7_ethernet_0_mdio: mdio {

phy0: phy@7 {

compatible = “marvell,88e1116r”;

device_type = “ethernet-phy”;

reg = 《7》;

};

};

};

gpio-leds {

compatible = “gpio-leds”;

led-ds23 {

label = “led-ds23”;

gpios = 《&ps7_gpio_0 10 0》;

default-state = “on”;

linux,default-trigger = “heartbeat”;

};

};

有时候为了方便设备树的管理,可以定义多个设备树文件,然后在 system-user.dtsi 中将这些设备树文件都包含进去,如下所示。

/include/ “system-conf.dtsi”

/include/ “system-user-1.dtsi”

/include/ “system-user-2.dtsi”

/include/ “system-user-3.dtsi”

/ {

};

当添加了其他的dtsi文件后,还需要修改。/project-spec/meta-user/recipes-bsp/device-tree/device-tree.bbappend 文件,将这些 dtsi 文件的路径信息包含进去。如下所示。

SRC_URI += “file://system-user.dtsi”

SRC_URI += “file://system-user-1.dtsi”

SRC_URI += “file://system-user-2.dtsi”

SRC_URI += “file://system-user-3.dtsi”

2. 完全使用自己的设备树

我们还可以更改 petalinux-config-》 Auto Config Settings 中的配置,直接使用自己编写好的设备树。

取消 Devicetree autoconfig,使能 Specify a manual device tree include directory, 然后指定设备树的路径地址。

b209458c-71af-11eb-8b86-12bb97331649.png

怎么描述设备树

设备树中描述的信息都是要与 kernel中设备的驱动互相对应的。如果驱动中需要某个参数,但是设备树中并没有包含,很可能就会编译错误或者直接使用了默认值,从而导致工作异常。kernel 的设备驱动中,一般都会包含设备树的描述说明来保证设备树的正确。你可以在 git上的 kernel 源码中找到响应的设备树说明。以 GPIO 驱动为例。你可以找到相关的设备树描述信息如下。

https://github.com/Xilinx/linux-xlnx/blob/xlnx_rebase_v5.4_2020.1/Documentation/devicetree/bindings/gpio/gpio-zynq.txt

Example:

gpio@e000a000 {

#gpio-cells = 《2》;

compatible = “xlnx,zynq-gpio-1.0”;

clocks = 《&clkc 42》;

gpio-controller;

interrupt-parent = 《&intc》;

interrupts = 《0 20 4》;

interrupt-controller;

#interrupt-cells = 《2》;

reg = 《0xe000a000 0x1000》;

};

另外,你可以查看 xilinx wiki上 linux driver 的主题页面来获取所有 Xilinx 支持的设备驱动内容,其中包含有各个设备树的例子以及相关配置等说明。

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841873/Linux+Drivers

反编译设备树

为了最终确认设备树是否正确,我们可以通过 dtc 这个小应用,将 dtb 文件反编译成 dts 设备树文件。这个设备树文件,从 system-top.dts 这个 top 文件开始,把所有包含的设备树内容都整合到了一个 dts 文件中,便于我们确认最终的设备树是否正确。其命令格式如下

dtc-I dtb -O dts -o system.dts system.dtb

原文标题:开发者分享 | Petalinux 工程中设备树的介绍

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

责任编辑:haq

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

    关注

    73

    文章

    2205

    浏览量

    131819

原文标题:开发者分享 | Petalinux 工程中设备树的介绍

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    科技,IPO申请获受理

    电子发烧友网综合报道 3月20日,上交所网站显示,宇科技股份有限公司科创板IPO申请已受理,成为又一家科创板IPO“预先审阅”落地项目。此次IPO,宇科技拟募资42.02亿元。   招股书显示
    的头像 发表于 03-20 18:33 4178次阅读
    宇<b class='flag-5'>树</b>科技,IPO申请获受理

    RK3576平台PCA9548 I2C开关设备配置与生效全解析

    中广泛应用。本文结合实际设备配置,从 配置解析 、 生效全流程 、 开发关键要点 三个维度,讲透PCA9548在Linux系统的落地实现,嵌入式开发人员可直接对标实操。 一、先看懂:PCA9548
    的头像 发表于 02-28 11:18 1768次阅读
    RK3576平台PCA9548 I2C开关<b class='flag-5'>设备</b><b class='flag-5'>树</b>配置与生效全解析

    Linux设备到底是啥?一张图看懂硬件适配的「翻译官」

    你有没有想过:同一份 Linux 内核镜像,为啥能在不同型号的开发板上跑起来?比如一块 ARM 架构的开发板,今天换个显示屏、明天加个传感器,内核不用重新编译就能识别新硬件 —— 这背后,设备(Devicetree) 功不可没。
    的头像 发表于 02-09 17:01 1271次阅读
    Linux<b class='flag-5'>设备</b><b class='flag-5'>树</b>到底是啥?一张图看懂硬件适配的「翻译官」

    深入理解设备chosen节点:固件与内核的“配置桥梁”

    在嵌入式 Linux 开发设备(Device Tree)是连接硬件与内核的关键纽带。但有一个节点很特殊 —— 它不描述任何硬件模块,却直接决定内核能否正常启动,这就是chosen节点。
    的头像 发表于 02-09 16:36 266次阅读
    深入理解<b class='flag-5'>设备</b><b class='flag-5'>树</b>chosen节点:固件与内核的“配置桥梁”

    Linux 6.8 内核 - 错误:找不到 cmdline 扁平化设备怎么解决?

    我正在尝试一个新的 6.8 linux 内核,但我在启动时收到这个错误: 从0x44000000到0x40200000的移动图像,end=41724000 错误:未找到 cmdline 扁平化设备
    发表于 02-09 07:13

    无线倾角传感器在古监测的应用:以科技守护活文物的结构安全

    无线倾角传感器在古监测的应用:以科技守护活文物的结构安全
    的头像 发表于 01-09 11:38 759次阅读
    无线倾角传感器在古<b class='flag-5'>树</b>监测<b class='flag-5'>中</b>的应用:以科技守护活文物的结构安全

    【OK3506-S12Mini试用评测(三)】在虚拟机修改设备

    要实现引脚复用功能,核心操作是修改镜像设备(DTS)文件,具体步骤可按以下详细指引操作,确保配置准确适配开发板与镜像版本: 一、定位 DTS 文件路径 首先需进入镜像对应的文件目录,按以下路径
    发表于 11-19 17:21

    【OK3506-S12Mini试用评测(二)】开发板SDK配置动态设备

    在配好的虚拟机的终端输入./build.sh bconfig,选择Kernal 进去之后选择图中选项(按Y确定) Defconfig name 需要在终端输入命令,才能得到需要写的名字。 动态设备的名字是在虚拟机中找到要用的的dts文件。
    发表于 11-19 17:09

    如何在AMD Vitis Unified IDE中使用系统设备

    您将在这篇博客中了解系统设备 (SDT) 以及如何在 AMD Vitis Unified IDE 中使用 SDT 维护来自 XSA 的硬件元数据。本文还讲述了如何对 SDT 进行操作,以便在 Vitis Unified IDE
    的头像 发表于 11-18 11:13 3292次阅读
    如何在AMD Vitis Unified IDE中使用系统<b class='flag-5'>设备</b><b class='flag-5'>树</b>

    E203工程源码时钟解析

    的system.v文件以及引脚约束文件,和rtl文件夹内的源码,我们参考源码绘制了E203在MCU200T的时钟,方便我们团队对E203源码的时钟进行修改,分享如下:
    发表于 10-29 07:25

    成都汇阳投资关于智元与宇拿下 1.24 亿订单,人形机器人商业化加速

          中国移动招标 1.24 亿元机器人大订单 ,智元与宇中标 近日 ,智元和宇中标 “ 移( 杭州) 信息技术有限公司人形双足机器人代工服务采购项目 ” ,其中智元中标7800万的全
    的头像 发表于 08-04 13:43 1368次阅读

    迅为RK3568开发板基本工程目录-工程级目录

    FA 模型和 Stage 模型的工程目录是存在差异的,接下来我们以之前新建的工程—— helloworld 为例,介绍一下 ArkTS 工程目录结构(Stage 模型)。
    发表于 07-10 10:45

    想在rtsmart中使用uart2,是不是只能通过修改设备方法来实现uart2的复用呀?

    我想在rtsmart中使用uart2,是不是只能通过修改设备方法来实现uart2的复用呀? 修改设备后如何只编译设备
    发表于 06-24 07:04

    电源工程师的核心技能体系

    电源工程师的核心技能体系需覆盖从基础理论到专业实践、工具应用及行业适配的全链条能力。以下是系统化的技能框架,按知识层级和应用场景展开,帮助从业者明确能力提升路径: 一、基础理论层:核心知识根基
    的头像 发表于 06-05 09:44 3210次阅读

    在任何平台上使用PetaLinux的先决条件

    本篇文章介绍了在任何平台上使用 PetaLinux 的先决条件。PetaLinux 是一种嵌入式 Linux 软件开发套件 (SDK),主要用于基于 FPGA 的系统级芯片 (SoC) 设计或 FPGA 设计。
    的头像 发表于 04-24 10:40 1719次阅读
    在任何平台上使用<b class='flag-5'>PetaLinux</b>的先决条件