没有合适的资源?快使用搜索试试~ 我知道了~
linux DTS详解.pdf
需积分: 46 76 下载量 166 浏览量
2020-07-31
14:04:47
上传
评论 3
收藏 941KB PDF 举报
温馨提示


试读
58页
DTS 是为 Linux 提供一种硬件信息的描述方法,以此代替源码中的 硬件编码 (hard code)。DTS 即 Device Tree Source 设备树源码, Device Tree 是一种描述硬件的数据结构,起源于 OpenFirmware (OF). 在 Linux 2.6 中, ARM 架构的板级硬件细节过多的被硬编码在 arch/arm/plat-xxx 和 arch/arm/mach-xxx (比如板上的 platform 设备,resource, i2c_board_info, spi_board_info 以及各种硬件的 platform_data), 这些板级细节代码对内核来讲只不过是垃圾代码。而采用 Device Tree 后, 许多硬件的细节可以直接透过它传递给 Linux,而不再需要在 kernel 中 进行大量的冗余编码。
资源推荐
资源详情
资源评论








DTS 简介
DTS 是为 Linux 提供一种硬件信息的描述方法,以此代替源码中的 硬件
编码 (hard code)。DTS 即 Device Tree Source 设备树源码, Device Tree
是一种描述硬件的数据结构,起源于 OpenFirmware (OF). 在 Linux 2.6 中,
ARM 架 构 的 板 级 硬 件 细 节 过 多 的 被 硬 编 码 在 arch/arm/plat-xxx 和
arch/arm/mach-xxx (比如板上的 platform 设备,resource, i2c_board_info,
spi_board_info 以及各种硬件的 platform_data), 这些板级细节代码对内核
来讲只不过是垃圾代码。而采用 Device Tree 后, 许多硬件的细节可以直接透
过它传递给 Linux,而不再需要在 kernel 中 进行大量的冗余编码。
ARM 引入 Device Tree 的原因
每次正式发布 linux kernel release 之后都会有两周的 merge window,
在这个窗口期间,kernel 各个子系统的维护者都会提交各自的 patch,将测 试
稳定的代码请求并入 kernel mainline。每到这个时候,Linus 就会比较 繁忙,
他需要从各个子系统维护者的分支上获得最新的代码并 merge 到自己的
kernel source tree 中。其中有一个维护者 Tony Lindgren , OMAP
development tree 的维护者,发送了一个邮件给 Linus,请求提交 OMAP 平
台代码修改,并给出一些细节描述:
1. 简单介绍本次修改
2. 关于如何解决 merge conficts

一切都很正常,也给出足够的信息,然而,这好是这个 pull request 引起
了一场针对 ARM Linux 内核代码的争论。也许 Linus 早就对 ARM 相关的代
码早就不爽了,ARM 的 merge 工作量不仅较大,而且他认为 ARM 很多的代
码都是垃圾,代码里有很多愚蠢的 table,从而导致了冲突。因此, 在处理完
OMAP 的 pull request 之后 (Linus 并非针对 OMAP 平台, 只是 Tony
Lindgren 撞在枪口上了),Linus 在邮件中写道:
Gaah.Guys, this whole ARM thing is a f*ching pain in the ass.
这件事之后, ARM 社区对 ARM 平台相关的 code 做出了如下规范调整,
这个也正是引入 DTS 的原因,如下:
1. ARM 的核心代码仍然存储在 arch/arm 目录下
2. ARM Soc core architecture code 存储在 arch/arm 目录下
3. ARM Soc 的周边外设模块驱动存储在 drivers 目录下
4. ARM Soc 的特定代码在 arch/arm/mach-xxx 目录下
5. ARM Soc board specific 代码被移除,由 DeviceTree 机制负责传递硬件拓展和硬件信息
本质上,DeviceTree 改变原来用 hardcode 方式将 HW 配置信息 嵌入
到内核代码的方法,改用 bootloader 传递一个 DB 的形式。 对于嵌入式系统,
在系统启动阶段,bootloader 会加载内核并将控 制权转移给内核。
更多 DTS 内核历史邮件请查看如下:
• 讨论引入 FDT 到嵌入式 linux 平台
• Russell King 反对 DTS 加入到 ARM
• Russell 最终被说服接受 DTS 进入 ARM

• dma-ranges
node-name@unit-addrss
任何一个节点在 DeviceTree 中都有一个名字相对于,请标准格式如下:
node-name@unit-address
node-name 部分指明了节点的名字,其可由 1 到 31 个字符构成, 字符可
以为下面中的任何字符:
node-name 部分以一个小写或大写字符串开始,用于指明节点对应设备 的类
型。unit-address 成分用于说明节点与总线的关系,一般为设备 在总线上的位置。
unit-address 由上表的字符串构成。unit-address 成分的值必须与节点 reg 属性
的值一致。如果节点没有 reg 属性,那么 @unit-address 必须被省略,并且节点
的名字必须与同一级别的其他节点 通过名字区分开来。当节点绑定到特定总线,
可以使用 reg 属性和 @unit-address 进行更具体的指定。
剩余57页未读,继续阅读
资源评论


hkd_ywg
- 粉丝: 4
- 资源: 94
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


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