设备树详讲

Posted linux-37ge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设备树详讲相关的知识,希望对你有一定的参考价值。

一. DTS 语法

    1.1. dts 头文件

        1.1.1. 可以使用#include来引用

技术图片

 

    1.2. 关于/dts-v1/;

        1.2.1. 用于dts的版本信息,一般使用/dts-v1/版本

    1.3. 设备节点

        1.3.1. 分析下图节点

技术图片技术图片

             <1>. “/”是跟节点,每个设备树只有一个根节点

             <2>.设备树中节点命名格式如下 :

                         node-name@unit-address
                    有时我们看到的是:label: node-name@unit-address;引入 label 的目的就是为了方便访问节点 比如通过&cpu0 就可以访问“cpu@0”这个节点,上图的chosen,memory都属于label。
             <3>. 每个节点都有不同属性,不同的属性又有不同的内容,属性都是键值对,值可以为空或任意的字节流。设备树源码中常用的几种数据形式:字符串,u32,数组

        1.3.2. 标准属性

            1.3.2.1. compatible 属性

                  compatible 属性也叫做“兼容性”属性,这是非常重要的一个属性! compatible 属性的值是 一个字符串列表, compatible 属性用于将设备和驱动绑定起来。字符串列表用于选择设备所要使用的驱动程序 ,compatible 属性的值格式 :"manufacturer,model" ,例如:

compatible = "fsl,imx6ull-14x14-evk", "fsl,imx6ull";   //此compatible是有两个属性,用分号隔开

                PS:根节点“/” 下的compatible 属性 用于查看是否支持此设备 ,取代设备ID。在没有使用设备树以前, uboot 会向 Linux 内核传递一个叫做 machine id 的值, machine id
也就是设备 ID

           1.3.2.2. model属性

                  model 属性值也是一个字符串,一般 model 属性描述设备模块信息,比如名字什么的,例如:model = "wm8960-audio";
           1.3.2.3. status属性

                 status 属性看名字就知道是和设备状态有关的, status 属性值也是字符串,字符串是设备的状态信息,可选的状态如下

技术图片

           1.3.2.4. #address-cells和#size-cells属性

                 这两个属性的值都是无符号 32 位整形, #address-cells #size-cells 这两个属性可以用在 任何拥有子节点的设备中,用于描述子节点的地址信息,直接上示例

技术图片
/ {
    #address-cells = <0x2>; // 在root node下使用2个u32来代表address。
    #size-cells = <0x1>; // 在root node下使用1个u32来代表size。
    ...
    ...
    memory { // memory device
        ...
        reg = <0x90000000 00000000 0x800000>;
            // 0x90000000 00000000 是存取memory的address
            // 0x800000 是memory的size。
        ...
    };
    ...
    ...
}
View Code

           1.3.2.5. reg属性

                 reg 属性前面已经提到过了, reg 属性的值一般是(addresslength)对。 reg 属性一般用于描述设备地址空间资源信息,一般都是某个外设的寄存器地址范围信息 

           1.3.2.6. device_type属性     

                 device_type 属性值为字符串, IEEE 1275 会用到此属性,用于描述设备的 FCode,但是设备树没有 FCode,所以此属性也被抛弃了。此属性只能用于 cpu 节点或者 memory 节点。imx6ull.dtsi 的 cpu0 节点用到了此属性 

       1.3.3. 向节点追加或修改

             1.3.3.1. 先看一下 I2C1 接口对应的节点,打开文件 imx6ull.dtsi 文件,找到如下所示内容:

           技术图片

 

                    如果我们要添加直接的具体设备(mag311)以及修改参数,我们可以定义自己的dts文件,只要文件中#include “imx6ull.dtsi ”,

技术图片

 

     1.4. 文件系统中查看设备树属性

 

 

 


 





        



 



 

 

 

 

以上是关于设备树详讲的主要内容,如果未能解决你的问题,请参考以下文章

Appium基础四:Desired Capabilities详讲

数据结构:栈-C语言实现(有图详讲带注解,适合入门学习)

数据结构初阶第四节.链表详讲

xss跨站攻击详讲 | 如何利用xss拿下一个站?

可待学院dreamweaver网页制作视频教程

vector详讲