Supporto DTO

Device Tree Overlay (DTO) estende le implementazioni Flattened Device Tree (FDT) esistenti consentendo allo spazio utente di modificare i dati iniziali del devicetree nel kernel in fase di runtime caricando ulteriori FDT sovrapposti che modificano i dati originali. Android non richiede aggiornamenti di runtime dei BLOB DT dallo spazio utente, ma consiglia invece ai fornitori di aggiungere la patch Devicetree nel bootloader con l'aiuto di libfdt o libufdt .

Supporto DTO Android

Il supporto Android per i DTO varia in base alla versione di Android:

  • Android 7.x e versioni precedenti non richiedono il supporto di Devicetree e non forniscono consigli su come i fornitori passano i BLOB DT al kernel o dove li archiviano.
  • Android 8.x consiglia il supporto di Devicetree per mantenere separate le parti del kernel specifiche della scheda e quelle solo del SoC.
  • Android 9 e versioni successive richiedono la presenza di una partizione DTBO (Device Tree Blob Overlay) e l'applicazione di almeno un DTO.

Requisiti di partizionamento DTO

La maggior parte dei dispositivi Android aggiunge il BLOB DT al kernel in fase di compilazione e il bootloader carica il BLOB dal kernel. Tuttavia, poiché i BLOB DT sono considerati parte del kernel System-on-chip (SoC), Android non ha requisiti specifici su come creare o archiviare BLOB DT. I dispositivi possono aggiungere il BLOB DT al kernel o archiviare il BLOB in una partizione separata; l'unico requisito è che il bootloader sappia come e da dove caricare il BLOB DT.

Per supportare DTO, i dispositivi dovrebbero avere:

  • Una partizione DTBO per immagine del kernel per un overlay DT specifico della scheda e il bootloader deve sapere dove e come caricare il DTB specifico del SoC. La dimensione della partizione dipende dal numero di modifiche necessarie per realizzare il kernel SoC: scegli una dimensione che abbia spazio per crescere per futuri aggiornamenti; in genere, una dimensione della partizione di 8 MB è più che sufficiente.
  • Partizioni DTO aggiornate per i dispositivi A/B . Il kernel di ripristino è lo stesso del kernel Android, ma la partizione deve essere configurata per i dispositivi A/B in modo che possa essere aggiornata tramite aggiornamenti over-the-air (OTA). La dimensione della partizione dipende dal dispositivo e dal numero di modifiche apportate al BLOB DT del kernel SoC principale.

Requisiti del bootloader DTO

Per supportare DTO, il bootloader dovrebbe:

  • Sapere come e dove (considerando lo slot di avvio per i dispositivi A/B) caricare il BLOB DT specifico del SoC in un modo specifico del fornitore (in genere estratto dalla fine dell'immagine del kernel quando i BLOB vengono aggiunti al kernel).
  • Sapere come e dove caricare il BLOB DT in sovrapposizione in un modo specifico del fornitore.
  • Applicare la patch al BLOB DT principale con l'overlay prima di passare l'albero dei dispositivi combinato al kernel.

Per ulteriori dettagli sull'aggiunta del supporto per DTO nel bootloader, consulta Sovrapposizioni della struttura dei dispositivi .