设备树_基础知识
创始人
2024-02-09 18:52:58
0

设备树

格式

/dts-v1/;                                   // 版本号
/ {                                         // `/`表示根节点string-property = "xxx";                // string 类型string-list-property = "xxx", "yyy";    // string list 类型u32-property = , ;                   // u32类型,默认十进制u32-property = /bits/ 8 , ;          // u32类型,默认十进制u32-array-property = ;         // 数组类型,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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...