Usando vários DTs

Muitos fornecedores de SoC e ODMs suportam o uso de vários DTs em um dispositivo, permitindo que uma imagem alimente vários SKUs/configurações. Nesses casos, o bootloader identifica o hardware e carrega o DT correspondente em tempo de execução:

Figura 1. Sobreposição de várias árvores de dispositivos no carregador de inicialização.

Nota: O uso de vários DTs não é obrigatório.

Configurando

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

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

O bootloader deve ser capaz de:

  • Leia o ID do SoC e selecione a árvore de dispositivos principal correspondente e
  • Leia o ID da placa e selecione o conjunto de árvores de dispositivos de sobreposição de acordo.

Apenas um DT principal deve ser selecionado para uso em tempo de execução. Múltiplos TDs de sobreposição podem ser selecionados, mas devem ser compatíveis com o TD principal escolhido. O uso de várias sobreposições pode ajudar a evitar o armazenamento de uma sobreposição por placa dentro da 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.

Particionamento

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 armazenar os DTBs e DTBOs (o carregador de inicialização deve ser capaz de localizar esses arquivos no processo de correspondência). Tenha em mente que DTBs e DTBOs não podem existir na mesma partição. Se seus DTBs/DTBOs estiverem na partição dtb / dtbo , use a estrutura da tabela e o formato de cabeçalho detalhados em DTB/DTBO Partition Format .

Executando no bootloader

Para correr:

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