Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Implementazione di DTO

L'implementazione di DTO implica la divisione della struttura ad 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.

Dividere 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 SoC.
  • Overlay DT . Le configurazioni specifiche del dispositivo, fornite da ODM / OEM.

Dopo aver diviso le strutture ad albero 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 .

Creazione di DT principali e di sovrapposizione

Per costruire il DT principale:

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

Per creare l'overlay DT:

  1. Compilare l'overlay DT .dts nel file .dtbo . Sebbene questo formato di file sia lo stesso del file .dtb formattato come un albero dei dispositivi appiattito, la diversa estensione del file lo distingue dal DT principale.
  2. .dtbo flash del file .dtbo in una partizione accessibile dal runtime del bootloader (come descritto di seguito).

Per dettagli sulla compilazione con DTC e la verifica dei risultati DTO sull'host, vedere Compilazione e verifica .

Partizionamento di DT

Determina una posizione affidabile e accessibile dal 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 .dtb DT ( .dtb ) in una partizione dedicata ( dtb ).

Posizioni di esempio per l'overlay DT:

Partizione unica
Figura 1. Mettere .dtbo in una partizione univoca, ad esempio partizione dtbo .
Partizione ODM
Figura 2. Mettere .dtbo nella partizione odm (farlo solo se il bootloader ha la capacità di caricare i dati dal filesystem della partizione odm ).

Nota: la dimensione della partizione DT overlay dipende dal dispositivo e dalla quantità di modifiche necessarie sopra il BLOB DT principale. In genere, 8 MB sono più che sufficienti e consentono di aumentare lo spazio in futuro, se necessario.

Per i dispositivi che supportano aggiornamenti senza interruzioni (A / B) , A / B le partizioni DT principali e overlay DT:

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 del runtime per la sovrapposizione dell'albero dei dispositivi nel bootloader.
  1. Carica .dtb dalla memoria nella memoria.
  2. Carica .dtbo dalla memoria nella 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 del SoC) viene trattato come una superficie API per i DTBO. Dopo aver separato la struttura ad albero dei dispositivi in ​​una parte SoC comune e una parte specifica del dispositivo, è necessario mantenere le due parti reciprocamente compatibili in futuro, tra cui:

  • Definizione di DT nella DT principale (es. Nodi, proprietà, etichette) . Qualsiasi modifica alla definizione nel DT principale potrebbe innescare modifiche nel DT overlay. Ad esempio, per correggere il nome di un nodo nella DT principale, definire un'etichetta "alias" che associ il nome del nodo originale (per evitare la modifica della DT sovrapposta).
  • Posizione dell'archivio DT in sovrimpressione (ad esempio nome della partizione, formato dell'archivio) .

Garantire la sicurezza

Bootloader deve garantire che il DTB / DTBO sia sicuro, non modificato e non danneggiato. È possibile utilizzare qualsiasi soluzione per proteggere DTB / DTBO, ad esempio, firma dell'immagine di avvio in VBoot 1.0 o AVB HASH footer (VBoot 2.0).

  • Se DTB / DTBO si trova in una partizione univoca, è possibile aggiungere quella partizione alla catena di fiducia di AVB. La catena di fiducia inizia da una radice di fiducia protetta dall'hardware e arriva 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 ), quella partizione dovrebbe essere nella catena di fiducia di AVB. (La partizione DTBO potrebbe condividere una chiave pubblica con la partizione odm ).

Per i dettagli, fare riferimento a Avvio verificato .