L'implementazione di DTO implica la divisione dell'albero dei dispositivi, la creazione, il partizionamento e l'esecuzione. Dopo aver ottenuto un'implementazione funzionante, è inoltre necessario mantenere la compatibilità tra i due DT e determinare una strategia per garantire la sicurezza di ciascuna partizione DT.
Dividendo il DT
Inizia dividendo l'albero dei dispositivi in due (2) parti:
- DT principale . La parte solo SoC e le configurazioni predefinite, fornite dal fornitore del SoC.
- Sovrapposizione DT . Le configurazioni specifiche del dispositivo, fornite da ODM/OEM.
Dopo aver diviso gli alberi dei dispositivi, è necessario garantire la compatibilità tra DT principale e DT overlay in modo che l'unione di DT principale e DT overlay risulti in un DT completo per il dispositivo. Per i dettagli sul formato e le regole DTO, vedere Sintassi DTO . Per i dettagli su più alberi di dispositivi, vedere DT multipli .
Costruire DT principali e sovrapposti
Per costruire il DT principale:
- Compila il DT
.dts
principale nel file.dtb
. - Flash file
.dtb
in una partizione accessibile al runtime del bootloader (dettagliata di seguito).
Per costruire l'overlay DT:
- Compila overlay DT
.dts
nel file.dtbo
. Sebbene questo formato di file sia lo stesso del file.dtb
formattato come un albero di dispositivi appiattito, la diversa estensione del file lo distingue dal DT principale. - File
.dtbo
flash in una partizione accessibile al runtime del bootloader (come dettagliato di seguito).
Per informazioni dettagliate sulla compilazione con DTC e sulla verifica dei risultati DTO sull'host, vedere Compilazione e verifica .
DT di partizionamento
Determinare una posizione attendibile e accessibile al runtime del bootloader nella memoria flash in cui inserire .dtb
e .dtbo
.
Posizioni di esempio per il DT principale:
- Parte della partizione di avvio, aggiunta al kernel (
image.gz
). - Separare i BLOB DT (
.dtb
) nella partizione dedicata (dtb
).
Posizioni di esempio per l'overlay DT:
Partizione Unica |
---|

.dtbo
in una partizione univoca, ad esempio la partizione dtbo
. Partizione ODM |
---|

.dtbo
nella partizione odm
(fai questo solo se il tuo bootloader ha la capacità di caricare i dati dal filesystem della partizione odm
).Nota: le dimensioni della partizione DT overlay dipendono dal dispositivo e dalla quantità di modifiche necessarie sopra il BLOB DT principale. In genere, 8 MB sono più che sufficienti e consentono di crescere in futuro, se necessario.
Per i dispositivi che supportano gli aggiornamenti continui (A/B) , A/B il DT principale e le partizioni DT sovrapposte:
Esempio 1 |
---|

Esempio 2 |
---|

In esecuzione nel bootloader
Correre:

- Carica
.dtb
dalla memoria alla memoria. - Carica
.dtbo
dalla memoria alla memoria. - Sovrapponi
.dtb
con.dtbo
per essere un DT unito. - Avvia il kernel dato l'indirizzo di memoria del DT unito.
Mantenere la compatibilità
Il DTB principale (dal fornitore SoC) viene trattato come una superficie API per i DTBO. Dopo aver separato l'albero dei dispositivi in una parte comune SoC e una parte specifica del dispositivo, in futuro è necessario mantenere le due parti reciprocamente compatibili, tra cui:
- Definizione DT nel DT principale (es. nodi, proprietà, etichette) . Qualsiasi modifica della definizione nel DT principale potrebbe attivare modifiche nel DT sovrapposto. Ad esempio, per correggere il nome di un nodo nel DT principale, definire un'etichetta "alias" che corrisponda al nome del nodo originale (per evitare la modifica del DT di sovrapposizione).
- Sovrapporre la posizione dell'archivio DT (ad es. nome della partizione, formato dell'archivio) .
Garantire la sicurezza
Il bootloader deve garantire che DTB/DTBO sia sicuro, non modificato e non danneggiato. È possibile utilizzare qualsiasi soluzione per proteggere DTB/DTBO, ad esempio, la firma dell'immagine di avvio in VBoot 1.0 o il footer HASH AVB (VBoot 2.0).
- Se DTB/DTBO si trova in una partizione univoca, è possibile aggiungere tale partizione alla catena di attendibilità di AVB. La catena di fiducia inizia da una radice di fiducia protetta dall'hardware e va al bootloader, che verifica l'integrità e l'autenticità della partizione DTB/DTBO.
- Se DTB/DTBO si trova in una partizione esistente (come la partizione
odm
), tale partizione dovrebbe trovarsi nella catena di attendibilità di AVB. (La partizione DTBO potrebbe condividere una chiave pubblica con la partizioneodm
).
Per i dettagli, fare riferimento a Avvio verificato .