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

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

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

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

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

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

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

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

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

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

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

DT Дерево устройств
DTB BLOB-объект дерева устройств
DTBO BLOB-объект дерева устройств для наложения
DTC Компилятор дерева устройств
DTO Наложение дерева устройств
DTS Источник дерева устройств
FDT Уплощенный Device Tree, двоичный формат , содержащийся в .dtb файла двоичных объектов