Overlay dell'albero dei dispositivi

Un albero dei dispositivi (DT) è una struttura dati di nodi denominati e proprietà che descrivono hardware non rilevabile. I kernel, come il kernel Linux utilizzato in Android, utilizzano DT per supportare un'ampia gamma di configurazioni hardware utilizzate dai dispositivi basati su Android. I fornitori di hardware forniscono i propri file Device Tree Source (DTS) , che vengono compilati nel file Device Tree Blob (DTB) utilizzando il Device Tree Compiler . Questi file vengono quindi utilizzati dal bootloader. Il file DTB contiene un albero di dispositivi appiattito in formato binario.

Una sovrapposizione dell'albero dei dispositivi (DTO) consente di sovrapporre un BLOB dell'albero dei dispositivi centrale (DTB) all'albero dei dispositivi. Un bootloader che utilizza DTO può mantenere il DT system-on-chip (SoC) e sovrapporre dinamicamente un DT specifico del dispositivo, aggiungendo nodi all'albero e apportando modifiche alle proprietà nell'albero esistente.

DTBO Blob dell'albero dei dispositivi per la sovrapposizione

Aggiornamenti nella versione Android 9

In Android 9, il bootloader non deve modificare le proprietà definite negli overlay dell'albero dei dispositivi prima di passare il BLOB dell'albero dei dispositivi unificato al kernel.

Carica un albero di dispositivi

Il caricamento di un albero di dispositivi nel bootloader implica la creazione, il partizionamento e l'esecuzione.

Figura 1. Implementazione tipica per caricare l'albero dei dispositivi nel bootloader.
  1. Per creare e eseguire il flashing del BLOB dell'albero del dispositivo:

    1a. Utilizzare il compilatore dell'albero dei dispositivi ( dtc >) per compilare l'origine dell'albero dei dispositivi ( .dts ) in un BLOB dell'albero dei dispositivi ( .dtb ). Il BLOB dell'albero dei dispositivi è formattato come albero dei dispositivi appiattito. 1b. Eseguire il flashing del file .dtb in una posizione accessibile al runtime del bootloader (dettagliata di seguito).

  2. Per partizionare, determinare una posizione affidabile e accessibile in fase di esecuzione del bootloader nella memoria flash in cui inserire .dtb . Posizioni di esempio:

    Partizione di avvio
    Figura 2. Inserisci .dtb nella partizione di avvio aggiungendo image.gz e passando come " kernel " a mkbootimg .
    Partizione unica
    Figura 3. Inserisci .dtb in una partizione univoca (ad esempio partizione dtb ).
  3. Per caricare il blob dell'albero del dispositivo e avviare il kernel:

    • Carica .dtb dall'archivio in memoria.
    • Avviare il kernel utilizzando l'indirizzo di memoria del DT caricato.

Qual è il prossimo?

Questa pagina descrive in dettaglio un tipico flusso di lavoro del bootloader per il caricamento di un DT e fornisce un elenco di termini DT comuni. Altre pagine in questa sezione descrivono come implementare il supporto del bootloader , come compilare , verificare e ottimizzare il DTO e come utilizzare più DT . È inoltre possibile ottenere dettagli sulla sintassi DTO e sulla formattazione della partizione DTO/DTBO richiesta.