|
|
# 2. Erstellen eines Kernel-Moduls
|
|
|
|
|
|
Um alles im Überblick zu haben erstellt man zuerst ein Verzeichnis für das Kernelmodul:
|
|
|
> $ mkdir /home/pi/Sevenseg
|
|
|
|
|
|
In dieses Verzeichnis erstellt man als erstes ein Makefile:
|
|
|
In diesem Verzeichnis erstellt man als erstes ein 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
|
|
|
|
|
|
## 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
|
|
|
|
... | ... | @@ -23,7 +22,7 @@ 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.
|
|
|
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 |
|
|
|
|
|
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:
|
|
|
```
|
... | ... | |