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:
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.
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:
- Identifique o SoC e carregue o .dtb correspondente do armazenamento na memória.
- Identifique a placa e carregue o
.dtbo
correspondente do armazenamento na memória. - Sobreponha o
.dtb
com o.dtbo
para ser um DT mesclado. - Inicie o kernel dado o endereço de memória do DT mesclado.