我们可以在dts文件中声明平台设备信息,而不是将每个数据硬编码到操作系统中。以"arm“架构为例。它支持dts,我们将从arch/arm/boot/ dts /xx.dts中获取dts。将此xx.dts转换为xx.dtb并加载内核映像。我最近遇到了ACPI,当我遇到x86架构时,从文档中我理解的是ACPI类似于设备树。我们可以在ACPI表中声明平台设备信息,我的疑问是这些ACPI表到底在哪里。如何将此信息加载到linux。与dts相比,使用ACPI有什么优势?如果我错了,请纠正我。提前感谢
发布于 2019-11-07 03:32:33
是用肺呼吸还是用鳍呼吸?这取决于你住在哪里。
架构的粗略分类是
x86 - Server/PC - ACPI table
ARM - embedded systems - Device Tree在服务器/PC主板上,ACPI表是驻留在闪存芯片上的UEFI固件的一部分。操作系统稍后会安装在其他地方(硬盘驱动器或更多)。操作系统解析ACPI表,但是操作系统开发人员无法控制固件中已经写入的内容;或者他们甚至不知道电路板的内部设计。主板供应商(固件提供商)需要支持要安装的任何操作系统,而不仅仅是Linux,因此他们必须遵循标准(UEFI),而不是专注于Linux的东西,例如设备树。
在嵌入式系统中,操作系统和其他所有东西都是由供应商编写一次,而不是由用户再次编写。操作系统是固件的一部分。因此,无需担心操作系统支持列表,只需在主板和操作系统映像之间建立一对一的关系即可。U-Boot、kernel、initramfs、设备树blob驻留在相同的闪存(即NAND)上。因此,开发人员可以访问和控制要部署为设备树的内容(但必须与实际硬件匹配)。
硬件设计人员应该能够提供ACPI表和设备树。根据接收器的不同,一个将是首选。
参考文献:
发布于 2019-05-21 17:40:26
不完全正确:
ACPI在范围上总是非常有限,并且依赖于固件,而DT则是独立的(只需要引导加载程序将正确的dtb传递给内核)。
ACPI是bios和电路板供应商为解决DT很久以前已经解决的一小部分问题而进行的不专业的、黑客般的尝试。对于那些戴着绞刑架的人来说,一个主要的支持论点可能是ACPI/BIOS隐藏了许多低级配置内容(直到运行时设备编程,例如。用于电源管理),从而防止OS内核完全控制机器。
发布于 2017-10-30 23:43:24
IMHO
ACPI和DT用于类似的目的,但它们有其独特的功能。目前,定义ACPI配置的工作都是在DT中进行的。
ACPI和DT用于解决不同的问题:
设备树主要是在linux内核启动之前传递给它的。ACPI通常是在linux内核启动时加载的(有关更多信息,请查看文档/acpi/Enumereration.txt)
对于任何其他的事情,只需评论。
https://stackoverflow.com/questions/32310935
复制相似问题