device-tree-compiler
device-tree-compiler 是用于dts
和dtb
的工具合集
安装
这里以APT源为例
1
$ sudo apt-get install device-tree-compiler
编译和反编译
dtc命令用于编译dts
和反编译dtb
dtb反编译成dts
1
2
$ cd ${workspace} && ls
filename.dtb
-I
参数指定源,-O
参数指定目标格式为dts
1
$ dtc -I dtb -O dts filename.dtb > filename.dts
或者
1
$ dtc filename.dtb > filename.dts
dts编译成dtb
1
2
$ cd ${workspace} && ls
filename.dts
-O
指定目标格式为dtb
1
$ dtc -O dtb -o filename.dtb filename.dts
或者
1
$ dtc filename.dts > filename.dtb
修改dtb
的节点
fdtget
和fdtput
用于读取和修改dtb
读取节点状态
1
2
3
4
$ cd ${workspace} && ls
filename.dtb
$ fdtget filename.dtb /onewire status
okay
修改节点状态
1
2
3
4
5
$ cd ${workspace} && ls
filename.dtb
$ fdtput -t s filename.dtb /onewire status "disable"
$ fdtget filename.dtb /onewire status
disable
note: 有的节点修改完需要reboot才能生效
比较dtb
区别
dtdiff
命令,用于比较不同dtb
之间的区别
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ cd ${workspace} && ls
filename.dtb
$ fdtget filename.dtb /onewire status
okay
$ cp filename.dtb filename2.dtb
$ fdtput -t s filename2.dtb /onewire status "disable"
$ dtdiff filename.dtb filename2.dtb
--- /dev/fd/63 2020-07-18 02:27:13.437617744 +0000
+++ /dev/fd/62 2020-07-18 02:27:13.437617744 +0000
@@ -1703,7 +1703,7 @@
compatible = "w1-gpio";
gpios = <0x1b 0x17 0x0>;
phandle = <0x10a>;
- status = "okay";
+ status = "disable";
};
p_tsensor@ff634594 {
读取dtb头部和节点信息
fdtdump
工具可用于读取dtb
的头部信息和节点信息
1
2
3
4
5
6
7
8
9
10
11
12
13
$ fdtdump -sd filename.dtb > dump.txt
$ cat dump.txt
(这里是部分打印信息)
// magic: 0xd00dfeed
// totalsize: 0x15a8b (88715)
// off_dt_struct: 0x38
// off_dt_strings: 0x1394c
// off_mem_rsvmap: 0x28
// version: 17
// last_comp_version: 16
// boot_cpuid_phys: 0x0
// size_dt_strings: 0x213f
// size_dt_struct: 0x13914
覆盖dtb节点
fdtoverlay
用于覆盖设备节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ fdtoverlay -h
Usage: apply a number of overlays to a base blob
fdtoverlay <options> [<overlay.dtbo> [<overlay.dtbo>]]
<type> s=string, i=int, u=unsigned, x=hex
Optional modifier prefix:
hh or b=byte, h=2 byte, l=4 byte (default)
Options: -[i:o:vhV]
-i, --input <arg> Input base DT blob
-o, --output <arg> Output DT blob
-v, --verbose Verbose messages
-h, --help Print this help and exit
-V, --version Print version and exit
issues
如果有疑惑或错误,请提issues –> Issues