什么是设备树?优点和缺点?

Ent*_*KEY 6 linux linux-kernel embedded-linux device-tree

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

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

Chr*_*ins 15

设备树是系统中硬件组件的描述,这里是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. 可以使用include语句重用现有的.dts文件,并可以覆盖以前定义的功能.例如,如果您包含定义硬件组件但已将其禁用的dtsi(设备树包含文件),那么您可以在更高级别的dts文件中创建一个除了启用该组件之外什么都不做的新节点.
  4. 它们(可以)提供易于阅读和理解的硬件描述,并且可以为硬件组件提供描述性名称.

一些缺点包括:

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

对我来说,编写一个.dts文件几乎是100%的试验和错误,从其他.dts文件中提取示例,看看它做了什么以及它是否接近我想要的...通常这些例子都是我必须使用的,并没有太多的解释正在发生的事情.

  • 如果您想知道设备驱动程序如何与设备树相关以及如何根据您的驱动程序修改dts文件,请点击此链接.:http://xillybus.com/tutorials/device-tree-zynq-1 (2认同)