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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.