ani*_*han 9 linux x86 acpi linux-device-driver device-tree
我们可以在dts文件中声明平台设备信息,而不是将每个数据硬编码到操作系统中.以"手臂"架构为例.它支持dts,我们将从arch/arm/boot/dts/xx.dts中获取dts.将此xx.dts转换为xx.dtb并加载内核Image.我最近遇到了ACPI,当我遇到x86架构时,从文档来看,我所理解的是ACPI类似于设备树.我们可以在ACPI表中声明平台设备信息信息,我怀疑这些ACPI表到底在哪里.如何将此信息加载到Linux.使用ACPI而不是dts有什么好处.如果我错了,请纠正我.提前致谢
Enr*_*elt 10
不完全正确:
ACPI 的范围始终非常有限,并且依赖于固件,而 DT 则独立存在(只需要引导加载程序将正确的 dtb 传递给内核)。
ACPI 是 BIOS 和主板供应商的不专业、黑客式的尝试,旨在解决 DT 很久以前就已经解决的问题的一小部分。对于那些戴着绞架的人来说,一个主要的争论可能是 ACPI/BIOS 在固件 blob 中隐藏了许多低级配置内容(直到运行时设备编程,例如用于电源管理),从而阻止操作系统内核完全控制在机器上。(这最终会导致 BIOS 损坏而导致机器损坏等)。我们,内核开发人员,经常不得不解决蹩脚的 BIOS。
我强烈建议:尽可能使用 ACPI。
用肺呼吸还是用鳃呼吸?取决于你住在哪儿。
架构的粗略分类是
x86 - Server/PC - ACPI table
ARM - embedded systems - Device Tree
Run Code Online (Sandbox Code Playgroud)
在服务器/PC 主板上,ACPI 表是驻留在闪存芯片上的 UEFI 固件的一部分。稍后将在其他地方(硬盘驱动器左右)安装操作系统。操作系统解析 ACPI 表,但操作系统开发人员无法控制固件中已经写入的内容;或者他们甚至不知道电路板的内部设计。主板供应商(固件提供商)需要支持要安装的任何操作系统,而不仅仅是 Linux,因此他们必须遵循标准 (UEFI),而不是专注于 Linux 的东西,例如设备树。
在嵌入式系统上,操作系统和其他一切都由供应商编程一次,用户再也不会编程。操作系统是固件的一部分。因此无需担心操作系统支持矩阵,只需在主板和您的操作系统映像之间建立一对一的关系即可。U-Boot、内核、initramfs、设备树 blob 驻留在同一个闪存存储(即 NAND)上。因此,开发人员可以访问和控制要部署为设备树的内容(但必须与实际硬件匹配)。
硬件设计人员应该能够提供 ACPI 表和设备树。根据接收器的不同,将首选一个。
参考:
恕我直言
ACPI 和 DT 的用途相似,但它们有其独特的功能。如今,在 DT 中定义 ACPI 配置的努力。
ACPI和DT用于解决不同的问题:
设备树主要在启动之前传递给 Linux 内核。ACPI 通常在 Linux 内核启动时加载(查看 Documentation/acpi/enumeration.txt 了解更多信息)
对于任何其他事情,请发表评论。
| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |