Наложения дерева устройств

Дерево устройств (DT) — это структура данных, состоящая из именованных узлов и свойств, которые описывают необнаруживаемое оборудование. Операционные системы, такие как ядро ​​Linux, используемое в Android, используют DT для поддержки широкого спектра аппаратных конфигураций, используемых устройствами на базе Android. Поставщики оборудования предоставляют свои собственные исходные файлы DT, которые Linux затем компилирует в файл Device Tree Blob (DTB), используемый загрузчиком.

Наложение дерева устройств (DTO) позволяет накладывать большой двоичный объект дерева устройств (DTB) на дерево устройств. Загрузчик, использующий DTO, может поддерживать DT системы на кристалле (SoC) и динамически накладывать DT для конкретного устройства, добавляя узлы в дерево и внося изменения в свойства существующего дерева.

На этой странице подробно описан типичный рабочий процесс загрузчика для загрузки DT и приведен список общих терминов DT. На других страницах этого раздела описывается, как реализовать поддержку загрузчика для DTO , как скомпилировать , проверить и оптимизировать реализацию DTO и как использовать несколько DT . Вы также можете получить подробную информацию о синтаксисе DTO и требуемом форматировании разделов DTO/DTBO .

Обновления в выпуске Android 9

В Android 9 загрузчик не должен изменять свойства, определенные в наложениях дерева устройств, перед передачей унифицированного большого двоичного объекта дерева устройств в ядро.

Загрузка дерева устройств

Загрузка дерева устройств в загрузчик включает в себя сборку, разбиение на разделы и запуск.

Рис. 1. Типичная реализация загрузки дерева устройств в загрузчик.
  1. Строить:
    • Используйте компилятор дерева устройств ( dtc ), чтобы скомпилировать исходный код дерева устройств ( .dts ) в большой двоичный объект дерева устройств ( .dtb ), отформатированный как сведенное дерево устройств.
    • Запишите файл .dtb в место, доступное во время выполнения загрузчика (подробнее см. ниже).
  2. Чтобы разделить, определите доступное во время выполнения загрузчика и надежное место во флэш-памяти, чтобы поместить .dtb . Примеры локаций:
    Загрузочный раздел
    Рисунок 2. Поместите .dtb в загрузочный раздел, добавив его к image.gz и передав mkbootimg как « kernel ».
    Уникальный раздел
    Рисунок 3. Поместите .dtb в уникальный раздел (например, раздел dtb ).
  3. Бежать:
    • Загрузите .dtb из хранилища в память.
    • Запустить ядро ​​по адресу памяти загруженного DT.

Терминология

В этом разделе используются следующие термины дерева устройств:

ДТ Дерево устройств
ДТБ BLOB-объект дерева устройств
ДТБО Большой двоичный объект дерева устройств для наложения
код неисправности Компилятор дерева устройств
ДТО Наложение дерева устройств
ДТС Источник дерева устройств
ФДТ Сглаженное дерево устройств, двоичный формат, содержащийся в файле .dtb