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<u=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] |
相关文章推荐
- Linux下静态库和动态库
- linux共享Windows文件
- 小代码 linux小操作 待添加
- linux vim
- 虚拟机下Linux常用命令
- Linux 内存使用方法详细解析
- 基于linux平台的find命令
- centOS部署环境配置
- 每天一个linux命令(1):ls命令
- 每天一个linux命令(2):cd命令
- 每天一个linux命令(3):pwd命令
- 每天一个linux命令(4):mkdir命令
- 每天一个linux命令(5):rm 命令
- 每天一个linux命令(6):rmdir 命令
- 每天一个linux命令(7):mv命令
- 每天一个linux命令(8):cp 命令
- 每天一个linux命令(9):touch 命令
- 每天一个linux命令(10):cat 命令
- 管理linux 内核参数
- linux系统web服务性能测试最重要的两个参数