Implementazione di DTO

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:

  1. Compila il DT .dts principale nel file .dtb .
  2. Flash file .dtb in una partizione accessibile al runtime del bootloader (dettagliata di seguito).

Per costruire l'overlay DT:

  1. 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.
  2. 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
Figura 1. Mettere .dtbo in una partizione univoca, ad esempio la partizione dtbo .
Partizione ODM
Figura 2. Metti .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
Figura 3. Partizione DTBO A/B, esempio 1.
Esempio 2
Figura 4. Partizione DTBO A/B, esempio 2.

In esecuzione nel bootloader

Correre:

Figura 5. Tipica implementazione di runtime per la sovrapposizione dell'albero dei dispositivi nel bootloader.
  1. Carica .dtb dalla memoria alla memoria.
  2. Carica .dtbo dalla memoria alla memoria.
  3. Sovrapponi .dtb con .dtbo per essere un DT unito.
  4. 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 partizione odm ).

Per i dettagli, fare riferimento a Avvio verificato .