Nachdem ich mich auch mit diesem Problem beschäftigt habe und ich aus einem englischsprachigen Forum die Lösung bekommen habe möchte ich diese nun hier einmal verständlich in Deutsch beschreiben…

Da die Belegung der GPIO’s im Mainline Kernel anders als beim Legacy Kernel ist benötigst du das GPIO Schema des Boards, dieses erhälst du meistens beim Entwickler des Boards.

In meinem Fall handelt es sich hier um einen BananaPro, bei anderen Boards funktioniert das natürlich auch…
Für die Vergrößerung auf das jeweilige Bild klicken


Und los geht’s…

Wie man auf dem Bild des BananaPro sieht, ist der GPIO Header CON6, dass bedeutet das jetzt alles was in der Tabelle mit CON6 anfängt die GPIO’s betrifft!

Um herauszufinden wie man nun die Pin Nummer berechnet muss man als erstes wissen wo welcher Pin ist…
Pin1 ist oben links, rechts daneben ist Pin2 und Pin3 wäre unter Pin1! Ganz einfach oder? 🙂

Die Berechnung des Pins

Als Beispiel nehmen wir den 11. Pin (CON6-11), in der 3. Zeile steht PI19, nun wird der Pin berechnet… (zum besseren Verständnis wurde alles farblich markiert)
(Position des Buchstaben – 1) * 32 + Pin Nummer
Da „I“ der 9. Buchstabe im Alphabet ist setzen wir dort die 9 ein und subtrahieren 1 davon ab, dass rechnen wir dann * 32 + 19.
Die Rechnung lautet also: 
(9-1)*32+19=275
Die Nummer des GPIO’s wäre in diesem Fall 275!

Der Zugriff auf den Pin

Um auf den Pin zugreifen zu können musst du als erstes den Pin exportieren, das geschieht mit folgendem Code: (XXX steht für die jeweilige Nummer, siehe oben)

echo XXX > /sys/class/gpio/export

Mit diesem Code kannst du die Richtung des Pin’s steuern, z.B. eine Relaiskarte ein bzw. ausschalten:

echo "out" > /sys/class/gpio/gpioXXX/direction
echo "in" > /sys/class/gpio/gpioXXX/direction

Um den Pin wieder freizugeben musst du folgenden Code eingeben:

echo XXX > /sys/class/gpio/unexport

Ich hoffe du hast alles verstanden, falls du noch Fragen, Probleme oder eine Rückmeldung hast schreibe doch einen Kommentar. 🙂