Usar várias DTs

Muitos fornecedores de SoC e ODMs oferecem suporte ao uso de várias árvores de dispositivos (DTs, na sigla em inglês) em um dispositivo, permitindo que uma imagem alimente várias SKUs ou configurações. Nesses casos, o bootloader identifica o hardware e carrega o DT correspondente no momento da execução:

Figura 1. Várias sobreposições da árvore de dispositivos (DTOs, na sigla em inglês) no carregador de inicialização.

Observação:o uso de vários DTs não é obrigatório.

Configurar

Para adicionar suporte a várias DTs ao modelo de DTO, configure uma lista de DTs principais e outra lista de DTs de sobreposição.

Figura 2. Implementação de DTO de execução para vários DTs.

O carregador de inicialização precisa:

  • Leia o ID do SoC e selecione o DT principal correspondente.
  • Leia o ID do tabuleiro e selecione o conjunto de DTs de sobreposição de acordo.

Somente um DT principal deve ser selecionado para uso no tempo de execução. Várias DTs de sobreposição podem ser selecionadas, mas precisam ser compatíveis com a DT principal escolhida. O uso de várias sobreposições pode ajudar a evitar o armazenamento de uma sobreposição por placa na partição DTBO e permitir que o carregador de inicialização determine o subconjunto de sobreposições necessárias com base no ID da placa (ou possivelmente sondando os periféricos). Por exemplo, a placa A pode precisar dos dispositivos adicionados pelas sobreposições 1, 3 e 5, enquanto a placa B pode precisar dos dispositivos adicionados pelas sobreposições 1, 4 e 5.

Partição

Para particionar, determine um local confiável e acessível no tempo de execução do carregador de inicialização na memória flash para armazenar os DTBs e DTBOs. O carregador de inicialização precisa localizar esses arquivos no processo de correspondência. Os DTBs e DTBOs não podem existir na mesma partição. Se os DTBs/DTBOs estiverem na partição dtb/dtbo, use a estrutura de tabela e o formato de cabeçalho detalhados em Formato de partição de DTB e DTBO.

Executar no carregador de inicialização

Para executar:

  1. Identifique o SoC e carregue o .dtb correspondente do armazenamento para a memória.
  2. Identifique a placa e carregue o .dtbo correspondente do armazenamento para a memória.
  3. Sobreponha o .dtb com o .dtbo para que seja um DT mesclado.
  4. Inicia o kernel com o endereço de memória do DT mesclado.