linux 3.10 Device Tree 设备树 DTS文件语法

Device Tree 的用法

基本数据格式
Device tree是一种简单的节点和属性的树形结构。属性是键值对,而节点可能包括属性和子节点。例如,下面是.dts格式的树形结构:
/ {
    node1 {
        a-string-property = "A string";
        a-string-list-property = "first string", "second string";
        a-byte-data-property = [0x01 0x23 0x34 0x56];
        child-node1 {
            first-child-property;
            second-child-property = <1>;
            a-string-property = "Hello, world";
        };
        child-node2 {
        };
    };
    node2 {
        an-empty-property;
        a-cell-property = <1 2 3 4>; /* each number (cell) is a uint32 */
        child-node1 {
        };
    };
};


此树形结构很明显的是毫无用处,因为它没描述任何东西,但它确实展示了节点属性的结构。主要有:
1   一个单独的root node:“/

2   一对子节点:“node1”和“node2

3   节点1的一对子节点:“child-node1”和”child-node2

4   分散于树形结构当中的一些属性
属性是简单的键值对,此处的值可以为空,也可以包括任意的字节流。当数据类型没有被编进数据结构时,会有一些基础数据表示法能够在device tree源文件中进行表达。

5  文本串可以用双引号表示
a  string-property = "a string"

6   单元格是由尖括号分隔的32 bit无符号整数
a  cell-property = <0xbeef 123 0xabcd1234>

7   二进制数据使用的是方
a  binary-property = [0x01 0x23 0x45 0x67];

8   不同示意的数据可以用逗号串联在一起
a mixed-property = "a string", [0x01 0x23 0x45 0x67], <0x12345678>;

9   逗号也用来创建字符串列表
a  string-list = "red fish", "blue fish";


基本概念
要了解如何使用device tree,我们先从样机和创建一个device tree开始。

样机
以下为虚拟机,由”Acme”制造,名为“Coyote’s Revenge”。
1   一个32bit ARM CPU

2   附属于内存映射串行端口的处理器本地总线,spi总线控制器,i2c控制器,中断控制器和外总线桥

3   256MBSDRAM

4   基于0X101F10000X101F20002串行端口

5   基于0x101F3000GPIO控制器

6   基于0X1017000的拥有以下设备的SPI控制器
a  附属于GPIO #1的有SS pinMMC slot

7   拥有以下设备的外部总线桥
a  附属于基于0x101100000外总线的SMC91111以太网设备
b  拥有以下设备的基于0x10160000i2c控制器
c  Maxim DS1338 real time clock。响应slave address 1101000(0x58)

8  基于0x3000000064MBNOR flash


初始结构
第一步是为设备创建一个骨架结构。这是一具有效的device tree所需的最基本的结构。现在你想唯一的标识此设备。
/ {    compatible = "acme,coyotes-revenge";};
C
ompatible指定了系统的名称。它包括字符串<manufacturer>,<model>。指定确切的设备是很重要的一点,并且包含制造商以避免命名空间冲突。操作系统将使用compatible值来决定如何在设备上运行,那么将正确数据加入属性中就显得非常重要。
理论上,compatibleOS所需的唯一指定设备的所有数据。如果所有设备资料都是硬编码,那么OS可以在高级compatible属性查找“acme,coyotes-revenge”。



你可能感兴趣的:(linux 3.10 Device Tree 设备树 DTS文件语法)