Linux设备树:删除节点和属性的方法

这篇具有很好参考价值的文章主要介绍了Linux设备树:删除节点和属性的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[摘要]:本文主要介绍了在设备树中删除节点(node)和属性(property)的方法。为了便于理解,笔者先介绍了 dtsi 和 dts 的关系,然后构建了虚拟的需求场景,最终给出示例。

背景知识

设备树文件可以分为 dtsi 和 dts 两种类型。dtsi 类似于 C 语言中的头文件,供其他设备树文件引用,而 dts 则是与嵌入式设备对应,直接用于编译成内核使用的 dtb 文件。

以意法半导体的 STM32MP15x 系列芯片为例:

  • 首先,ST 基于基础的 STM32MP151 芯片创建了 stm32mp151.dtsi 文件。在该文件中,使用设备树详细描述了芯片内部的硬件资源。

  • 第二,STM32MP153 芯片和 STM32MP151 芯片的硬件资源大部分都相同,只有少量差别。所以,ST 在创建的 stm32mp153.dtsi 中直接通过 #include "stm32mp151.dtsi"引入了 stm32mp151.dtsi 文件,然后在此基础上根据 STM32MP153 的实际硬件资源对设备树进行少量修改。

  • 第三,STM32MP157 芯片和 STM32MP153 芯片的硬件资源大部分都相同,只有少量差别。所以,ST 在创建的 stm32mp157.dtsi 中直接通过 #include "stm32mp153.dtsi"引入了 stm32mp153.dtsi 文件,然后在此基础上根据 STM32MP157 的实际硬件资源对设备树进行少量修改。

  • 第四,ST 基于 STM32MP157 设计了给客户的评估板,于是创建了 stm32mp157a-ed1.dts 文件,并通过 #include "stm32mp157.dtsi" 引入了 STM32MP157 芯片的所有资源信息,然后在此基础上根据评估板的实际硬件资源进行少量修改。

  • 最终,我们将 stm32mp157a-ed1.dts 编译成 stm32mp157a-ed1.dtb 文件,供 Linux 内核使用。

从上面的流程我们可以看出,有了 dtsi 文件之后,后面的每一步都只需要基于之前的 dtsi 进行少量修改即可,极大地减少了我们的工作量。

需求场景

假设我们现在基于 STM32MP157 芯片设计了一款自己的开发板,然后创建了 stm32mp157a-myboard.dts,并通过#include "stm32mp157.dtsi"引入了 STM32MP157 芯片的资源信息。

此时我们发现 stm32mp157.dtsi 中的 gpu 节点和 dsi 节点中的 phy-dsi-suppry 属性用不到,想要删掉,应该怎么做?

设备树删除属性,嵌入式linux,stm32,嵌入式硬件,linux

有人可能会选择直接修改 stm32mp157.dtsi 文件,把不需要的东西删掉。但是,这可能会导致其他引用 stm32mp157.dtsi 文件的 dts 无法正常工作。

所以,我们现在需求就是:不修改 stm32mp157.dtsi 文件,直接在 stm32mp157a-myboard.dts 文件中删掉 gpu 节点和 dsi 节点中的 phy-dsi-suppry 属性。

删除节点

说明:设备树节点都由 status 属性,在不使用该节点的时候只要将 status 属性配置为 disabled 即可。本节仅仅是为了展示 /delete-node/ 的用法。

  • 语法

    /delete-node/ node-name;
    /delete-node/ &label;
    
  • 示例

    对于 gpu 节点,它的节点名(node-name)是 gpu@59000000,标签(label)是 gpu。删除该节点的两种方式如下:

    /delete-node/ gpu@59000000;
    
    /delete-node/ &gpu;
    

删除属性

  • 语法

    /delete-property/ property-name;
    
  • 示例

    说明:该示例仅用于展示 /delete-propery/ 的用法,实际删除 phy-dsi-suppry 之后可能会导致 dsi 硬件不能工作。文章来源地址https://www.toymoban.com/news/detail-731704.html

    &dsi {
    	/delete-property/ phy-dsi-suppry; 
    };
    

到了这里,关于Linux设备树:删除节点和属性的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式linux驱动开发篇之设备树

    设备树(Device Tree)是一种用于描述嵌入式系统硬件组件及其连接关系的数据结构。它被广泛用于嵌入式 Linux 系统,尤其是针对使用多种不同架构和平台的嵌入式系统。它是一种与硬件描述相关的中间表示形式,将硬件信息抽象成一种可移植的格式,使得操作系统和引导加载

    2024年02月22日
    浏览(69)
  • 正点原子嵌入式linux驱动开发——Linux 网络设备驱动

    网络驱动是linux里面驱动三巨头之一 ,linux下的网络功能非常强大,嵌入式linux中也常常用到网络功能。前面已经讲过了字符设备驱动和块设备驱动,本章就来学习一下linux里面的 网络设备驱动 。 本次笔记中讨论的都是有线网络! 提起网络,一般想到的硬件就是“网卡”。在

    2024年01月17日
    浏览(71)
  • 实时嵌入式Linux设备基准测试快速入门1介绍

    工业4.0已经到来,生产线需要新技术来应对客户日益增长的新功能需求,使用配备嵌入式 Linux 的单板计算机来处理所需的许多功能是大势所趋。这样大多数工业控制系统都需要实时性能,开发人员不得不面对这样一个事实:Linux原本并不适用于实时环境。不过多年来很多人都

    2024年02月15日
    浏览(40)
  • 在嵌入式Linux设备上使用Flutter开发图形界面(试水)

    链接: https://www.bilibili.com/video/BV1qE411N7aC/?spm_id_from=333.880.my_history.page.clickvd_source=0c443477abedebf2fdf7abecef55405d 我是跟着这个视频安装 Docker Desktop for Windows + 启用k8s k8s网址 https://github.com/AliyunContainerService/k8s-for-docker-desktop 主要步骤参照 https://www.toradex.com/zh-cn/blog/zai-qian-ru-shi-linux-sh

    2024年02月21日
    浏览(44)
  • 【IoT】嵌入式Linux开发:网络设备开发(测试题)

    目录 网络开发 选择题 1、路由器工作在哪一层(B)

    2024年02月06日
    浏览(59)
  • 实时嵌入式Linux设备基准测试快速入门4测试和测量

    本章将介绍主要测试方案及其具体配置和结果。在介绍实际测量结果之前,将尽可能总结被测设备的特性。最后,将对结果进行分析,并概述由于高速缓存一致性问题造成的延迟方面的主要瓶颈,提出减少延迟的解决方案,并解释用于发现和缓解问题的方法。 用于智能设备的

    2024年02月15日
    浏览(43)
  • 嵌入式Linux驱动开发 04:基于设备树的驱动开发

    前面文章 《嵌入式Linux驱动开发 03:平台(platform)总线驱动模型》 引入了资源和驱动分离的概念,这篇文章将在前面基础上更进一步,引入设备树的概念。 在平台总线驱动模型中资源和驱动已经从逻辑上和代码组织上进行了分离,但每次调整资源还是会涉及到内核,所以现

    2024年02月16日
    浏览(70)
  • 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现

    大家好,今天给大家介绍 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现 ,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全! 可进群免费领取。 在嵌入式Linux系统中,设备驱动是连接硬件设备和操作系统之间的桥梁。

    2024年02月19日
    浏览(66)
  • 【嵌入式Linux学习笔记】platform设备驱动和input子系统

    对于Linux这种庞大的操作系统,代码重用性非常重要,所以需要有相关的机制来提升效率,去除重复无意义的代码,尤其是对于驱动程序,所以就有了platform和INPUT子系统这两种工作机制。 学习视频地址:【正点原子】STM32MP157开发板 platform 驱动框架分为总线、设备和驱动。总

    2024年02月07日
    浏览(60)
  • 【ARM 嵌入式 编译系列 4 -- linux 编译属性 __read_mostly 介绍】

    请阅读 【ARM GCC 编译专栏导读】 上篇文章:【ARM 嵌入式 编译系列 3.3 – gcc 动态库与静态库的链接方法介绍】 下篇文章:【ARM 嵌入式 编译系列 4.1 – GCC 编译属性 likely与unlikely 学习】 __read_mostly 是一个在Linux内核编程中用到的宏定义,这是一个gcc编译器的属性,用于告诉编

    2024年02月13日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包