dts和ACPI之间的差异

时间:2015-08-31 12:10:23

标签: linux x86 linux-device-driver device-tree acpi

我们可以在dts文件中声明平台设备信息,而不是对每个数据进行硬编码      进入操作系统。以“手臂”架构为例。它支持dts,我们会      从arch / arm / boot / dts / xx.dts中取dts。将此xx.dts转换为xx.dtb并加载      内核图片。当我遇到x86架构时,我最近遇到了ACPI,      从文档中,我理解的是ACPI类似于设备树。我们可以申报      在ACPI表中的平台设备信息信息,我怀疑这些ACPI到底在哪里      桌子在场。如何将此信息加载到Linux。使用ACPI有什么好处      DTS。如果我错了,请纠正我。      提前致谢

3 个答案:

答案 0 :(得分:1)

IMHO

ACPI和DT用于类似目的。但他们有独特的功能。现在有一天在DT中定义ACPI配置的努力。

既用于解决不同的问题。

  1. ACPI的目的是提高电源效率。
  2. DT旨在将平台文件移除到内核之外。
  3. 设备树在启动之前主要传递给Linux内核。 Linux内核启动时主要加载ACPI(有关详细信息,请查看Documentation / acpi / enumeration.txt)

    任何其他事情只是评论。

答案 1 :(得分:1)

不完全正确:

  • ACPI最初是固件(以前称为BIOS)和OS之间的接口,用于诸如电源管理之类的东西,还用于诸如平台设备探测之类的东西
  • DT始终(甚至在ACPI出现之前就已经存在)有关声明性平台设备描述(探测和配置)的信息,因此OS可以正确初始化所有驱动程序,配置操作点等。

ACPI的范围总是非常有限,并且取决于固件,而DT则独立存在(只是需要引导加载程序将正确的dtb传递给内核)。

ACPI是BIOS和主板供应商解决DT早已解决的一小部分问题的不专业的尝试。对于那些戴着绞刑架的人来说,一个主要的赞成论点可能是ACPI / BIOS在固件blob中隐藏了许多低级配置内容(直到运行时设备编程,例如用于电源管理),从而阻止了OS内核完全控制在机器上。 (最终会导致BIOS损坏导致机器损坏等)。 我们(内核开发人员)经常不得不处理糟糕的BIOS。

我的强烈建议:尽可能获得ACPI。

答案 2 :(得分:0)

用肺或g呼吸?取决于您的住所。

粗略的体系结构分类是

x86 - Server/PC - ACPI table 
ARM - embedded systems - Device Tree

在服务器/ PC主板上,ACPI表是UEFI固件的一部分,它位于闪存芯片上。该操作系统将稍后安装在其他地方(硬盘驱动器左右)。操作系统会解析ACPI表,但是操作系统开发人员无法控制固件中已经写入的内容。甚至他们甚至不知道电路板的内部设计。主板供应商(固件提供商)需要支持要安装的所有操作系统,不仅是Linux,因此,他们必须遵循标准(UEFI),而不是专注于Linux,例如设备树。

在嵌入式系统上,操作系统和其他所有东西都由供应商编程一次,而用户则不再编程。该操作系统是固件的一部分。因此,无需担心操作系统支持矩阵,并且主板和操作系统映像之间只有一对一的关系。 U-Boot,内核,initramfs,设备树blob驻留在同一闪存中(即NAND)。因此,开发人员可以访问和控制要部署为设备树的内容(尽管必须与实际硬件匹配)。

硬件设计人员应该能够提供ACPI表和设备树。视接收者而定,将是首选。

参考文献: