Forum: FPGA, VHDL & Co. Export von FPGA-Module-Adressen -> Linux


von daniel__m (Gast)


Lesenswert?

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

von S. R. (svenska)


Lesenswert?

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.

von daniel__m (Gast)


Lesenswert?

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

von S. R. (svenska)


Lesenswert?

Da kann ich dir nicht helfen.

Ich hab meinen Device-Tree-Eintrag als DTSI (also Include) selbst gebaut 
und vermeide das SDK.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.