原标题:设备树DTS规范
------
作者:韦东山
来自(设备树维基教程第二课,一共2节):
http://wiki.100ask.org/Linux_devicetree
第01节_DTS格式
dts文件通过编译生成dtb格式的文件,DTS文件布局如下图:
属性的定义
value取值类型:属性名=值
值有三种取法:
第一种 ,比如<1 0x3 0x123> (术语叫arrays of cells,一个或多个32位数据)
第二种 ,“字符串” (用双引号括起来的字符串,比如“memory”)
第三种, 比如[ 00 11 22] (术语叫byte string, 16进制,表示的一个或者多个字节) 一个 byte string必须用2位16进制数表示 。字节之间的空格可以省略,可组合多种类型的值,之间用逗号分开。
示例:
a.Arrays of cells (cell就是一个32位的数据)
interrupts= < 170xc>;
b. 64bit数据使用2个cell来表示:
clock-frequency= < 0x00000001 0x00000000>;
c. 有结束符的字符串(A null-terminated string):
compatible= "simple-bus";
d. A bytestring(字节序列) :
local-mac-address= [ 000012345678]; 每个byte使用 2个 16进制数来表示
e. 可以是各种值的组合, 用逗号隔开:
compatible= "ns16550", "ns8250";
example= < 0xf00f0000 19>, // "a strange property format";
设备节点如何定义?
[ label:] node-name[@unit-address] {
[ properties definitions]
[ child nodes]
};
比如:
memory@ 30000000{
device_type = "memory";
reg = <0x300000000x4000000>;
};
其中memory@30000000表示node-name;
[@unit-address]其中的unit-address是内存首地址用来区分其它