Wie programmiert man Linux .dts Gerätebaumdateien?

8

Ich werde ein Linux auf meinem Entwicklungsboard starten, und ich brauche eine dts-Datei (Gerätebaumdatei), um die gesamte Hardware zu beschreiben. Aber ich weiß nur sehr wenig über die Syntax dieser Datei, die nicht ausreicht, um Linux auf der Platine richtig zu betreiben.

Was ich jetzt weiß, ist nur, wie man die Interrupt-Nummer, die Frequenz, die Adresse, die Eltern-Einheit und den kompatiblen Treiber-Typ (wie unten beschrieben) einer Einheit beschreibt:

%Vor%

Andere fortgeschrittene Verwendung oder Grammatik ist mir nicht vertraut.

    
Ezio 05.07.2013, 11:54
quelle

3 Antworten

12

Sieh dir die Punkte des Boards an, die deinem Dev-Board am ähnlichsten sind. Verwenden Sie diese als Referenz und nehmen Sie Änderungen an den dts gemäß den Unterschieden zwischen der Referenzplatine und Ihrem Dev-Board vor.

Überprüfen Sie auch Folgendes:
 - Device-Baum Dokumentationsprojekt bei eLinux (hat eine umfangreiche Sammlung von Links zum Lesen). < br>  - Artikelserie zu den Grundlagen des Gerätebaums.
 - Walkthrough der Migration in den Gerätebaum.

    
TheCodeArtist 22.07.2013, 08:44
quelle
2

Nehmen wir ein Beispiel und ich erkläre jeden von ihnen wie folgt

%Vor%

Erforderliche Eigenschaften:
- kompatibel: Sollte "fsl, -auart" sein. Die unterstützten SoCs beinhalten imx23 und imx28.
- reg: Adresse und Länge des für das Gerät eingestellten Registers - Interrupts: Sollte die Auart Interrupt-Nummern enthalten - dmas: DMA-Spezifizierer, bestehend aus einem Pha- dle-zu-DMA-Controller-Knoten und AUART DMA-Kanal-ID.
- dma-names: "rx" für den RX-Kanal, "tx" für den TX-Kanal.

Hinweis: Jeder Auart Port sollte einen Alias ​​haben, der korrekt in "Aliase" nummeriert ist Knoten.
Für weitere Eigenschaften, gehen Sie bitte zu diesem Link, es ist sehr nützlich, Erklärung des Gerätebaums

Ich hoffe, es hilft!

    
PAL 29.06.2016 14:22
quelle
1

Minimales reg + interrupt Beispiel mit einem virtuellen QEMU-Gerät

In unserem Beispiel wird der Gerätebaum versatilepb , den QEMU aufgrund von -M versatilepb verwenden wird, folgender Gerätebaumknoten hinzugefügt:

%Vor%

Dann testen wir die folgenden DTS-Funktionen, indem wir ein Linux-Kernel-Modul verwenden, um mit dem Gerät zu interagieren:

  • registriert Adressen
  • IRQs
  • liest benutzerdefinierte Eigenschaften vom Treiber

Dies sind die Hauptkomponenten des Beispiels:

  • Linux vielseitiges .dts Patch auf Linux fork
    • reg und interrupt stimmen mit Zahlen überein, die in der vielseitigen QEMU-Maschine (die das SoC darstellt) fest codiert sind.
    • compatible stimmt mit dem platform_driver.name im Kernel-Modul überein und informiert den Kernel, welches Modul dieses Gerät behandelt
    • wir übergeben auch eine benutzerdefinierte Eigenschaft an den Treiber: lkmc-asdf = <0x12345678>; , die mit of_property_read_u32 gelesen wird
    • Der Gerätebaum wird mit dem -dtb -Argument
    • an die Firmware von QEMU übergeben
  • QEMU-Gabel:
  • Kernel-Modul Schreibt in den Speicher der Sonde, um die Dinge auszuprobieren, das erzeugt auch einen IRQ.

Gerätebäume haben viele weitere Funktionen, die wir nicht behandelt haben, aber dieses Beispiel sollte Ihnen den Einstieg erleichtern und es Ihnen leicht machen, mit neuen Funktionen, die auftauchen, herumzuspielen.

Weitere Ressourcen:

quelle

Tags und Links