Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: mercury, Schalentier


 Thema: Brauche Hilfe beim Verständnis von GPIO-Interrupt-Handling
erste ungelesene Seite | letzter Beitrag 
Flitzpiepe42

AUP Flitzpiepe42 07.10.2019
Frage
Hallo,

ich spiele gerade mit ein paar VoCores, auf denen openWRT läuft. Da ich noch auf Displays warte, hab ich begonnen einen Inkrementalgeber+Button anzuschließen. Um beides auswerten zu können, möchte ich zwei GPIO-Interrupts verwenden.
Da ich keinen Kerneltreiber schreiben will/kann, nutze ich die GPIOs im Userspace. Die verwendeten GPIOs sind im Userspace verfügbar.
Ich habe das auch zum Laufen gebracht, allerdings mit ner Menge Direktregisterzugriffe am Linux vorbei und ich brauch eure Hilfe um zu verstehen, wie es eigentlich gehen soll.

Soweit konnte ich zwei Probleme ausmachen:

 
Code:
1. echo falling > /sys/class/gpio/gpioA/edge
2. echo falling > /sys/class/gpio/gpioB/edge


Aktiviert ist im Controller nur gpioB - immer der zuletzt geschriebene. Aus meiner Sicht wird hier nicht bitweise sondern byteweise in das Register geschrieben - wer genau macht das? Ist da ein Treiber für zuständig?

Zweites Problem:
Wenn ich per Direktzugriff beide Interrupts aktiviere, funktioniert beim ersten Zugriff auch beides: Button oder Inkrementalgeber. Danach jedoch geht nur der Interrupt, der beim ersten Mal der Auslöser war. Wenn ich im Register nachschaue, sehe ich dass $Linuxkomponente das Interrupt-Enable-Register neugeschrieben hat - aber wieder nur mit einem Interrupt enabled. Warum? Wer macht diesen Zugriff?

Mir fehlt leider das Wissen über Linux um rauszubekommen, welche Komponente hier nicht wie erwartet funktioniert - ich hoffe ihr könnt mir helfen
16.12.2014 22:52:08  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Flitzpiepe42

AUP Flitzpiepe42 07.10.2019
Mein Stand:
Dem Devicetree-File nach ist mein GPIO-Interface ein RT5350, kompatibel zu RT2880.

Soweit ich verstehe nutzt Linux die Angaben im Devicetree um den richtigen Treiber zu ermitteln. Ich weiß aber nicht weiter, wie ich diesen Treiber ermitteln kann. Kann mir hier jemand sagen ob zumindest der Weg der richtige ist?
18.12.2014 9:17:18  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: Brauche Hilfe beim Verständnis von GPIO-Interrupt-Handling


mods.de - Forum » Linux » 

Hop to:  

Thread-Tags:
| tech | impressum