Wie Programm Linux .dts device tree Dateien?
Werde ich starten ein Linux auf meinem Entwicklungs-board, und brauche ich eine dts-Datei (device-tree-Datei) zu beschreiben, die ganze hardware. Aber ich weiß nur sehr wenig über die syntax dieser Datei ist nicht genug, um Linux richtig auf dem board.
Was ich jetzt weiß, sind nur, wie, um zu beschreiben, eine Einheit ist die interrupt-Nummer, Frequenz, Adresse, Eltern-Einheit und Ihrer kompatiblen Treiber geben (wie unten beschrieben):
ps7_scuwdt_0: ps7-scuwdt@f8f00620 {
compatible = "xlnx,ps7-scuwdt-1.00.a";
device_type = "watchdog";
interrupt-parent = <&ps7_scugic_0>;
interrupts = < 1 14 769 >;
reg = < 0xf8f00620 0xe0 >;
} ;
Andere erweiterte Nutzung oder Grammatik ist ungewohnt für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf die dts des Vorstandes, welche am ehesten Ihrer dev-board. Verwenden Sie diese als Referenz und änderungen an den dts-nach die Unterschiede zwischen dem Referenz-board und Ihr dev-board.
Auch Kasse die folgenden Schritte aus :
- Device-tree-Dokumentations-Projekt bei eLinux (hat eine große Sammlung von links zu Lesen beginnen).
- - Reihe von Artikeln über die Grundlagen der Geräte-Baum.
- Exemplarische Vorgehensweise der Migration zu-Gerät-Baum.
Minimal
reg
+interrupt
Beispiel mit QEMU virtual deviceUnser Beispiel fügen Sie den folgenden Knoten im Geräte-Baum auf der
versatilepb
Gerät Baum, der von QEMU wird die Nutzung aufgrund-M versatilepb
:Dann mit einem Linux-kernel-Modul zu interagieren mit dem Gerät, testen wir den folgenden DTS-Funktionen:
Diese sind die wichtigsten Komponenten der Beispiel:
.dts -
- patch auf Linux-forkreg
undinterrupt
match zahlen, die hart codiert in der QEMU vielseitige Maschine (die stellt das SoC)compatible
entspricht derplatform_driver.name
im kernel-Modul, und teilt dem kernel mit, welches Modul verarbeitet dieses Gerätlkmc-asdf = <0x12345678>;
, die mitof_property_read_u32
-dtb
argument-M versatilepb
Gerät die Bäume haben noch viele weitere features, die wir noch nicht abgedeckt haben, aber dieses Beispiel sollte Ihnen den Einstieg und erlaubt Sie leicht zu spielen, um mit jedem neuen features, die kommen.
Weitere Ressourcen:
dtc
für rein syntaxical Fragen. E. g., es zeigt, wie die Knoten werden einfach zusammengeführt durch Pfad: https://unix.stackexchange.com/a/375923/32558Nehmen wir ein Beispiel, und ich werde erklären, dass jeder von Ihnen, wie unten
Erforderliche Eigenschaften:
- kompatibel : Sollte "fsl,-auart". Die unterstützten SoCs gehören
imx23 und imx28.
- reg : Adresse und Länge des Registers für das Gerät eingestellt
- Unterbrechungen : Sollte die auart interrupt-Nummern
- dmas: DMA-Bezeichner, bestehend aus einem phandle, um DMA-controller-Knoten
und AUART DMA-Kanal-ID.
- dma-Namen: "rx" RX-Kanal "tx" für den TX-Kanal.
Hinweis: Jeder auart-Anschluss haben, um einen alias korrekt nummeriert "Aliase"
Knoten.
Weitere Voraus-Eigenschaften, gehen Sie bitte zu diesem link, es ist sehr nützlich
Geräte-Baum Erläuterung
Hoffe, es hilft!
Ergänzend zu den anderen Antworten:
Beachten Sie, dass es auch einen Abschnitt für devicetrees in die offiziellen kernel-Quellen unter
root/Documentation/devicetree
(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree?h=v5.2-rc5).