设备树是系统中硬件组件的描述,这里是 linux 中 arm arch 的设备树文件列表:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts?id=refs/tags/v3.10
从这里:
http://devicetree.org/Device_Tree_Usage
设备树是节点和属性的简单树结构。属性是键值对,节点可能同时包含属性和子节点
树的节点描述了 linux 内核或其他软件系统(如 u-boot)用于初始化硬件的参数。
一些优点包括:
- 无需重新编译任何源代码即可轻松更改系统配置。
- 可以轻松添加对新硬件的支持(例如,如果您有一个新版本的电路板,它只更改了一些次要组件,您可能能够运行与电路板先前版本相同的软件负载,只需对 . dts 文件在新板上...)
- 可以使用包含语句重用现有的 .dts 文件,并且可以覆盖以前定义的功能。例如,如果您包含一个定义硬件组件的 dtsi(设备树包含文件),但将其禁用,那么您可以在更高级别的 dts 文件中创建一个新节点,该节点除了启用该组件之外什么都不做。
- 它们(可以)提供易于阅读和理解的硬件描述,并且可以为硬件组件提供描述性名称。
一些缺点包括:
- 编写新的 .dts 文件并不容易,因为它需要非常详细的硬件知识。
- 即使您了解硬件的所有细节,也可能很难弄清楚用于表达您想要做什么的确切语法......(即在许多方面都缺乏文档)
对我来说,编写 .dts 文件几乎是 100% 的反复试验,从其他 .dts 文件中提取示例,看看它做了什么,以及它是否更接近我想要的……通常这些示例就是我必须使用的全部,并且没有太多解释正在发生的事情的方式。