Update Kernelmodul erstellen authored by Christian Eckl's avatar Christian Eckl
# 2. Erstellen eines Kernel-Moduls # 2. Erstellen eines Kernel-Moduls
Um alles im Überblick zu haben erstellt man zuerst ein Verzeichnis für das Kernelmodul: Um alles im Überblick zu haben erstellt man zuerst ein Verzeichnis für das Kernelmodul:
> $ mkdir /home/pi/Sevenseg > $ mkdir /home/pi/Sevenseg
In dieses Verzeichnis erstellt man als erstes ein Makefile: In diesem Verzeichnis erstellt man als erstes ein Makefile:
> $ nano Makefile > $ nano Makefile
Man benötigt außerdem den ausfürbaren Code in C in diesem Verzecihnis: Man benötigt außerdem den ausfürbaren Code in C in diesem Verzeichnis:
> $ nano sevenseg.c > $ nano sevenseg.c
## 2.1 Makefile ## 2.1 Makefile
Das Makefile wird verwendet um den ausführbaren Code zu kompilieren hierbei ist eine spezielle Formatierung vorgegeben. Das Makefile wird verwendet um den ausführbaren Code zu kompilieren, hierbei ist eine spezielle Formatierung vorgegeben.
``` ```
obj-m := sevenseg.o obj-m := sevenseg.o
...@@ -23,7 +22,7 @@ clean: ...@@ -23,7 +22,7 @@ clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
``` ```
Da das Modul außserhalb des Kernel-Source-Trees verwaltet und kompieliert werden soll, wird in der ersten Zeile Da das Modul außerhalb des Kernel-Source-Trees verwaltet und kompiliert werden soll, wird in der ersten Zeile
durch `obj-m := sevenseg.o` ein Makefile im eigenen Source-Tree erstellt. durch `obj-m := sevenseg.o` ein Makefile im eigenen Source-Tree erstellt.
Außerdem kompiliert der Eintrag `sevenseg.c` in `sevenseg.ko`. Außerdem kompiliert der Eintrag `sevenseg.c` in `sevenseg.ko`.
...@@ -33,7 +32,7 @@ Hier wird das Modul in das built-Verzeichnis des aktuellen Kernels (`$(shell una ...@@ -33,7 +32,7 @@ Hier wird das Modul in das built-Verzeichnis des aktuellen Kernels (`$(shell una
Beim entladen des Moduls wird target `clean:` aufgerufen und löscht das Modul aus dem Kernel. Beim entladen des Moduls wird target `clean:` aufgerufen und löscht das Modul aus dem Kernel.
Bei der Formatierung ist darauf zu Achten vor den Makebefehlen einen tab einzurücken. Bei der Formatierung ist darauf zu Achten vor den Makebefehlen einen Tab einzurücken.
Das Makefile wird durch den Befehl `make sevenseg.c` ausgeführt und liefert folgende Systemausgabe: Das Makefile wird durch den Befehl `make sevenseg.c` ausgeführt und liefert folgende Systemausgabe:
``` ```
... ...
......