• 设备树基本原理与操作方法



    活动地址:CSDN21天学习挑战赛

    学习计划

    **
    1,学习目标

    一周掌握设备树

    2,学习内容

    例如:
    Linux设备树控制方法
    掌握循环语句

    3,学习时间

    提示:可以添加计划学习的时间
    例如: 周一至周五晚上 7 点—晚上9点
    周六上午 9 点-上午 11 点
    周日下午 3 点-下午 6 点

    4,学习产出

    提示:统计学习计划的总量
    例如:
    技术笔记 2 遍
    CSDN技术博客 3 篇
    学习的vlog 视频 1 个

    **

    学习日记

    **

    ​第一:为什么要使用设备树

    在老的Linux内核的arch/arm/plat-xxxarch/arm/mach-xxx充斥着大量的描述不同板级硬件信息的代码,而这些板级信息对于内核来说不过是一些垃圾代码,因为不同的板级他们的硬件信息都不相同,这些都是硬件特有的信息,对内核而言没有任何的意义,但是往往这部分代码特别的多,造成内核的冗余。设备树的引入就是为了解决这个问题。

    设备树是一种描述硬件的数据结构,在linux2.6版本上才开始使引入,采用了设备树之后,许多硬件的细节可以直接通过它传递给Linux,而不再需要在内核中进行大量的冗余编码,它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立

    设备树可以描述的信息包括CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情况、GPIO控制器和GPIO使用情况、Clock控制器和Clock使用情况。

    另外,设备树对于可热插拔的热备不进行具体描述,它只描述用于控制该热插拔设备的控制器。

    第二:Linux设备树目标

    https://www.kernel.org/doc/Documentation/devicetree/usage-model.txt

    The “Open Firmware Device Tree”, or simply Device Tree (DT), is a data

    structure and language for describing hardware. More specifically, it is a

    description of hardware that is readable by an operating system

    so that the operating system doesn’t need to hard code details of the

    machine

    提供一种语言来解耦硬件配置信息

    第三:Linux设备树概述:dtsdtsi

    DTSdevice tree source

    DTS.dts文件是设备树的源文件。

    文件.dts是一种ASCII文本格式的设备树描述 ,一个.dts文件对应一个ARM的设备, 一般放置在内核的arch/arm/boot/dts/目录中 。

    由于一个SoC可能对应多个设备(一个SoC可以对应多个产品和电路板),这些.dts文件势必须包含许多共同的部分,Linux内核为了简化,把SoC公用的部分或者多个设备共同的部分一般提炼为.dtsi,类似于C语言的头文件。其他的设备对应的.dts就包括这个.dtsi

    目录:arch/arm64/boot/dts/mediatek/auto2735evb.dts

     第四:Linux设备树语法

    设备树用树状结构描述设备信息,它有以下几种特性:

    每个设备树文件都有一个根节点,每个设备都是一个节点。
    节点间可以嵌套,形成父子关系,这样就可以方便的描述设备间的关系。
    每个设备的属性都用一组 key-value ( 键值对 ) 来描述。
    每个属性的描述用 ; 结束

    DeviceTree的结构非常简单,由两种元素组成:

    Node(节点)

    Property(属性)

    [label:] node-name[@unit-address] {

        [properties definitions]

        [child nodes]

    }

     

  • 相关阅读:
    Gitea 与 Drone 集成实践:完全基于 Docker 搭建的轻量级 CI/CD 系统
    业务架构·应用架构·数据架构实战~业务驱动的数据架构设计
    虚拟机运行Hadoop | 各种问题解决的心路历程
    阿里、百度、美团 Java 面试题大合集,我来教你怎么顺利拿到 offer
    线扫相机设置编码器触发
    PWN利器-pwntools安装、调试教程一览
    How to fix “__dirname is not defined in ES module scope“
    Google Chrome发送syn flood到谷歌云地址
    数据结构(十二) -- 树(四) -- 霍夫曼树
    专业游戏翻译公司怎么选择比较合适
  • 原文地址:https://blog.csdn.net/weixin_41114301/article/details/126130900