您的位置:首页 > 运维架构 > Linux

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

2016-05-21 01:06 573 查看
<iframe 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;"></iframe>

[align=left]Device Tree的用法[/align]

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

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

[align=left]2   一对子节点:“node1”和“node2”[/align]

[align=left]3   节点1的一对子节点:“child-node1”和”child-node2”[/align]

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

[align=left]5  文本串可以用双引号表示[/align]
[align=left]a  string-property = "a string"[/align]

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

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

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

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

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

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

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

[align=left]3   256MB的SDRAM[/align]

[align=left]4   基于0X101F1000和0X101F2000的2串行端口[/align]

[align=left]5   基于0x101F3000的GPIO控制器[/align]

[align=left]6   基于0X1017000的拥有以下设备的SPI控制器[/align]
a  附属于GPIO #1的有SS pin的MMC
slot

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

8  基于0x30000000的64MB的NOR
flash

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: