Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Наложения дерева устройств
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Дерево устройств (DT) — это структура данных именованных узлов и свойств, описывающих необнаруживаемое оборудование. Ядра, такие как ядро Linux, используемое в Android, используют DT для поддержки широкого спектра конфигураций оборудования, используемых устройствами на базе Android. Поставщики оборудования предоставляют собственные файлы исходного кода дерева устройств (DTS) , которые компилируются в файл BLOB-объекта дерева устройств (DTB) с помощью компилятора дерева устройств . Затем эти файлы используются загрузчиком. Файл DTB содержит сплющенное дерево устройств в двоичном формате.
Наложение дерева устройств (DTO) позволяет накладывать центральный DTB на DT ( блок-объект дерева устройств для наложения (DTBO) ). Загрузчик, использующий DTO, может поддерживать DT системы на кристалле (SoC) и динамически накладывать DT, специфичный для устройства, добавляя узлы в дерево и внося изменения в свойства в существующем дереве.
Обновления в версии Android 9
В Android 9 загрузчик не должен изменять свойства, определенные в DTO, перед передачей унифицированного DTB ядру.
Загрузить DT
Загрузка DT в загрузчик включает в себя сборку, разбиение на разделы и запуск.

Рисунок 1. Типичная реализация загрузки дерева устройств в загрузчике.
Чтобы создать и прошить DTB:
1a. Используйте DTC ( dtc
) для компиляции DTS ( .dts
) в DTB ( .dtb
). DTB отформатирован как сплющенный DT. 1b. Прошейте файл .dtb
в доступное для загрузчика место (подробнее см. ниже).
Для разбиения на разделы определите доступное для времени выполнения загрузчика и доверенное место во флэш-памяти для размещения .dtb
. Примеры мест:

Рисунок 2. Поместите .dtb в загрузочный раздел с помощью добавление к image.gz и передача как «ядро» в mkbootimg. | 
Рисунок 3. Поместите .dtb в уникальный раздел (например, раздел dtb). |
Чтобы загрузить DTB и запустить ядро:
- Загрузить
.dtb
из хранилища в память. - Запустить ядро, используя адрес памяти загруженного DT.
Что дальше?
На этой странице подробно описывается типичный рабочий процесс загрузчика для загрузки DT и приводится список общих терминов DT. На других страницах этого раздела описывается, как реализовать поддержку загрузчика , как компилировать , проверять и оптимизировать ваш DTO и как использовать несколько DT . Вы также можете получить подробную информацию о синтаксисе DTO и требуемом форматировании разделов DTO и DTBO .
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Device tree overlays\n\n\u003cbr /\u003e\n\nA *device tree (DT)* is a data structure of named nodes and properties that\ndescribe non-discoverable hardware. Kernels, such as the Linux kernel\nused in Android, use DTs to support a wide range of hardware configurations used\nby Android-powered devices. Hardware vendors supply their own *device tree\nsource (DTS)* files, which are compiled into the *device tree blob (DTB)* file\nusing the *device tree compiler* . These files are then used by the\nbootloader. The DTB file contains a binary-formatted *flattened device tree*.\n\nA [*device tree overlay (DTO)*](https://lkml.org/lkml/2012/11/5/615)\nenables a central DTB to be overlaid on the DT (a *device tree blob\nfor overlay (DTBO)*). A bootloader using DTO can maintain the system-on-chip\n(SoC) DT and dynamically overlay a device-specific DT, adding nodes to the tree\nand making changes to properties in the existing tree.\n\nUpdates in Android 9 release\n----------------------------\n\nIn Android 9, the bootloader must not modify the\nproperties defined in the DTOs before passing the unified DTB to the kernel.\n\nLoad a DT\n---------\n\nLoading a DT in bootloader involves building, partitioning, and running.\n\n**Figure 1.** Typical implementation for loading device tree in bootloader.\n\n1. To create and flash the DTB:\n\n 1a. Use the DTC (`dtc`) to compile DTS (`.dts`) into a DTB (`.dtb`).\n The DTB is formatted as a flattened DT.\n 1b. Flash the `.dtb` file into a bootloader runtime-accessible location\n (detailed below).\n2. To partition, determine a bootloader runtime-accessible and trusted location\n in flash memory to put `.dtb`. Example locations:\n\n \u003cbr /\u003e\n\n |-----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n | **Figure 2.** Put .dtb in a boot partition by appending to image.gz and passing as \"kernel\" to mkbootimg. | **Figure 3.** Put .dtb in a unique partition (for example, dtb partition). |\n\n \u003cbr /\u003e\n\n3. To load the DTB and start the kernel:\n\n - Load `.dtb` from storage into memory.\n - Start kernel using the memory address of the loaded DT.\n\nWhat's next?\n------------\n\nThis page details a typical bootloader workflow for loading a DT and provides\na list of common DT terms. Other pages in this section describe how to\n[implement bootloader support](/docs/core/architecture/dto/implement), how to\n[compile](/docs/core/architecture/dto/compile), verify, and\n[optimize your DTO](/docs/core/architecture/dto/optimize), and how to\n[use multiple DTs](/docs/core/architecture/dto/multiple). You can\nalso get details on [DTO syntax](/docs/core/architecture/dto/syntax) and\nrequired\n[DTO and DTBO partition formatting](/docs/core/architecture/dto/partitions)."]]