A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Sobreposições da árvore de dispositivos
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Uma árvore de dispositivos (DT, na sigla em inglês) é uma estrutura de dados de nós e propriedades nomeados que
descrevem hardware não detectável. Kernels, como o kernel do Linux
usado no Android, usam DTs para oferecer suporte a uma ampla variedade de configurações de hardware usadas
por dispositivos com tecnologia Android. Os fornecedores de hardware fornecem os próprios arquivos de origem da árvore de
dispositivos (DTS, na sigla em inglês), que são compilados no arquivo blob da árvore de dispositivos (DTB, na sigla em inglês)
usando o compilador de árvores de dispositivos. Esses arquivos são usados pelo
bootloader. O arquivo DTB contém uma árvore de dispositivos simplificada com formato binário.
Uma sobreposição de árvore de dispositivos (DTO)
permite que um DTB central seja sobreposto ao DT (um blob da árvore de dispositivos
para sobreposição (DTBO)). Um carregador de inicialização que usa DTO pode manter o DT do sistema em chip
(SoC, na sigla em inglês) e sobrepor dinamicamente um DT específico do dispositivo, adicionando nós à árvore
e fazendo mudanças nas propriedades da árvore atual.
Atualizações na versão do Android 9
No Android 9, o carregador de inicialização não pode modificar as
propriedades definidas nas DTOs antes de transmitir o DTB unificado para o kernel.
Carregar um DT
O carregamento de um DT no carregador de inicialização envolve a criação, a partição e a execução.

Figura 1. Implementação típica para carregar a árvore de dispositivos no carregador de inicialização.
Para criar e atualizar o DTB:
1a. Use o DTC (dtc
) para compilar DTS (.dts
) em um DTB (.dtb
).
O DTB é formatado como um DT achatado.
1b. Faça o flash do arquivo .dtb
em um local acessível pelo carregador de inicialização
(detalhado abaixo).
Para particionar, determine um local confiável e acessível em tempo de execução do carregador de inicialização
na memória flash para colocar .dtb
. Exemplos de locais:

Figura 2. Coloque .dtb em uma partição de inicialização anexando à image.gz e transmitindo como "kernel" para mkbootimg.
|

Figura 3. Coloque .dtb em uma partição exclusiva (por exemplo, partição dtb).
|
Para carregar o DTB e iniciar o kernel:
- Carregar
.dtb
do armazenamento para a memória.
- Inicie o kernel usando o endereço de memória do DT carregado.
Quais são as próximas etapas?
Esta página detalha um fluxo de trabalho típico do carregador de inicialização para carregar um DT e fornece
uma lista de termos comuns de DT. Outras páginas desta seção descrevem como
implementar o suporte ao carregador de inicialização, como
compilar, verificar e
otimizar seu DTO e como
usar vários DTs. Você também
pode conferir detalhes sobre a sintaxe de DTO e
a formatação de partição de DTO e DTBO.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 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)."]]