2009-08-24 6 views
6

Ich versuche, einen Treiber für eine eingebettete PowerPC - Platine einzurichten, und die korrekte Methode hierfür ist die Verwendung der OpenFirmware Device Tree - Datenstruktur (die .dtb - Datei, kompiliert aus einem .dts Datei). Das Erstellen eines Baums ist ziemlich einfach, aber wie bekomme ich meinen Gerätetreiber, um seinen Knoten und die darin enthaltenen Daten zu finden? Ich habe keine gute Referenz dazu gefunden, und Bücher wie "Linux Device Drivers" sind zu viel in x86-Land, um Geräteebenen, die hauptsächlich auf Power-Architecture-basierten Maschinen (arch powerpc im Linux-Kernel) basieren, zu helfen Terminologie).Übersicht/Referenzhandbuch für Open Firmware Device Trees

Antwort

4

Es scheint sehr wenig Dokumentation verfügbar zu sein, besonders auf der Seite der Treiber. Ich habe mit einem langjährigen Linux-Kernel-Entwickler gesprochen, den ich kenne, und sein Ratschlag war im Wesentlichen, den Code anderer Treiber zu betrachten.

einiger Hintergrund Lesung ich gefunden: Grant Likely presentation, Grant Likely Linux Symposium paper, a fairly good overview of the data structure

Die am weitesten verbreitete Nutzung des Open Firmware-Systems wird in dem Freescale fsl_x.c Treiber im Bogen/powerpc/Baum im Linux-Kernel, aktuellere gefunden als 2.6.16.

+1

Da diese Frage im Jahr 2009 gestellt wurde, gibt es Dokumentation in den [Linux Device Tree Bindings] (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings) Verzeichnisse. Leider hat jemand alle herausgepickt, indem er Header/Source mit ** von ** anruft. Siehe: [of.h] (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/of.h) (mit mehr in linux/of * .h) und [Treiber/von] (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/of). –