Eigener Linux-GPIO-Treiber für Raspberry Pi 3 Model B

Eigener Linux-GPIO-Treiber für Raspberry Pi 3 Model B

Seit geraumer Zeit liegt ein Raspi 3 ganz einsam und verstaubt auf meinem Schreibtisch. Es ist an der Zeit, seinen gelangweilten Prozessor in Schwung zu bringen! Wie fängt man an? Natürlich mit einer LED-Bliki-App und als Special mit eigenen Linux-Treiber. Okay, ist nicht weltbewegend, aber als „Hello World App“ akzeptabel.

Inhalt und Ausblick

In diesem Beitrag gebe ich einen kurzen Überblick, wie man einen Linux-Treiber erstellt und auf einen Raspi 3 anwendet. In den folgenden Beiträgen werden ein Bustreiber und eine Qt-GUI mit Threads erstellt.

Breadboard mit Schaltung

Die Raspi-Pins sind auf ein Breadboard herausgeführt. Auf dem Breadboard befindet sich eine LED und ein Schalter nebst Entprellung. Der Taster-Eingang liegt auf Pin 5 (Breadboard: 105) und LED-Ausgang liegt auf Pin 4 (Breadboard: 104).

Brake-out-Panal

Linux aktualisieren

Zuerst muss der Linux-Software aktualisiert werden:

Linux-Headers sind passend zum neusten Kernel (aktuell 4.14.34-v7+)  down-zu-loaden und zu überprüfen:

Treiber erstellen

Nun wird die Treiberdatei led_device_driver.c erstellt. Der Treiber beinhaltet die Treiberfunktionen led_device_open(), led_device_close()led_device_read() und led_device_write() .

Nun die Funktionen den Systemcalls zuweisen:

Der Treiber wird mit der Funktion led_device_init() geladen und mit der Funktion led_device_exit() entladen, dazu müssen die beiden Funktionen jeweils module_init() und module_exit() zugewiesen werden. Wichtig! Die richtige Lizenz auswählen.

Makefile erstellen:

Treiber erstellen mit make

laden:

Zugriff für andere ermöglichen:

Ist der Treiber geladen?

Treiber testen

Applikation

Nun wird eine kleine Applikation in C erstellt.

Programm kompelieren:

Programm ausführen

Die LED leuchtet für 2 Minuten oder bis der Taster betätigt wird.