Sobreposições de árvore de dispositivos

Uma árvore de dispositivos (DT) é uma estrutura de dados de nós nomeados e propriedades que descrevem hardware não detectável. Kernels, como o kernel Linux usado no Android, usam DTs para oferecer suporte a uma ampla variedade de configurações de hardware usadas por dispositivos com Android. Os fornecedores de hardware fornecem seus próprios arquivos Device Tree Source (DTS) , que são compilados no arquivo Device Tree Blob (DTB) usando o Device Tree Compiler . Esses arquivos são então usados ​​pelo bootloader. O arquivo DTB contém uma árvore de dispositivos nivelados em formato binário.

Uma sobreposição de árvore de dispositivos (DTO) permite que um blob de árvore de dispositivos central (DTB) seja sobreposto na árvore de dispositivos. Um bootloader usando DTO pode manter o DT do sistema no chip (SoC) e sobrepor dinamicamente um DT específico do dispositivo, adicionando nós à árvore e fazendo alterações nas propriedades da árvore existente.

DTBO Blob de árvore de dispositivos para sobreposição

Atualizações na versão do Android 9

No Android 9, o bootloader não deve modificar as propriedades definidas nas sobreposições da árvore de dispositivos antes de passar o blob da árvore de dispositivos unificado para o kernel.

Carregar uma árvore de dispositivos

Carregar uma árvore de dispositivos no bootloader envolve construção, particionamento e execução.

Figura 1. Implementação típica para carregar árvore de dispositivos no bootloader.
  1. Para criar e atualizar o blob da árvore de dispositivos:

    1a. Use o compilador de árvore de dispositivos ( dtc >) para compilar a origem da árvore de dispositivos ( .dts ) em um blob de árvore de dispositivos ( .dtb ). O blob da árvore de dispositivos é formatado como uma árvore de dispositivos nivelada. 1b. Atualize o arquivo .dtb em um local acessível em tempo de execução do bootloader (detalhado abaixo).

  2. Para particionar, determine um local confiável e acessível em tempo de execução do bootloader na memória flash para colocar .dtb . Locais de exemplo:

    Partição de inicialização
    Figura 2. Coloque .dtb na partição de inicialização anexando image.gz e passando como " kernel " para mkbootimg .
    Partição Única
    Figura 3. Coloque .dtb em uma partição exclusiva (por exemplo, partição dtb ).
  3. Para carregar o blob da árvore de dispositivos e iniciar o kernel:

    • Carregue .dtb do armazenamento na memória.
    • Inicie o kernel usando o endereço de memória do DT carregado.

Qual é o próximo?

Esta página detalha um fluxo de trabalho típico do bootloader 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 bootloader , como compilar , verificar e otimizar seu DTO e como usar vários DTs . Você também pode obter detalhes sobre a sintaxe DTO e a formatação necessária da partição DTO/DTBO .

,

Uma árvore de dispositivos (DT) é uma estrutura de dados de nós nomeados e propriedades que descrevem hardware não detectável. Kernels, como o kernel Linux usado no Android, usam DTs para oferecer suporte a uma ampla variedade de configurações de hardware usadas por dispositivos com Android. Os fornecedores de hardware fornecem seus próprios arquivos Device Tree Source (DTS) , que são compilados no arquivo Device Tree Blob (DTB) usando o Device Tree Compiler . Esses arquivos são então usados ​​pelo bootloader. O arquivo DTB contém uma árvore de dispositivos nivelados em formato binário.

Uma sobreposição de árvore de dispositivos (DTO) permite que um blob de árvore de dispositivos central (DTB) seja sobreposto na árvore de dispositivos. Um bootloader usando DTO pode manter o DT do sistema no chip (SoC) e sobrepor dinamicamente um DT específico do dispositivo, adicionando nós à árvore e fazendo alterações nas propriedades da árvore existente.

DTBO Blob de árvore de dispositivos para sobreposição

Atualizações na versão do Android 9

No Android 9, o bootloader não deve modificar as propriedades definidas nas sobreposições da árvore de dispositivos antes de passar o blob da árvore de dispositivos unificado para o kernel.

Carregar uma árvore de dispositivos

Carregar uma árvore de dispositivos no bootloader envolve construção, particionamento e execução.

Figura 1. Implementação típica para carregar árvore de dispositivos no bootloader.
  1. Para criar e atualizar o blob da árvore de dispositivos:

    1a. Use o compilador de árvore de dispositivos ( dtc >) para compilar a origem da árvore de dispositivos ( .dts ) em um blob de árvore de dispositivos ( .dtb ). O blob da árvore de dispositivos é formatado como uma árvore de dispositivos nivelada. 1b. Atualize o arquivo .dtb em um local acessível em tempo de execução do bootloader (detalhado abaixo).

  2. Para particionar, determine um local confiável e acessível em tempo de execução do bootloader na memória flash para colocar .dtb . Locais de exemplo:

    Partição de inicialização
    Figura 2. Coloque .dtb na partição de inicialização anexando image.gz e passando como " kernel " para mkbootimg .
    Partição Única
    Figura 3. Coloque .dtb em uma partição exclusiva (por exemplo, partição dtb ).
  3. Para carregar o blob da árvore de dispositivos e iniciar o kernel:

    • Carregue .dtb do armazenamento na memória.
    • Inicie o kernel usando o endereço de memória do DT carregado.

Qual é o próximo?

Esta página detalha um fluxo de trabalho típico do bootloader 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 bootloader , como compilar , verificar e otimizar seu DTO e como usar vários DTs . Você também pode obter detalhes sobre a sintaxe DTO e a formatação necessária da partição DTO/DTBO .

,

Uma árvore de dispositivos (DT) é uma estrutura de dados de nós nomeados e propriedades que descrevem hardware não detectável. Kernels, como o kernel Linux usado no Android, usam DTs para oferecer suporte a uma ampla variedade de configurações de hardware usadas por dispositivos com Android. Os fornecedores de hardware fornecem seus próprios arquivos Device Tree Source (DTS) , que são compilados no arquivo Device Tree Blob (DTB) usando o Device Tree Compiler . Esses arquivos são então usados ​​pelo bootloader. O arquivo DTB contém uma árvore de dispositivos nivelados em formato binário.

Uma sobreposição de árvore de dispositivos (DTO) permite que um blob de árvore de dispositivos central (DTB) seja sobreposto na árvore de dispositivos. Um bootloader usando DTO pode manter o DT do sistema no chip (SoC) e sobrepor dinamicamente um DT específico do dispositivo, adicionando nós à árvore e fazendo alterações nas propriedades da árvore existente.

DTBO Blob de árvore de dispositivos para sobreposição

Atualizações na versão do Android 9

No Android 9, o bootloader não deve modificar as propriedades definidas nas sobreposições da árvore de dispositivos antes de passar o blob da árvore de dispositivos unificado para o kernel.

Carregar uma árvore de dispositivos

Carregar uma árvore de dispositivos no bootloader envolve construção, particionamento e execução.

Figura 1. Implementação típica para carregar árvore de dispositivos no bootloader.
  1. Para criar e atualizar o blob da árvore de dispositivos:

    1a. Use o compilador de árvore de dispositivos ( dtc >) para compilar a origem da árvore de dispositivos ( .dts ) em um blob de árvore de dispositivos ( .dtb ). O blob da árvore de dispositivos é formatado como uma árvore de dispositivos nivelada. 1b. Atualize o arquivo .dtb em um local acessível em tempo de execução do bootloader (detalhado abaixo).

  2. Para particionar, determine um local confiável e acessível em tempo de execução do bootloader na memória flash para colocar .dtb . Locais de exemplo:

    Partição de inicialização
    Figura 2. Coloque .dtb na partição de inicialização anexando image.gz e passando como " kernel " para mkbootimg .
    Partição Única
    Figura 3. Coloque .dtb em uma partição exclusiva (por exemplo, partição dtb ).
  3. Para carregar o blob da árvore de dispositivos e iniciar o kernel:

    • Carregue .dtb do armazenamento na memória.
    • Inicie o kernel usando o endereço de memória do DT carregado.

Qual é o próximo?

Esta página detalha um fluxo de trabalho típico do bootloader 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 bootloader , como compilar , verificar e otimizar seu DTO e como usar vários DTs . Você também pode obter detalhes sobre a sintaxe DTO e a formatação necessária da partição DTO/DTBO .