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 da árvore 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.
- Carregar
Qual é a próxima etapa?
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.