设备树_基础知识

设备树

格式

/dts-v1/;                                   // 版本号
/ {                                         // `/`表示根节点
    string-property = "xxx";                // string 类型
    string-list-property = "xxx", "yyy";    // string list 类型
    u32-property = <a>, ;                   // u32类型,默认十进制
    u32-property = /bits/ 8 <a>, ;          // u32类型,默认十进制
    u32-array-property = <a,b,c,d>;         // 数组类型,
    byte-property = [a];                    // 数组类型, 默认十六进制
    byte-array-property = [a,b,c,d];        // 数组类型
    a-property;                             // 可以没有值只有名, 表示bool值
    a-property = <@labela>;                 // 取标签地址
    child-node1 {
        ...                                 // 节点中可以什么都没有
    };
    labela : child-node2 {
        ...
    };

};

文件含义

文件含义
.dts设备树的文件格式格式为, 一般为最终某个板子的设备树
.dtsi设备树的头文件格式, 通常被被人依赖的设备树
.h一般只使用里面的宏定义
.dtb设备树的二进制文件, 打包到resource里面

请添加图片描述


结构

层层包含关系, 减少了冗余代码, 增加了可复用代码.

请添加图片描述


写法含义
<8>一个值, <> 表示u32, 十进制数
<8,7,6,8,4>一个数组
"memory"striong
"PowerPC,970"string list

node 节点

[label:] node-name[@unit-address] {
   [properties definitions]
   [child nodes]
}
  • []为可选的

aliases节点

  • 定义一些别名
    aliases {
        serial3 = &uart_3;
    };

memory device 节点

  • 设备树文件的必备节点,它定义了系统物理内存的布局
memory@0 {
    device_type = "memory";
    reg = <0x30000000 0x4000000>;
};
device_type定义了该node的设备类型

属性定义 (只讲标准属性)

根node必须是 /

model指明了该设备属于哪个设备生产商的哪个model
interrupt-parent统一为下游设备定义interrupt-parent

compatible指明了用哪一个driver来驱动该设备
compatible = "aaa”, "bbb"首选aaa, 备选bbb

node-name@unit-address节点名字
注意如果节点包含reg 那么节点名字中必须不能包括@unit-address
unit-address和具体设备相关

reg该device node的地址信息
注意如果有它 那么节点名字中必须不能包括@unit-address

phandle节点标识,用于引用(不好用, 一般很少用)

修改节点属性

  • 通过标签的形式
&label {                // 必须是在节点外
    xxx = xxx;
};
  • 节点内单独写节点 ( 全路径写节点 )
/{
    ...
    node {                   // 被重写的节点
        ...
    };
    ...
};
  • 父节点有标签, 被改写的没有标签
&label {
    ...
    node {                   // 被重写的节点
        ...
    };
};

删除节点属性

&label {
   /delete-property/ xxx;   // 删除 xxx 属性
   /delete-node/ node;      // 删除 node 节点
};

编译和反编译

支持编译和反编译, 下载方式有以下三种

  • 安装工具(推荐) dtc (device-tree-compiler)
    sudo apt-get install device-tree-compiler

  • scripts/dtc 下面有编译的工具, 可以编译

  • 自己网上下载编译安装


编译 dts -> dtb

dtc -I dts -O dtb -o 目标名字.dtb 源文件.dts

预编译我的dtb

gcc -E -nostdinc -Ulinux -I./ -I./include -x assembler-with-cpp sun8iw11p1-OKT3_C.dts -o sun8iw11p1-OKT3_C.my.tmp

生成我的dtb

dtc -I dts -O dtb sun8iw11p1-OKT3_C.my.tmp -o sun8iw11p1-OKT3_C.my.dtb

反编译 dtb -> dts

dtc -I dtb -O dts -o 目标名字.dts 源文件.dtb

dtc -I dtb -O dts -o sun8iw11p1-OKT3_C.fan.yuanchang.dts sun8iw11p1-OKT3_C.dtb
dtc -I dtb -O dts -o sun8iw11p1-OKT3_C.fan.my.dts sun8iw11p1-OKT3_C.my.dtb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iot 小胡

从未指望过会有人打赏...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值