Overlay dell'albero dei dispositivi

Un albero dei dispositivi (DT) è una struttura dati di nodi denominati e proprietà che descrivono l'hardware non rilevabile. I kernel, come il kernel Linux utilizzato in Android, utilizzano i 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 Device Tree Compiler . Questi file vengono quindi utilizzati dal bootloader. Il file DTB contiene un albero di dispositivi appiattito in formato binario.

Un Device Tree Overlay (DTO) consente di sovrapporre un DTB (Device Tree Blob) centrale 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.

Caricamento di un albero dei dispositivi

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

Figura 1. Implementazione tipica per il caricamento dell'albero dei dispositivi nel bootloader.
  1. Per creare ed eseguire il flashing del blob della struttura ad albero del dispositivo:

    1a. Usare 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 attendibile e accessibile al runtime del bootloader nella memoria flash in cui inserire .dtb . Posizioni di esempio:

    Partizione di avvio
    Figura 2. Inserisci .dtb nella partizione di avvio aggiungendolo a image.gz e passando come " kernel " a mkbootimg .
    Partizione Unica
    Figura 3. Inserire .dtb in una partizione univoca (ad es. partizione dtb ).

  3. Per caricare il blob dell'albero dei dispositivi e avviare il kernel:

    3a. Carica .dtb dalla memoria alla memoria. 3b. Avvia il kernel usando 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 proprio DTO e come utilizzare più DT . È inoltre possibile ottenere dettagli sulla sintassi DTO e sulla formattazione della partizione DTO/DTBO richiesta.