DTS--设备树

参考文献

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/devicetree/usage-model.rst
http://blog.chinaunix.net/uid-31087949-id-5747835.html

概念

DTS即Device Tree Source 设备树源码, Device Tree是一种描述硬件的数据结构,它起源于 Open Firmware (OF)。“Open Firmware Device Tree”,或者简称Device Tree是一个描述硬件的数据记过和语言。更具体讲就是能够被OS识别的硬件描述,这样操作系统就不需要机器的一些硬编码的细节。

结构上讲,DT是一个树,有命名节点的无环图,节点可以封装具有任意数据的任意数量节点的命名属性。还存在一种机制来创建从一个节点到自然数结构外部的另一个节点的任意链接。
从概念上讲,定义了一组通用的使用约定,称为“绑定”,用于数据如何在树中描述典型的硬件特征,包括数据总线,中断线,GPIO连接和外围设备。

尽可能使用现有的bindings来描述硬件。来最大化现有的支持码的使用。但是因为属性和命名节点是简单的文本字符串,这很容易去扩展现有的bindings或者通过定义新的节点个属性创建新的bindings。 但是,请警惕在没有先做已有作业的情况下创建新绑定。 当前存在两种不同的i2c总线不兼容绑定,这是因为创建新绑定时并未先研究现有系统中如何枚举i2c设备。

从哪来

DT最初是由Open Firmware创建的,它是用于将数据从Open Firmware传递到客户端程序(如操作系统)的通信方法的一部分。 操作系统使用设备树在运行时发现硬件的拓扑,从而在没有硬编码信息的情况下支持大多数可用硬件(假设驱动程序可用于所有设备)。

因为open firmware是被广泛的用于PowerPC和SPARC平台上,Linux也支持使用DT支持这些架构在很长的一段时间。

在2005年,当PowerPC Linux开始进行主要清理并合并32位和64位支持时,决定要求所有powerpc平台都支持DT,无论他们是否使用开放固件。为此,创建了一个称为Flattened Device Tree(FDT)的DT表示形式,该表示形式可以作为二进制Blob传递到内核,而无需真正的开放固件实现。修改了U-Boot,kexec和其他引导加载程序,以支持传递设备树二进制(dtb)并在引导时修改dtb。 DT也已添加到PowerPC引导包装程序(``arch / powerpc / boot / *’’)中,以便可以将dtb与内核映像一起包装以支持引导现有的非DT感知固件。

一段时间后,FDT基础结构被普遍推广为可用于所有体系结构。六种主线结构
(arm, microblaze, mips, powerpc, sparc, and x86)和一种主线结构nios具有一定程度的DT.

你可能感兴趣的:(Linux学习)