我们可以在dts文件中声明平台设备信息,而不是对每个数据进行硬编码 进入操作系统。以“手臂”架构为例。它支持dts,我们会 从arch / arm / boot / dts / xx.dts中取dts。将此xx.dts转换为xx.dtb并加载 内核图片。当我遇到x86架构时,我最近遇到了ACPI, 从文档中,我理解的是ACPI类似于设备树。我们可以申报 在ACPI表中的平台设备信息信息,我怀疑这些ACPI到底在哪里 桌子在场。如何将此信息加载到Linux。使用ACPI有什么好处 DTS。如果我错了,请纠正我。 提前致谢
答案 0 :(得分:1)
IMHO
ACPI和DT用于类似目的。但他们有独特的功能。现在有一天在DT中定义ACPI配置的努力。
既用于解决不同的问题。
设备树在启动之前主要传递给Linux内核。 Linux内核启动时主要加载ACPI(有关详细信息,请查看Documentation / acpi / enumeration.txt)
任何其他事情只是评论。
答案 1 :(得分:1)
不完全正确:
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表和设备树。视接收者而定,将是首选。
参考文献: