Разница между dts и ACPI

Мы можем объявить информацию об устройстве платформы в файле dts, а не жестко кодировать все данные в операционной системе. Принимая «рука» архитектура как пример. он поддерживает dts, и мы будем брать dts из arch / arm / boot / dts / xx.dts. Преобразуйте этот xx.dts в xx.dtb и загрузите образ ядра. Я недавно столкнулся с ACPI, когда я натолкнулся на архитектуру x86, из документов я понял, что ACPI похож на дерево устройств. Мы можем объявить информацию об устройстве платформы в таблицах ACPI, я сомневаюсь, где именно эти таблицы ACPI присутствуют. Как я могу загрузить эту информацию в Linux. В чем преимущество использования ACPI над DTS. Пожалуйста, поправьте меня, если я ошибаюсь. заранее спасибо


person anikhan    schedule 31.08.2015    source источник
comment
Таблицы ACPI находятся в прошивке. В частности, вас интересует DSDT one. Вы также можете переопределить их (см stackoverflow.com/questions/ 32177990 /).   -  person 0andriy    schedule 31.08.2015
comment
Благодаря Энди свой комментарий, я хочу, чтобы добавить информацию платформы устройства в Linux при компиляции для (Intel Atom x86 на основе платы), в Linux, где именно я могу добавить эту информацию. Подобно arm, куда я добавляю в arch / arm / boot / xx.dts.   -  person anikhan    schedule 01.09.2015
comment
@anikhan, на ARM вы не просто помещаете что-то в xx.dts, вы говорите прошивке загрузить скомпилированный файл dtb и передать указатель на него загруженному ядру. На x86 ядро ​​берет на себя всю информацию о платформе из таблиц ACPI, которые предусмотрены прошивкой (которая обычно называется BIOS для x86). Вы не можете поставить произвольную информацию платформы там. Если чего-то не хватает, это означает, что ваш BIOS недостаточно хорош - он либо не обнаруживает подключаемое устройство, либо не предоставляет информацию о жестко подключенной / припаянной части платформы. Исправьте прошивку, а не линукс.   -  person Alexander Amelkin    schedule 07.06.2017
comment
Прежде всего, не забудьте добавить никнейм человека (начинающийся с @), которого вы комментируете, иначе все будет взорвано из прошлого.   -  person 0andriy    schedule 10.01.2020


Ответы (3)


Дышать легкими или жабрами? Зависит от того, где вы живете.

А грубый классификация архитектур

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

На материнских платах сервера / ПК таблица ACPI является частью прошивки UEFI, которая находится на флеш-чипе. ОС будет установлена ​​позже в другом месте (на жестком диске или около того). ОС анализирует таблицу ACPI, но разработчики ОС не контролируют то, что уже написано в прошивке; или они даже не знают внутренний дизайн платы. Поставщик платы (поставщик прошивки) должен поддерживать любую устанавливаемую ОС, а не только Linux, поэтому они должны следовать стандартам (UEFI), а не сосредотачиваться на Linux, например дереве устройств.

Во встроенных системах операционная система и все остальное программируются производителем один раз, а пользователь - никогда. ОС является частью прошивки. Так что не нужно беспокоиться о матрице поддержки ОС, просто установите соотношение 1: 1 между платой и образом вашей ОС. U-Boot, ядро, initramfs, blob-объект дерева устройств находятся в одном флэш-хранилище (например, NAND). Таким образом, разработчики имеют доступ и контроль над тем, что следует развернуть в качестве дерева устройств (хотя оно должно соответствовать реальному оборудованию).

Разработчики оборудования должны иметь возможность предоставить как таблицу ACPI, так и дерево устройств. В зависимости от получателя предпочтение будет отдано одному.

Использованная литература:

person lqu    schedule 06.11.2019

Не совсем правильно:

  • ACPI начинался как интерфейс между прошивкой (ранее BIOS) и ОС для таких вещей, как управление питанием, но также и таких вещей, как проверка устройств платформы.
  • DT всегда (даже задолго до появления ACPI) о описаниях декларативных платформ устройств (зондирующих и конфигурации), так что операционная система может корректно инициализировать все драйвера, настраивать рабочие точки, и т.д., и т.д.

ACPI был всегда очень ограничен и зависит от прошивки, в то время как DT стоит самостоятельно (просто требует загрузчика, чтобы передать правильный DTB к ядру).

ACPI является непрофессиональной, хак попыткой биоса и поставщиков борту решить небольшую часть проблем, которые DT уже давно решено. Главным про аргумент для тех виселицы-носящие людей, вероятно, является то, что ACPI / BIOS скрывает много конфигурации вещи низкого уровня (до программирования устройства во время выполнения, например. Для управления питанием) в прошивке сгустка, предотвращая тем самым ядро ​​операционной системы, чтобы иметь полный контроль над машиной. (что в конечном итоге приводит к таким вещам, как сломанные машины из-за сломанного BIOS и т. д.). Нам, разработчикам ядра, часто приходится работать с дрянными BIOS.

Мой настойчивый совет: приобретайте ACPI, когда можете.

person Enrico 'nekrad' Weigelt    schedule 21.05.2019
comment
Посмотрите на это: events.static.linuxfound.org/sites/ события / файлы / слайды / - person 0andriy; 10.01.2020

по моему мнению

ACPI и DT используются для аналогичных целей, но у них есть свои уникальные функции. В настоящее время усилия определения ACPI конфиги в DT.

ACPI и DT используются для решения разных задач:

  1. Целью ACPI было повышение энергоэффективности.
  2. Целью DT было удаление файлов платформы вне ядра.

Дерево устройств в основном передается ядру Linux до его загрузки. ACPI обычно загружается во время загрузки ядра Linux (дополнительную информацию см. В Documentation / acpi / enumeration.txt)

по любому другому просто прокомментируйте.

person Devidas    schedule 30.10.2017
comment
events.static.linuxfound.org/sites/events/files/ слайды / (в частности слайд 12) - person 0andriy; 24.01.2018