Commit 81f755a7 authored by Julian Kralik's avatar Julian Kralik
Browse files

Update Dokumentation.md

parent df70caaa
......@@ -121,7 +121,7 @@ Damit alle der im Code verwendeten Funktionen funktionieren müssen einige Heade
#define BUF_LEN 1 // Maximale Länge einer Nachricht
```
### 2.2.2 Lizensierung und Modul Dokumentation
### 2.2.2 Lizensierung und Modul-Dokumentation
```c
MODULE_LICENSE("GPL");
......@@ -149,7 +149,7 @@ vermagic: 4.9.62-v7+ SMP mod_unload modversions ARMv7 p2v8
```
### 2.2.3 GPIO-Implementierung
Um die 7-Segemntanzeige an einem Raspberry Pi zu betreiben müssen die GPIO-Pins (engl. GPIO – general purpose input/output) über den Treiber angesprochen und verwaltet werden die sgeschieht im folgenden Abschnitt.
Um die 7-Segemntanzeige an einem Raspberry Pi zu betreiben müssen die GPIO-Pins (engl. GPIO – general purpose input/output) über den Treiber angesprochen und verwaltet werden dies geschieht im folgenden Abschnitt.
Als erstes müssen die Pins initialisiert werden:
```c
void seven_gpio_init(void) { //Initialisiert die GPIO-Pins (gpio_request)
......@@ -175,7 +175,7 @@ void seven_gpio_init(void) { //Initialisiert die GPIO-Pins (gpio_r
}
```
Die GPIO-Pins müssen zuerst für das Modul reserviert werden, dies wird mit `gpio_request(unsigned int gpio, const char *label)` erreicht.
Um mit den Pins arbeiten zu können muss noch festgelegt werden, dass es Output-Pins sind was, mit `gpio_direction_output(unsigned int gpio, int value)` bewerkstelligt wird.
Um mit den Pins arbeiten zu können muss noch festgelegt werden, dass es Output-Pins sind, was mit `gpio_direction_output(unsigned int gpio, int value)` bewerkstelligt wird.
Wenn man das Modul entladen will müssen die GPIO-Pins wieder freigegeben werden was im folgenden Codeabschnitt durch `gpio_free(const int gpio)` realisiert wurde:
```c
......@@ -390,7 +390,7 @@ Quelle: [GPIO in the kernel] (https://lwn.net/Articles/532714/)
Um später mit dem Treiber im Kernel-Space kommunizieren zu können, wird ein Character Device Driver benötigt, der im Kernel-Space eine Node-Datei erstellt, auf die der User
mit `& echo "display" >> /dev/sevenseg` schreiben kann und das Modul die Eingabe verarbeitet.
Als erstes werdend hierzu folgende globale Variablen und Strukturfunktionen erstellt:
Als erstes werden hierzu folgende globale Variablen und Strukturfunktionen erstellt:
```c
/* Globale Variablen für die Chracter-Device-Schnittstelle */
static ssize_t seven_write(struct file *, const char *, size_t, loff_t *);
......@@ -433,9 +433,9 @@ Mit der KERN_INFO lassen wir uns hier den genauen Pfad ausgeben in der die Node
> $ mknod /dev/sevenseg 243 0
eine Datei mit Majornummer 243 und Minor-Nummer 0 angelegt. Die Minor Nummer wird nur verwendet wenn ein Treiber mehrere Geräte ansprechen soll.
eine Datei mit Major Nummer 243 und Minor-Nummer 0 angelegt. Die Minor Nummer wird nur verwendet wenn ein Treiber mehrere Geräte ansprechen soll.
Zu guter letzt muss noch Speicher für die Übertragung des Puffers reserviert werden da die Eingaben in die Nodedatei nur indirekt ausgelesen werden können.
Zu guter Letzt muss noch Speicher für die Übertragung des Puffers reserviert werden da die Eingaben in die Node Datei nur indirekt ausgelesen werden können.
In der folgenden Funktion verwenden wir die bereits erstellte Struktur der write-Funktion:
```c
......@@ -521,13 +521,13 @@ void seven_dev_exit(void)
}
```
Hier wird durch die Funktion `unregister_chrdev(unsigned int major, const char *name)` der Treiber abgemeldet in den Parametern wird die Majornummer und der DEVICE_NAME angegeben.
Hier wird durch die Funktion `unregister_chrdev(unsigned int major, const char *name)` der Treiber abgemeldet, in den Parametern wird die Major Nummer und der DEVICE_NAME angegeben.
Quelle: [Linux Loadable Kernel Module HOWTO] (http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html#AEN569)
### 2.2.5 Die Modulfunktionen
Zu guter letzt müssen alle Initialisierungsfunktionen über die Modulinitialiesierung aufgerufen werden damit beim Laden des Treibers alle Funktionen garantiert sind:
Zu guter Letzt müssen alle Initialisierungsfunktionen über die Modulinitialisierung aufgerufen werden damit beim Laden des Treibers alle Funktionen garantiert sind:
```c
static int __init seven_init(void) {
printk(KERN_INFO "SEVENSEG: starting...");
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment