Export von FPGA-Module-Adressen -> Linux

Gast #4969336
hi,

ich bin gerade an meinem ersten Projekt mit einem Zynq und Linux. In der 
PL habe ich mehrere eigene Module, welche ich über den 
uio-Kernel-Treiber auch erreiche. Soweit funktioniert alles.

Jedoch habe ich das Problem, dass ich nicht weiß, welches uio-device zu 
welches Modul gehört. Ich kann zwar über das sys-Verzeichnis die 
einzelnen Adressen der uio-devices abfragen, aber in der SW habe ich 
eigentliche keine Informationen zu den Modul-Adressen. Es wird keine 
Header-Datei ala "xparameters.h" erstellt.

Der Informationsaustausch zwischen HW und Linux soll ja über den 
Devicetree erfolgen, was ich auch ausgiebig nutze, jedoch geht der 
eindeutige Instancename verloren. Am Ende habe ich nur z.B. 3 Uarts an 
Adressen A, B und C.

Weiß jemand, wie ich die Zuweisung der Adressen (automatisch) 
exportieren kann, so dass ich diese nicht manuell in der SW pflegen 
muss?

grüße
#4969344
Im Device-Tree trägst du nicht nur deine Devices ein, sondern gibst 
denen auch Namen. Beispiel:
1
/ {
2
  mydevice@40000000 {
3
    compatible = "generic-uio";
4
    reg = <0x40000000 0x4000000>;
5
    interrupts = <0 29 1>;
6
    interrupt-parent = <0x3>;
7
  };
8
};

Für jedes Gerät wird ein /dev/uioX erzeugt, sowie eine Struktur unter 
/sys. In /sys/class/uio/uioX/name steht dann der im Devicetree vergebene 
Name drin. Ob es einen besseren Weg gibt, als über alle diese 
Verzeichnisse zu iterieren, weiß ich nicht - ich habe keinen gefunden.
Gast #4969415
Danke für die Antwort,

darüber würde es gehen, den Weg habe ich auch schon gefunden, jedoch 
gibt es da 2 Probleme:
a) dieser sog. Node-Name soll gemäß Device-Tree Erfinder generisch sein, 
also den Typ, nicht die Instance angeben, zB. serial@A anstelle 
serial_0@A und hat wohl "nur" 31 Zeichen. Dass würde ich ignorieren, 
wenn nicht noch b) wäre.

b) Der Device-Tree wird aus der FPGA handoff-Datei vom Xilinx SDK 
automatisch erstellt und das SDK verwendet die Instance Names (wegen 
Hierarchie teilweise mehr als 31 Zeichen) lediglich als Labels, welche 
im binär Blob nicht mehr vorhanden sind. Ich habe keine Möglichkeit 
gefunden, Node-Name und Label zu tauschen, ohne das SDK zu patchen.

grüße

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.