Overlay della struttura del dispositivo

Un albero dei dispositivi (DT) è una struttura di dati di nodi e proprietà denominati 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 Android. I fornitori di hardware forniscono i propri file sorgente dell'albero dei dispositivi (DTS), che vengono compilati nel file blob dell'albero dei dispositivi (DTB) utilizzando il compilatore dell'albero dei dispositivi. Questi file vengono poi utilizzati dal bootloader. Il file DTB contiene un albero dei dispositivi compresso in formato binario.

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

Aggiornamenti nella release di Android 9

In Android 9, il bootloader non deve modificare le proprietà definite nei DTO prima di passare il DTB unificato al kernel.

Caricare un DT

Il caricamento di un DT 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 e caricare il DTB:

    1a. Utilizza DTC (dtc) per compilare DTS (.dts) in un DTB (.dtb). Il DTB è formattato come un DT appiattito. 1b. Carica il file .dtb in una posizione accessibile in fase di esecuzione del bootloader (descritto di seguito).

  2. Per partizionare, determina una posizione attendibile e accessibile in fase di runtime del bootloader nella memoria flash in cui inserire .dtb. Esempi di località:

    Figura 2. Inserisci .dtb in una partizione di avvio aggiungendolo a image.gz e passandolo come"kernel" a mkbootimg.

    Figura 3. Inserisci .dtb in una partizione univoca
    (ad esempio, la partizione dtb).

  3. Per caricare il DTB e avviare il kernel:

    • Carica .dtb dallo spazio di archiviazione nella memoria.
    • Avvia il kernel utilizzando l'indirizzo di memoria del DT caricato.

Passaggi successivi

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 di questa sezione descrivono come implementare il supporto del bootloader, come compilare, verificare e ottimizzare il DTO e come utilizzare più DT. Puoi anche ottenere dettagli sulla sintassi DTO e sulla formattazione delle partizioni DTO e DTBO.