Molti fornitori di SoC e ODM supportano l'utilizzo di più device Tree (DT) su un dispositivo, abilitare un'immagine per alimentare più SKU o configurazioni. In questi casi, Il bootloader identifica l'hardware e carica il DT corrispondente in fase di runtime:
Figura 1. Overlay ad albero dei dispositivi (DTO) multipli nel bootloader.
Nota: l'utilizzo di più DT non è obbligatorio.
Configura
Per aggiungere il supporto di più DT al modello DT, configura un elenco di DT principali e un altro elenco di DT overlay.
Figura 2. Implementazione di DTO in runtime per più DT.
Il bootloader dovrebbe essere in grado di:
- Leggi l'ID SoC e seleziona il DT principale corrispondente.
- Leggi l'ID bacheca e seleziona l'insieme di DT overlay di conseguenza.
Deve essere selezionato un solo DT principale da utilizzare durante il runtime. Più DT overlay possono essere selezionati, ma devono essere compatibili con il DT principale scelto. Utilizzo più overlay può aiutare a evitare di memorizzare un overlay per scheda all'interno del DTBO e abilitare il bootloader per determinare il sottoinsieme degli overlay richiesti in base all'ID scheda (o possibilmente tramite un'analisi delle periferiche). Per Ad esempio, la scheda A potrebbe richiedere l'aggiunta di dispositivi dagli overlay 1, 3 e 5, mentre La scheda B potrebbe richiedere l'aggiunta di dispositivi dagli overlay 1, 4 e 5.
Partizione
Per eseguire il partizionamento, determina una posizione attendibile e accessibile dal runtime del bootloader
nella memoria flash per memorizzare i DTB e i DTBO (il bootloader deve essere in grado
questi file nel processo di corrispondenza). Tieni presente che i DTB e i DTBO non
nella stessa partizione. Se i tuoi DTB/DTBO sono nel
Partizione dtb
/dtbo
, utilizza la struttura e l'intestazione della tabella
dettagliato in DTB e DTBO
partizione standard.
Esegui in bootloader
Per l'esecuzione:
- Identifica il SoC e carica il file .dtb corrispondente spazio di archiviazione in memoria.
- Identifica la lavagna e carica il corrispondente
.dtbo
di spazio di archiviazione in memoria. - Sovrapponi
.dtb
con.dtbo
da unire DT. - Avvia il kernel in base all'indirizzo di memoria del DT unito.