Device Tree Overlay (DTO) estende as implementações existentes de Flattened Device Tree (FDT) , permitindo que o espaço do usuário modifique os dados iniciais da devicetree no kernel em tempo de execução, carregando FDTs de sobreposição adicionais que alteram os dados originais. O Android não exige atualizações de tempo de execução de blobs DT do espaço do usuário, mas recomenda que os fornecedores adicionem o patch devicetree no bootloader com a ajuda de libfdt
ou libufdt
.
Suporte Android DTO
O suporte do Android para DTOs varia de acordo com a versão do Android:
- O Android 7.xe versões anteriores não exigem suporte a devicetree e não fornecem recomendações sobre como os fornecedores passam blobs de DT para o kernel ou onde eles os armazenam.
- O Android 8.x recomenda suporte a devicetree para manter separadas as partes específicas da placa e somente SoC do kernel.
- O Android 9 e versões posteriores exigem a presença de uma partição de sobreposição de blob de árvore de dispositivos (DTBO) e a aplicação de pelo menos um DTO.
Requisitos de particionamento DTO
A maioria dos dispositivos Android anexa o blob DT ao kernel no momento da compilação e o bootloader carrega o blob do kernel. No entanto, como os blobs DT são considerados parte do kernel do sistema no chip (SoC), o Android não tem requisitos específicos sobre como criar ou armazenar blobs DT. Os dispositivos podem anexar o blob DT ao kernel ou armazenar o blob em uma partição separada; o único requisito é que o bootloader saiba como e de onde carregar o blob DT.
Para suportar DTO, os dispositivos devem ter:
- Uma partição DTBO por imagem de kernel para uma sobreposição DT específica da placa e o bootloader deve saber onde e como carregar o DTB específico do SoC. O tamanho da partição depende do número de alterações necessárias para fazer o kernel SoC – escolha um tamanho com espaço para crescer para atualizações futuras; normalmente, um tamanho de partição de 8 MB é mais que suficiente.
- Partições DTO atualizadas para dispositivos A/B . O kernel de recuperação é igual ao kernel do Android, mas a partição deve ser configurada para dispositivos A/B para que possa ser atualizada por meio de atualizações over-the-air (OTA). O tamanho da partição depende do dispositivo e do número de alterações no blob DT do kernel SoC principal.
Requisitos do bootloader DTO
Para suportar DTO, o bootloader deve:
- Saiba como e onde (considerando o slot de inicialização para dispositivos A/B) carregar o blob DT específico do SoC de uma maneira específica do fornecedor (normalmente extraído do final da imagem do kernel à medida que os blobs são anexados ao kernel).
- Saiba como e onde carregar o blob DT de sobreposição de maneira específica do fornecedor.
- Corrija o blob DT principal com a sobreposição antes de passar a árvore de dispositivos combinada para o kernel.
Para obter mais detalhes sobre como adicionar suporte para DTO no bootloader, consulte Sobreposições de árvore de dispositivos .