1 / 27
文档名称:

设备树使用手册.doc

格式:doc   页数:27页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

设备树使用手册.doc

上传人:xxj16588 2016/3/9 文件大小:0 KB

下载得到文件列表

设备树使用手册.doc

文档介绍

文档介绍:设备树使用手册本文将介绍如何为一个新机器编写设备树。我们准备提供一个有关设备树概念的概述和如何使用这些设备树来描述一个机器。完整的设备树数据格式的技术说明书请参考 ePAPR 规范。 ePAPR 规范涵盖了比本文基本主题更丰富的细节, 要查阅本文没有涉及到的高级用法请参考该规范。目录 1. 基本数据格式 2. 基本概念 初始结构 中央处理器 节点名称 设备 patible 属性 3. 如何编址 CPU 编址 内存映射设备 非内存映射设备 范围(地址转换) 4. 中断的工作方式 5. 设备特定数据 6. 特殊的节点 aliases 节点 chosen 节点 7. 高级主题 高级模型机 PCI 主桥 PCI 总线编号 PCI 地址转换 高级中断映射 8. 附注基本数据格式设备树是一个包含节点和属性的简单树状结构。属性就是键-值对,而节点可以同时包含属性和子节点。例如, 格式的简单树: /{ 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 23 4>; /* each number (cell) is a uint32 */ child-node1 { }; }; };这棵树显然是没什么用的,因为它并没有描述任何东西,但它确实体现了节点的一些属性: ■一个单独的根节点:“/ ”■两个子节点:“ node1 ”和“ node2 ”■两个 node1 的子节点:“ child-node1 ”和“ child-node2 ”■一堆分散在树里的属性。属性是简单的键-值对,它的值可以为空或者包含一个任意字节流。虽然数据类型并没有编码进数据结构,但在设备树源文件中任有几个基本的数据表示形式。■文本字符串(无结束符)可以用双引号表示: string-property = "a string" ■‘ Cells ’是 32 位无符号整数,用尖括号限定: cell-property = <0xbeef 123 0xabcd1234> ■二进制数据用方括号限定: binary-property = [0x01 0x23 0x45 0x67]; ■不同表示形式的数据可以使用逗号连在一起: mixed-property = "a string", [0x01 0x23 0x45 0x67], <0x12345678>; ■逗号也可用于创建字符串列表: string-list = "red fish", "blue fish"; 基本概念我们将以一个简单机开始,然后通过一步步的建立一个描述这个简单机的设备树,来了解如何使用设备树。 模型机考虑下面这个假想的机器(大致基于 ARM Versatile ),制造商为“ Acme ”, 并命名为“ Coyote's Revenge ”: ■一个 32位 ARM CPU ■处理器本地总线连接到内存映射的串行口、 spi 总线控制器、 i2c 控制器、中断控制器和外部总线桥■ 256MB SDRAM 起始地址为 0 ■两个串口起始地址: 0x101F1000 和 0x101F2000 ■ GPIO 控制器起始地址: 0x101F3000 ■带有以下设备的 SPI 控制器起始地址: 0x10170000 ■ MMC 插槽的 SS 管脚连接至 GPIO #1 ■外部总线桥挂载以下设备■ SMC SMC91111 以太网设备连接到外部总线,起始地址: 0x10100000 ■ i2c 控制器起始地址: 0x10160000 ,并挂载以下设备■ Maxim DS1338 实时时钟。响应至从地址 1101000 (0x58) ■ 64MB NOR 闪存起始地址 0x30000000 初始结构第一步就是要为这个模型机构建一个基本结构,这是一个有效的设备树最基本的结构。在这个阶段你需要唯一的标识该机器。/{ compatible = "acme,coyotes-revenge"