Дерево устройств - Device tree

В вычисление, а дерево устройств (также написано дьявольское дерево) это структура данных описание аппаратных компонентов конкретного компьютера, чтобы Операционная система с ядро может использовать и управлять этими компонентами, включая ЦПУ или процессоры, объем памяти, то автобусов и периферийные устройства.

Дерево устройств было получено из SPARC-based рабочие станции и серверы через Открытая прошивка проект. Текущая спецификация Devicetree[1]нацелен на меньшие системы, но все еще используется с некоторыми системами серверного класса (например, описанными Справочник по платформе Power Architecture ).

Персональные компьютеры с x86 Архитектура обычно не использует деревья устройств, вместо этого полагаясь на различные протоколы автоматической конфигурации для обнаружения оборудования. Системы, использующие деревья устройств, обычно передают статическое дерево устройств (возможно, хранящееся в ПЗУ ) в операционную систему, но также может создавать дерево устройств на ранних этапах загрузка. В качестве примера, Das U-Boot и kexec может передать дерево устройств при запуске новой операционной системы. В системах с загрузчиком, который не поддерживает деревья устройств, статическое дерево устройств может быть установлено вместе с операционной системой; то Ядро Linux поддерживает такой подход.

Спецификация Devicetree в настоящее время управляется сообществом devicetree.org, которое, среди прочего, связано с Линаро и Рука.

Форматы дерева устройств

Дерево устройств может содержать любые данные, так как внутри это дерево названных узлов и характеристики. Узлы содержат свойства и дочерние узлы, а свойства - пары имя – значение.

Деревья устройств имеют как двоичный формат для операционных систем и текстовый формат для удобного редактирования и управления.[1]

Использование в Linux

При правильном дереве устройств одно и то же скомпилированное ядро ​​может поддерживать различные конфигурации оборудования в более широком семействе архитектур. В Ядро Linux для ARC, РУКА, C6x, H8 / 300, MicroBlaze, MIPS, NDS32, Ниос II, OpenRISC, PowerPC, RISC-V, SuperH, и Xtensa архитектура считывает информацию о дереве устройств; на ARM деревья устройств были обязательными для всех новых SoC с 2012 года.[2] Это можно рассматривать как средство от огромного количества форков (Linux и Das U-Boot), которые исторически создавались для поддержки (незначительно) различных плат ARM. Цель состоит в том, чтобы переместить значительную часть описания оборудования из двоичного кода ядра в скомпилированный BLOB-объект дерева устройств, который передается ядру посредством загрузчик, заменяя ряд специальных плат C исходные файлы и параметры времени компиляции в ядре.[2]

Это было принято для ARM на базе Дистрибутивы Linux включить загрузчик, который обязательно был настроен для конкретных плат, например Raspberry Pi или Hackberry A10. Это создало проблемы для создателей дистрибутивов Linux, поскольку некоторая часть операционной системы должна быть скомпилирована специально для каждого варианта платы или обновлена ​​для поддержки новых плат. Однако некоторые современные SoC (например, Freescale i.MX6 ) иметь предоставленный производителем загрузчик с деревом устройств на отдельном от операционной системы чипе.[3]

Проприетарный формат файла конфигурации, используемый для аналогичных целей, формат файла FEX,[4] это стандарт де-факто среди Allwinner SoC.

Использование в Windows

В Windows дерево устройств поддерживается диспетчером Plug-and-Play для оценки таких вещей, как возможность безопасного извлечения устройств.[5]

Смотрите также

Рекомендации

  1. ^ а б «Спецификация Девицетри» (PDF). Выпуск v0.3. devicetree.org. 2020-02-13.
  2. ^ а б «Контрольный список поддержки ARM SoC Linux» (PDF).
  3. ^ "Обновление u-boot для плат Boundary Devices".
  4. ^ "Fex Guide". linux-sunxi.org. 2014-05-30. Получено 2014-06-12.
  5. ^ Худек, Тед; Шерер, Тим (2017-06-16). «Дерево устройств - драйверы Windows». docs.microsoft.com. Microsoft. Получено 2020-02-08.

внешняя ссылка