Platform: MSM8X39
OS: Android4.4
Overview:
DT是以节点node的方式来描述的,每个node有property/value pairs的方式来描述device。除了root node没有parent之外,每个Node只有一个parent node。
如下是官方的一个简单例子,包含了platform, cpu, memory.
实际Qualcomm用法如下:
[msm8939-pinctrl.dtsi]
大概可以猜测出来用的是Qualcomm的msm8939平台,ID是239或者241,可以boot的cpu有0/1/4/5/7.
前图的memory和chosen的内容会从lk添加之后传递到kernel.
结构:
a. Node Names:
命名规则:
node-name@unit-address
node-name是node的名字,1~31个字符,可用的字符如下,大小写敏感。
unit-address指定了name所属的bus type. 能用字符也和node-name一样。 Unit-address的值和格式和设备有关,如果是cpu,那就从0开始,后面累加,如果是具体涉笔,那么必须和reg property node中的第一个address(也就是寄存器地址)要匹配,如果没有reg property, @和unit-address就要删除掉,
root node 没有 node-name或者unit-address,它用”/”来区别。
例子:
Node-name是cpu, ethernet, unit-address是0/1(cpu编号), fe001000/fe00200(寄存器地址)。
b. Path Names
通过从root node开始指定一个full path, 此node就是唯一的了。一级级往下寻找,就能找到对应的node了。
命名规则:
/node-name-1/node-name-2/node-name-N
例如之前的cpu1就可以这样表示:
/cpus/cpu@1
如果full path直接能找到对应node,那么unit-address可以删除。
c. Properties
每个node使用property来表述自己的特性, properties由name和value组成。
1.Property name:
Property name可以是1~31个字符,由如下字符组成:
非标准的property name应该指定一个前缀来保证name的唯一,可以用公司名字,组织号之类, 如“qcom, pin” 这样:
2.Property value:
此value可以是空的,也可以是多个bytes,value可以有不同的类型,见下表。