5

Linux 中的设备树是什么?设备树的优缺点是什么?

如果有人详细了解设备树,请帮助回答上述问题。

4

1 回答 1

16

设备树是系统中硬件组件的描述,这里是 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)用于初始化硬件的参数。

一些优点包括:

  1. 无需重新编译任何源代码即可轻松更改系统配置。
  2. 可以轻松添加对新硬件的支持(例如,如果您有一个新版本的电路板,它只更改了一些次要组件,您可能能够运行与电路板先前版本相同的软件负载,只需对 . dts 文件在新板上...)
  3. 可以使用包含语句重用现有的 .dts 文件,并且可以覆盖以前定义的功能。例如,如果您包含一个定义硬件组件的 dtsi(设备树包含文件),但将其禁用,那么您可以在更高级别的 dts 文件中创建一个新节点,该节点除了启用该组件之外什么都不做。
  4. 它们(可以)提供易于阅读和理解的硬件描述,并且可以为硬件组件提供描述性名称。

一些缺点包括:

  1. 编写新的 .dts 文件并不容易,因为它需要非常详细的硬件知识。
  2. 即使您了解硬件的所有细节,也可能很难弄清楚用于表达您想要做什么的确切语法......(即在许多方面都缺乏文档)

对我来说,编写 .dts 文件几乎是 100% 的反复试验,从其他 .dts 文件中提取示例,看看它做了什么,以及它是否更接近我想要的……通常这些示例就是我必须使用的全部,并且没有太多解释正在发生的事情的方式。

于 2013-07-03T06:31:50.803 回答