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:43] – [1. Kernel-Quellen (auch Kernel-Header genannt) herunterladen] torsten.roehlraspberry_pi_kernelprogrammierung:helloworld [2024/01/26 15:49] (aktuell) – [3. Testen des "Hallo Welt" Moduls] torsten.roehl
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.1706283811.txt.gz · Zuletzt geändert: 2024/01/26 15:43 von torsten.roehl