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

id="iframeu1052348_0" src="http://pos.baidu.com/hcem?rdid=1052348&dc=2&di=u1052348&dri=0&dis=0&dai=1&ps=388x1879&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1463763375046&ti=%E3%80%908.28%E6%9B%B4%E6%96%B0%E3%80%91Device%20Tree%E7%9A%84%E7%94%A8%E6%B3%95(%E7%90%86%E8%A7%A3DTS%E6%96%87%E4%BB%B6%E8%AF%AD%E6%B3%95)%20-%20OPENWRT%E4%B8%93%E7%89%88%20-%20%E6%81%A9%E5%B1%B1%E6%97%A0%E7%BA%BF%E8%AE%BA%E5%9D%9B%20-%20Pow&ari=1&dbv=2&drs=1&pcs=1920x955&pss=1920x557&cfv=18&cpl=6&chi=5&cce=true&cec=GBK&tlm=1463763375&ltu=http%3A%2F%2Fwww.right.com.cn%2Fforum%2Fthread-146260-1-1.html&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=true&cmi=8&col=zh-CN&cdo=-1&tcn=1463763375&qn=056e6a682ecf969f&tt=1463763374993.59.101.104" width="120" height="240" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="word-wrap: break-word; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;">
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”。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值