没有合适的资源?快使用搜索试试~ 我知道了~
首页设备树DeviceTree使用手册
设备树DeviceTree使用手册
需积分: 38 539 浏览量
更新于2023-05-20
评论
收藏 185KB DOC 举报
本文将介绍如何为一个新机器编写设备树dts文件。我们准备提供一个有关设备树概念的概述和如何使用这些设备树来描述一个机器。完整的设备树数据格式的技术说明书请参考 ePAPR 规范
资源详情
资源评论
资源推荐

设备树使用手册
本文将介绍如何为一个新机器编写设备树。我们准备提供一个有关设备树
概念的概述和如何使用这些设备树来描述一个机器。完整的设备树数据格式的
技术说明书请参考 ePAPR 规范。ePAPR 规范涵盖了比本文基本主题更丰富的
细节,要查阅本文没有涉及到的高级用法请参考该规范。

目录
1. 基本数据格式
2. 基本概念
2.1 模型机
2.2 初始结构
2.3 中央处理器
2.4 节点名称
2.5 设备
2.6 理解 compatible 属性
3. 如何编址
3.1 CPU编址
3.2 内存映射设备
3.3 非内存映射设备
3.4 范围(地址转换)
4. 中断的工作方式
5. 设备特定数据
6. 特殊的节点
6.1 aliases 节点
6.2 chosen节点
7. 高级主题
7.1 高级模型机
7.2 PCI 主桥
7.2.1 PCI总线编号
7.2.2 PCI地址转换
7.3 高级中断映射
8. 附注

基本数据格式
设备树是一个包含节点和属性的简单树状结构。属性就是键-值对,
而节点可以同时包含属性和子节点。例如,以下就是一个 .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 {
};
};
};
这棵树显然是没什么用的,因为它并没有描述任何东西,但它确实体现
了节点的一些属性:
■ 一个单独的根节点:“/”
■ 两个子节点:“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";
基本概念

我们将以一个简单机开始,然后通过一步步的建立一个描述这个简单机
的设备树,来了解如何使用设备树。
2.1 模型机
考虑下面 这 个假想 的 机器(大 致 基于 ARM Versale ),制造 商 为
“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
2.2 初始结构
第一步就是要为这个模型机构建一个基本结构,这是一个有效的设备
树最基本的结构。在这个阶段你需要唯一的标识该机器。
/ {
compatible = "acme,coyotes-revenge";
};
compable 指定了系统的名称。它包含了一个“<制造商>,<型号>”形式
的字符串。重要的是要指定一个确切的设备,并且包括制造商的名子,以避
免命名空间冲突。由于操作系统会使用 compable 的值来决定如何在机器上
剩余25页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0