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

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

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

ДТБО Большой двоичный объект дерева устройств для наложения

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

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

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

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

Рис. 1. Типичная реализация загрузки дерева устройств в загрузчик.
  1. Чтобы создать и прошить большой двоичный объект дерева устройств:

    1а. Используйте компилятор дерева устройств ( dtc > ), чтобы скомпилировать исходный код дерева устройств ( .dts ) в большой двоичный объект дерева устройств ( .dtb ). Большой двоичный объект дерева устройств отформатирован как сведенное дерево устройств. 1б. Запишите файл .dtb в место, доступное во время выполнения загрузчика (подробнее см. ниже).

  2. Чтобы разделить, определите доступное во время выполнения загрузчика и надежное место во флэш-памяти, чтобы поместить .dtb . Примеры локаций:

    Загрузочный раздел
    Рисунок 2. Поместите .dtb в загрузочный раздел, добавив его к image.gz и передав mkbootimg как « kernel ».
    Уникальный раздел
    Рисунок 3. Поместите .dtb в уникальный раздел (например, раздел dtb ).

  3. Чтобы загрузить большой двоичный объект дерева устройств и запустить ядро:

    3а. Загрузите .dtb из хранилища в память. 3б. Запустите ядро, используя адрес памяти загруженного DT.

Что дальше?

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