目录
一、dts文件格式介绍
1、代码讲解
/dts-v1/; /*版本号*、
/memreserve/ 0x33f00000 0x100000; /*最高1M自己使用*/
/ {
/*属性名+值得方式*/
/*根节点属性,定义使用compatible 的哪个版本*/
model = "SMDK24440";
compatible = "samsung,smdk2440";
/*通过compatible 这个名字找到内核中不同单板的初始化函数*/
/*使用以下memory中的reg 1个32位代表地址 */
/*#不表示屏蔽*/
#address-cells = <1>;
/*使用以下memory中的reg 1个32位代表数据 */
#size-cells = <1>;
/*byestring表示多个十六进制的数,必须两位来表示,空格可以省略*/
#size-cells = [00 11 22];
memory {
/* /memory */
/*也可以用“”来表示字符串*/
device_type = "memory"; //约定好的,不变
/*尖括号里面可以表示多个32位的数据,reg指定根节点的起始地址和大小
0x30000000 0x4000000代表一段内存
0 4096 代表一段内存
*/
reg = <0x30000000 0x4000000 0 4096>;
};
chosen {
/*内核启动时候的命令行参数*/
bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200";
};
/*代表不同的cpu
cpus {
cpu {
compatible = "arm,arm926ej-s";
};
};
*/
led {
/*节点名字*/
/*通过compatible这个名字来找到驱动程序*/
compatible = "jz2440_led";
pin = <S3C2410_GPF(5)>;
};
};
2、属性、数据实例
a. Arrays of cells : cell就是一个32位的数据
interrupts = <17 0xc>;
b. 64bit数据使用2个cell来表示:
clock-frequency = <0x00000001 0x00000000>;
c. A null-terminated string (有结束符的字符串):
compatible = “simple-bus”;
d. A bytestring(字节序列) :
local-mac-address = [00 00 12 34 56 78]; // 每个byte使用2个16进制数来表示
local-mac-address = [000012345678]; // 每个byte使用2个16进制数来表示
e. 可以是各种值的组合, 用逗号隔开:
compatible = “ns16550”, “ns8250”;
example = <0xf00f0000 19>, “a strange property format”;
3、xxx.dts包括xxx.dtsi文件
dtsi文件是保持不变的文件。
在xxx.dts里面包括xxx.dtsi文件如下
#include “xxx.dtsi”
4、xxx.dts文件实例
(1)、xxx.dts的节点属性可以覆盖掉xxx.dtsi里面的节点属性。
/*xxx.dtsi*/
/dts-v1/;
/ {
model = "SMDK24440";
compatible = "samsung,smdk2440";
/*#不表示屏蔽*/
#address-cells = <1>;
/*使用以下memory中的reg 1个32位代表数据 */
#size-cells = <1>;
/*byestring表示多个十六进制的数,必须两位来表示,空格可以省略*/
#size-cells = [00 11 22];
memory {
/* /memory */
device_type = "memory";
reg = <0x30000000 0x4000000 0 4096>;
};
chosen {
bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200";
};
led {
compatible = "jz2440_led";
pin = <S3C2410_GPF(5)>;
};
};
/*xxx.dts*/
/dts-v1/;
#include "xxx.dtsi"
/*
将xxx.dtsi中的led覆盖了
括号前面的/为jz2440.dtsi里面的根节点
*/
/ {
led {
pin = <S3C2410_GPF(6)>;
};
};
(2)、xxx.dts的节点属性可以引用xxx.dtsi里面的节点属性。
/*xxx.dtsi*/
/dts-v1/;
/ {
model = "SMDK24440";
compatible = "samsung,smdk2440";
/*#不表示屏蔽*/
#address-cells = <1>;
/*使用以下memory中的reg 1个32位代表数据 */
#size-cells = <1>;
/*byestring表示多个十六进制的数,必须两位来表示,空格可以省略*/
#size-cells = [00 11 22];
memory {
/* /memory */
device_type = "memory";
reg = <0x30000000 0x4000000 0 4096>;
};
chosen {
bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200";
};
LED: led {
compatible = "jz2440_led";
pin = <S3C2410_GPF(5)>;
};
};
/*xxx.dts*/
/dts-v1/;
#include "xxx.dtsi"
/*
可以通过&来引用xxx.dtsi里面的LED
*/
&LED {
pin = <S3C2410_GPF(7)>;
};
二、dtb文件格式介绍
1、dtb文件简介
dtb文件是dts文件编译得到的二进制文件。
dtb文件可以通过反汇编的汇编文件查看dts文件是否正确。