Implementar DTOs

A implementação de sobreposições da árvore de dispositivos (DTOs, na sigla em inglês) envolve dividir a árvore de dispositivos (DT), criar particionamento e execução. Depois de ter uma implementação funcional, você também deve manter a compatibilidade entre as duas DTs e determinar uma estratégia para garantir e a segurança de cada partição da DT.

Dividir a TD

Comece dividindo a TD em duas partes:

  • DT principal. A parte somente SoC e as configurações padrão, do fornecedor de SoC.
  • DT de sobreposição. As configurações específicas do dispositivo, fornecidas pelos ODM/OEM

Depois de dividir as DTs, é preciso garantir a compatibilidade entre as principais A TD e a DT sobreposta para que a mesclagem da TD principal com a da DT sobreposta resulte em uma DT do dispositivo. Para detalhes sobre o formato e as regras de DTO, consulte Sintaxe de DTO (em inglês). Para detalhes sobre várias DTs, consulte Várias DTs.

Criar DTs principais e de sobreposição

Para criar a DT principal:

  1. Compile o .dts da DT principal em um arquivo .dtb.
  2. Atualize o arquivo .dtb em uma partição do carregador de inicialização acessível pelo ambiente de execução (detalhada em [DTs de partição](#partition)).

Para criar a transferência de dados de sobreposição:

  1. Compile a DT de sobreposição .dts em um arquivo .dtbo. o formato do arquivo é igual ao do arquivo .dtb, formatado como DT simplificada, a extensão de arquivo diferente a distingue do Transferência de dados principal.
  2. Atualize o arquivo .dtbo em uma partição do carregador de inicialização acessível pelo ambiente de execução (detalhada em [DTs de partição](#partition)).

Para mais detalhes sobre como compilar com o DTC e verificar os resultados da DTO no host, consulte Compilar e verificar.

DTs de partição

Determine um local confiável e acessível pelo tempo de execução do carregador de inicialização no flash memória para colocar .dtb e .dtbo.

Locais de exemplo da DT principal:

  • Parte da partição de inicialização, anexada ao kernel (image.gz)
  • Separar blobs de DT (.dtb) na partição dedicada (dtb)

Exemplos de locais para a transferência de dados de sobreposição:

Figura 1. Coloque .dtbo em uma partição exclusiva, como uma partição dtbo.

Figura 2. Coloque o arquivo .dtbo em uma partição odm (faça isso somente se o carregador a capacidade de carregar dados do sistema de arquivos de uma partição odm).

Observação: o tamanho do sobrepor a partição da TD depende do dispositivo e da quantidade de alterações necessárias no topo do blob principal da DT. Normalmente, 8 MB é mais do que o suficiente e permite espaço para crescer no futuro, se necessário.

Para dispositivos com suporte atualizações contínuas (A/B), A/B, principais partições da DT e da DT de sobreposição:

Figura 3. Partição de DTBO A/B, exemplo 1.

Figura 4. Partição de DTBO A/B, exemplo 2.

Executar no carregador de inicialização

Para executar:

Figura 5. Implementação típica de ambiente de execução para DTO no carregador de inicialização.

  1. Carregue .dtb do armazenamento para a memória.
  2. Carregue .dtbo do armazenamento para a memória.
  3. Sobreponha .dtb com .dtbo para ser uma DT mesclada.
  4. Iniciar kernel de acordo com o endereço de memória da DT mesclada.

Manter compatibilidade

O DTB principal (do fornecedor de SoC) é tratado como uma superfície de API para DTBOs. Depois separar a TD em uma parte comum SoC e uma parte específica do dispositivo, será necessário manter as duas partes mutuamente compatíveis no futuro, incluindo:

  • Definição da TD na DT principal. Por exemplo, nós, propriedades rótulos. Qualquer mudança de definição na DT principal pode acionar alterações na sobreposição TD. Por exemplo, para corrigir o nome de um nó na DT principal, defina um "alias" marcar que mapeia para o nome do nó original (para evitar a alteração da DT da sobreposição).
  • Sobreponha o local da loja de DT. Por exemplo, nome da partição, armazenar .

Garantir a segurança

O carregador de inicialização precisa garantir que o DTB ou DTBO esteja seguro, sem modificações e sem corrupção. É possível usar qualquer solução para proteger DTB ou DTBO, por exemplo, Imagem de inicialização assinatura no VBoot 1.0 ou AVB Rodapé HASH (VBoot 2.0).

  • Se DTB ou DTBO estiver em uma partição exclusiva, você poderá adicioná-la à cadeia de confiança do AVB. A cadeia de confiança começa em uma raiz protegida por hardware e vai para o carregador de inicialização, que verifica a integridade e a autenticidade de DTB ou DTBO.
  • Se o DTB ou DTBO estiver em uma partição atual (como a odm ela deve estar na cadeia de confiança do AVB. (partição de DTBO pode compartilhar uma chave pública com a partição odm).

Para mais detalhes, consulte a página Verificados Inicialização.