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
    +关注

    关注

    70

    文章

    2118

    浏览量

    119341

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

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

收藏 人收藏

    评论

    相关推荐

    MCP251X can驱动移植nuc980采样用设备配置时,中断如何配置设备?

    MCP251X can驱动移植nuc980 采样用设备配置时,中断如何配置设备? spi0: spi@b0061000 { status = \"okay\"
    发表于 01-17 06:43

    NUC980设备DTB文件如何通过NUWrite烧录到SPI-Flash,烧录的地址是多少?

    NUC980设备DTB文件如何通过NUWrite烧录到SPI-Flash,烧录的地址是多少;内核编译设备后卡死在“Calibratin
    发表于 01-17 06:29

    如何修改内核设备

    本文档介绍了内核设备的位置和包含关系 1.内核设备位置 文件 备注 dts longan/device/config/chips/t50
    发表于 12-14 13:42

    【米尔-TIAM62开发板-接替335x-试用评测】+(三)手把手创建Uboot设备与内核设备实战

    这一数据结构进行了深入的研究和学习。设备是一种特殊的语法格式,用于描述嵌入式系统的硬件信息。这种数据结构允许我们在不直接访问硬件的情况下,通过软件来识别和控制硬件设备。 首先,我了
    发表于 11-28 09:54

    zedboard petalinux构建工程错误是什么原因造成的?

    这是我的错误: 注: 执行设置环境任务 注: 执行运行队列任务 ERROR: 设备- - xilinx gitAUTOINC b7466bbeee-r0 do_ config: 函数失败
    发表于 11-28 07:33

    在Linux启动过程, 想将PC13 pin配置为输出/拉起,如何修改设备

    在 Linux 启动过程, 我想将 PC13 pin 配置为输出/ 拉起 。 我该如何修改设备
    发表于 11-13 06:21

    PetaLinux工具文档:参考指南

    电子发烧友网站提供《PetaLinux工具文档:参考指南.pdf》资料免费下载
    发表于 09-15 11:48 0次下载
    <b class='flag-5'>PetaLinux</b>工具文档:参考指南

    PetaLinux工具文档

    电子发烧友网站提供《PetaLinux工具文档.pdf》资料免费下载
    发表于 09-15 10:43 0次下载
    <b class='flag-5'>PetaLinux</b>工具文档

    AMD Xilinx SoC:定制PetaLinux中的FSBL

    客户为AMD Xilinx SoC创建了PetaLinux工程。需要定制PetaLinux中的FSBL
    的头像 发表于 07-10 17:05 654次阅读

    根据NUC980LinuxBsp内核配置开启设备后Linux内核无法启动怎么解决?

    根据NUC980LinuxBsp内核配置开启设备后Linux内核无法启动
    发表于 06-27 07:26

    如何使用设备插件dtbo?

    我想使用设备插件,但我不知道如何部署它
    发表于 06-07 09:00

    如何在yocto创建新相机(IMX219)设备文件和.ko文件?

    我正在研究 I.MX 8 QM SBC。我需要如何在 yocto 创建新相机(IMX219)设备文件和 .ko 文件的步骤。
    发表于 05-24 07:29

    如何在iMX7D上的uboot设备设置EIM?

    我在 iMX7D 上的 uboot 设备设置了 EIM。如果标签名称是 &eim 或 &weim,将出现“未找到”错误。 我想知道正确的标签名称。 如果恩智浦有像 STmicro 那样的支持文档就好了。
    发表于 05-19 06:16

    求分享iMX8QM ESAI的设备实例

    我正在使用 Linux 5.15 开发基于 iMX8QM 的 SoM Apalis iMX8。两个音频解码器(只需要 TX)将连接到 iMX8QM ESAI0 接口,如附图所示。从内核源代码,我没有找到可供参考的设备实例。您
    发表于 05-18 08:33

    如何将zImage和设备文件放在rootfs的/boot目录

    我正在研究 QP saber 板。 我真的很想将 zImage 和设备文件放在我的 rootfs 的 /boot 目录。 我已经有了自己的层和 linux-imx_*.bbappend 文件并
    发表于 04-28 07:34