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

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

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

Обновления в версии Android 9

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

Загрузите ОУ

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

Рисунок 1. Типичная реализация загрузки дерева устройств в загрузчик.

  1. Чтобы создать и прошить DTB:

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

  2. Для разделения определите доступное и надежное место загрузчика во флэш-памяти для размещения .dtb . Примеры мест:

    Рис. 2. Поместите .dtb в загрузочный раздел с помощью
    добавление в image.gz и передача как
    «ядро» в mkbootimg.

    Рисунок 3. Поместите .dtb в уникальный раздел.
    (например, раздел dtb).

  3. Чтобы загрузить DTB и запустить ядро:

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

Что дальше?

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