都用于声明平台设备信息:
dts(设备树)用于arm架构。开发人员可以修改。是独立存在的文件。
acpi表用于x86架构。ACPI 表是位于闪存芯片上的 UEFI 固件的一部分。在 x86 上,内核从固件提供的 ACPI 表中获取所有平台信息(对于 x86,这通常称为 BIOS)。开发人员无法修改,只能由主板供应商修改BIOS固件,如果缺少任何内容,则意味着这个 BIOS 不够好。
不同的目的:
DTS 的目的是将设备驱动代码和设备信息相分离。
ACPI 的目的是提高电源效率。
不同的加载时刻:
ACPI 通常在 linux 内核启动时加载。
DTS通常在启动之前传递给 linux 内核。
Linux内核源码中,某个硬件设备XXX的驱动中,在进行名称XXX匹配时,使用不同的结构体成员调用:
DTS使用.of_match_table。
ACPI使用.acpi_match_table。
Linux内核源码include\linux\中结构体如下:
struct device_driver {
....
const struct of_device_id *of_match_table;
const struct acpi_device_id *acpi_match_table;
....
- 1
- 2
- 3
- 4
- 5
硬件设备的驱动内可同时填写ACPI和DTS,这样就可以兼容,也可只写其中一个。
参考:/questions/32310935/difference-between-dts-and-acpi