Il formato DTS (Device Tree source) è una rappresentazione testuale di una struttura ad albero dei dispositivi (DT). Il DTC (Device Tree compiler) elabora questo formato in un DT binario, che è il formato previsto dal kernel Linux.
Utilizzare i riferimenti
Il DTC
(Compilatore Albero dei dispositivi + Patch di overlay) descrive il formato DTS in
dtc-format.txt
e
manual.txt.
Il formato e le regole dei DTO sono descritti in
dt-object-internal.txt.
Questi documenti descrivono come aggiornare il DT principale utilizzando
fragment@x
e sintassi __overlay__
nel DT overlay. Per
esempio:
/ {
fragment@0 {
target = <&some_node>;
__overlay__ {
some_prop = "okay";
...
};
};
};
Tuttavia, Google consiglia vivamente di non utilizzare
fragment@x
e la sintassi __overlay__
, ma utilizza invece
la sintassi di riferimento. Ad esempio:
&some_node {
some_prop = "okay";
...
};
La sintassi di riferimento viene compilata da dtc
nello stesso oggetto dell'elemento
in alto utilizzando la sintassi __overlay__
. Questa sintassi non ti obbliga a
numerare i frammenti, in modo da poter leggere e scrivere facilmente DTS overlay. Se le tue
dtc
non supporta questo zucchero sintattico, usa
DTC
in AOSP.
Utilizzare le etichette
Per consentire riferimenti non definiti a nodi non presenti al momento della compilazione,
Il file DT .dts
dell'overlay deve avere un tag /plugin/
intestazione. Ad esempio:
/dts-v1/;
/plugin/;
Da qui è possibile scegliere come target i nodi da sovrapporre utilizzando un riferimento, che viene
un percorso nodo assoluto preceduto dalla e commerciale (&). Ad esempio, per
node@0
nel DT principale:
Definisci le etichette nel DT principale ... | ... e poi utilizza le etichette. |
---|---|
[my_main_dt.dts] |
[my_overlay_dt.dts] |
Ignora
Se la proprietà del target di riferimento esiste nel DT principale, viene ignorata dopo DTO; altrimenti viene accodato. Ad esempio:
main.dts | overlay.dts | Risultato unito |
---|---|---|
[my_main_dt.dts] |
[my_overlay_dt.dts] |
/dts-v1/; |
Aggiungi
Se la proprietà del target di riferimento non esiste nel DT principale, dopo DTO. Ad esempio:
main.dts | overlay.dts | Risultato unito |
---|---|---|
[my_main_dt.dts] |
[my_overlay_dt.dts] |
/dts-v1/; |
Nodi secondari
Esempi di sintassi del nodo figlio:
main.dts | overlay.dts | Risultato unito |
---|---|---|
[my_main_dt.dts] |
[my_overlay_dt.dts] |
/dts-v1/; |