====== Device Tree erstellen ======
* [[http://devicetree.org/Device_Tree_Usage|Detaillierte Beschreibung ]]
* [[https://wiki.freebsd.org/FlattenedDeviceTree|Weitere Beschreibung ]]
Ursprünglich beinhaltete das Kernelimage auch die Beschreibung der vorhandenen Hardware. Das ist unflexibel und deshalb wurde diese Beschreibung in eine externe Datei gepackt. Das hat zudem den grossen Vorteil, dass auch [[software:linux:u-boot|U-Boot]] die gleiche Information über die Hardware nutzen kann.
Das Vorgehen ist wie folgt:
- Die Hardware wird in **Device Tree Source** Dateien beschrieben (dts-Files).
- Diese Source-Files können weitere Source-Files includieren (dtsi-Files). Solche Dateien beschreiben z.B. Eigenschaften, die für mehrere Boards gültig sind.
- Der **Device Tree Compiler** (dtc) übersetzt die Source-Files in den **Device Tree Blob** (dtb-File).
- Beim Aufstarten erhält der Kernel eine Referenz auf diesen Blob und parst ihn. Einzelne Kernel Treiber holen sich so ihre Konfiguration, z.B. Adressbereiche oder Interrupteinstellungen.
Die Terminologie ist etwas verwirrend. Man spricht vom //Device Tree//. Der //Device Tree Blob// heisst auch //Flat Device Tree//. Das Ganze kommt aus der IBM Open Firmware Spezifikation, und deshalb spricht man oft auch vom //OF-Tree//.
===== Installation =====
Installieren mit: # apt-get install device-tree-compiler
===== Übersetzung =====
Quellenfile übersetzen, wobei das Quellen- und das Zielformat angegeben wird:
# dtc -I dts -O dtb -S 0x10000 -o myDest.dtb mySource.dts
Die Option //-S// erweitert den Blob mit Padding auf die angegebene Grösse.
===== Testen =====
Wenn der Kernel nach dem Booten den Device Tree erfolgreich geparst hat, ist der Inhalt unter ''/proc/device-tree'' vollständig abrufbar. Achtung: Zahlen sind binär abgelegt.