Benutzer-Werkzeuge

Webseiten-Werkzeuge


raspberry_pi_kernelprogrammierung:helloworld

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
raspberry_pi_kernelprogrammierung:helloworld [2024/01/26 15:17] – [3. Testen des "Hallo Welt" Moduls] torsten.roehlraspberry_pi_kernelprogrammierung:helloworld [2024/01/26 15:49] (aktuell) – [3. Testen des "Hallo Welt" Moduls] torsten.roehl
Zeile 44: Zeile 44:
 |Mit ''uname -r'' kann die Version des Installierten Kernel in Erfahrung gebracht werden. Es handelt sich hier um einen Kernel 3.10 (Patchlevel 10, Sublevel 25).| |Mit ''uname -r'' kann die Version des Installierten Kernel in Erfahrung gebracht werden. Es handelt sich hier um einen Kernel 3.10 (Patchlevel 10, Sublevel 25).|
  
-Wir werden deshalb ersteinmal den Raspberry Pi auf den aktuellen Stand setzen und anschließend die Kernel-Version ermitteln, die heruntergeladen werden muss.+Wir werden deshalb erst einmal den Raspberry Pi auf den aktuellen Stand setzen und anschließend die Kernel-Version ermitteln, die heruntergeladen werden muss.
  
-Gegen Sie die nachfolgende Zeile auf der Konsole ein:+Geben Sie die nachfolgende Zeile auf der Konsole ein:
 <code> sudo rpi-update</code> <code> sudo rpi-update</code>
  
Zeile 73: Zeile 73:
 rpi-source </code> rpi-source </code>
  
-Die erste Zeile installiert das Programm rpi-source in der zweiten Zeile wird es dann aufgerufen. Im Homeverzeichnis wird ein Verzeichnis linux angelegt. Dieses Verzeichnis ist ein Link auf das Verzeichnis        linux-c3db7205bcd8988cf7c185e50c8849542554b1f5, was sich ebenfalls im Homeverzeichnis befindet. Die Heruntergelade Datei (linux-c3db7205bcd8988cf7c185e50c8849542554b1f5.tar.gz) kann, um Speicherplatz zu sparen, gelöscht werden.+Die erste Zeile installiert das Programm rpi-source, und in der zweiten Zeile wird es dann aufgerufen. Im Homeverzeichnis wird ein Verzeichnis namens "linuxangelegt. Dieses Verzeichnis ist ein Link auf das Verzeichnis "linux-c3db7205bcd8988cf7c185e50c8849542554b1f5"das sich ebenfalls im Homeverzeichnis befindet. Die heruntergeladene Datei (linux-c3db7205bcd8988cf7c185e50c8849542554b1f5.tar.gz) kann, um Speicherplatz zu sparen, gelöscht werden.
  
 <WRAP center  box 100%> <WRAP center  box 100%>
 Box: RPI-SOURCE  Box: RPI-SOURCE 
  
-Mehr zum rpi-source Programm:   https://github.com/notro/rpi-source/wiki+Mehr zum ''rpi-source'' Programm:   https://github.com/notro/rpi-source/wiki
  
 Insbesondes wenn Sie die nachfolgende Fehlermeldung bekommen, sollten Sie so vorgehen wie im Link beschrieben, um auch den richtigen Compiler (GCC Version) zu bekommen. Insbesondes wenn Sie die nachfolgende Fehlermeldung bekommen, sollten Sie so vorgehen wie im Link beschrieben, um auch den richtigen Compiler (GCC Version) zu bekommen.
Zeile 148: Zeile 148:
 === Vom Quellcode zum Modul: === === Vom Quellcode zum Modul: ===
  
-Um ein vollständiges Kernel-Modul zu erstellen, muß der Quellcode noch übersetzt werden.  +Um ein vollständiges Kernel-Modul zu erstellen, muss der Quellcode noch übersetzt werden. Das Übersetzen (Kompilieren) des Quellcodes (Sourcecode) in ein ausführbares Programm erledigt man am besten mit einer Steuerdatei (Makefile) und dem Programm ''make''. 
-Das Übersetzen (Kompilieren) des Quellcodes (Sourcecode) in ein ausführbares Programm erledigt man am besten mit einer Steuerdatei (Makefile) und dem Programm ''make''.+ 
 + 
  
 <code>ifneq ($(KERNELRELEASE),) <code>ifneq ($(KERNELRELEASE),)
Zeile 176: Zeile 178:
  
  
-Um das Modul zu testen werden die Modul-Utilities benötigt. Darunter versteht man einen Satz von Hilfsprogrammen, um Kernelmodule zu laden, entladen u.s.w.+Um das Modul zu testen werden die Modul-Utilities benötigt. Darunter versteht man einen Satz von Hilfsprogrammen, um //Kernelmodule// zu laden, entladen u.s.w
 + 
 +Um das Modul zu laden/entladen, werden //Rootrechte// benötigt.   
 + 
 +Folgende Programme (''modutils'') werden verwendet: 
 + 
 +  * ''modinfo'': liefert Informationen über ein Modul  
 +  * ''insmod'': fügt zur Laufzeit Module in den Linux-Kernel ein 
 +  * ''lsmod'': zeigt alle geladenen Module an 
 +  * ''rmmod'': entfernt Laufzeitmodule aus dem Kernel 
 + 
 +=== Beispiel === 
 + Hier die Ausgabe des ''modinfo''-Programms: 
 + 
 +<code>pi@raspberrypi ~/kernel $ modinfo hello_world.ko 
 +filename:       /home/pi/kernel/hello_world.ko 
 +description:    Sample hello_world kernel module 
 +author:         Torsten Röhl <devel@physics4school.de> 
 +license:        GPL 
 +srcversion:     793A736C473976825C9475C 
 +depends:         
 +vermagic:       3.12.19+ preempt mod_unload modversions ARMv6 </code> 
 + 
 +Laden des Moduls: 
 +<code>pi@raspberrypi ~/kernel $ sudo insmod hello_world.ko</code> 
 +Überprüfen, ob das Modul korrekt geladen wurde: 
 + 
 +<code>spi@raspberrypi ~/kernel $ lsmod | grep hello_world 
 +hello_world              735  0 </code> 
 + 
 +Um die Ausgabe von lsmod nicht zu lang zu machen, können wir mit grep hello_world nach hello_world suchen. Die Ausgabe zeigt an, dass die Suche erfolgreich war, d.h. das Modul korrekt geladen wurde.
  
-Um das Modul zu laden/entladen, werden Rootrechte benötigt +Entladen des Moduls: 
 +<code>pi@raspberrypi ~/kernel $ sudo rmmod hello_world.ko</code>
  
-Folgende Programme (modutils) werden verwendet:+Lohnend ist auch ein Blick in die Datei ''/var/log/messages'':
  
-  * modinfo: liefert Informationen über ein Modul  +<code># cat /var/log/messages 
-  * insmodfügt zur Laufzeit Module in den Linux-Kernel ein +May 16 16:24:38  kernelHello World: init_helloworld 
-  * lsmodzeigt alle geladenen Module an +May 16 16:26:16 kernel: GoodBye Worldexit_helloworld</code>
-  * rmmodentfernt Laufzeitmodule aus dem Kernel+
  
 ===== Zusammenfassung ===== ===== Zusammenfassung =====
raspberry_pi_kernelprogrammierung/helloworld.1706282266.txt.gz · Zuletzt geändert: 2024/01/26 15:17 von torsten.roehl