Sobreposições da árvore de dispositivos

Uma árvore de dispositivos (DT) é uma estrutura de dados de nós e propriedades nomeados que que descrevem hardwares não detectáveis. Kernels, como o do Linux usadas no Android, usam DTs para dar suporte a uma ampla gama de configurações de hardware usadas por dispositivos com tecnologia Android. Os fornecedores de hardware disponibilizam sua própria árvore de dispositivos" Source (DTS), que são compilados no arquivo blob da árvore de dispositivos (DTB, na sigla em inglês). usando o compilador de árvore de dispositivos. Em seguida, esses arquivos são usados carregador de inicialização. O arquivo DTB contém uma árvore de dispositivos simplificada formatada em binário.

Uma sobreposição da árvore de dispositivos (DTO, na sigla em inglês) 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 system on chip DT (SoC) e sobrepõe dinamicamente uma DT específica do dispositivo, adicionando nós à árvore e alterar propriedades na árvore existente.

Atualizações na versão do Android 9

No Android 9, o carregador de inicialização não deve modificar a propriedades definidas nas DTOs antes de passar a DTB unificada para o kernel.

Carregar uma DT

Carregar uma DT no carregador de inicialização envolve criar, particionar e executar.

Figura 1. Implementação típica para carregar a árvore de dispositivos no carregador de inicialização.

  1. Para criar e atualizar o DTB:

    1a. Use o DTC (dtc) para compilar o DTS (.dts) em um DTB (.dtb). A DTB é formatada como uma DT simplificada. 1b. Atualize o arquivo .dtb em um local acessível pelo ambiente de execução do carregador de inicialização (detalhado abaixo).

  2. Para particionar, determine um local confiável e acessível pelo ambiente 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 a image.gz e transmitindo como
    "kernel" "mkbootimg".

    Figura 3. Coloque .dtb em uma partição exclusiva
    (por exemplo, partição dtb).

  3. Para carregar o DTB e iniciar o kernel:

    • Carregue .dtb do armazenamento para a memória.
    • Inicie o kernel usando o endereço de memória da DT carregada.

Qual é a próxima etapa?

Esta página detalha um fluxo de trabalho típico de um carregador de inicialização para carregar uma DT e fornece uma lista de termos comuns da DT. Outras páginas nesta seção descrevem como implementar o suporte ao carregador de inicialização, como compilar, verificar e otimizar sua DTO e como usar várias DTs. Você pode Veja também detalhes sobre a sintaxe da DTO e obrigatório Formatação de partições de DTO e DTBO.