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