[usb-skeleton.c] Spécification du kernel de compilation

Spécification du kernel de compilation [usb-skeleton.c] - C - Programmation

Marsh Posté le 10-01-2005 à 17:45:33    

Bonjour à tous. J'avance dans ma création d'un driver pour caméras USB. J'utilise maintenant le mot driver car je suis obligé de faire un module afin d'utiliser :
/usr/src/linux-2.4.20-8/drivers/udb/usb.h
..bref !
 
J'ai donc pris comme exemple le fichier usb-skeleton.c contenu dans ce même répertoire. Je compile avec :
gcc -O -Wall -D__KERNEL__ -DMODULES -I/usr/src/linux-2.4.20-8/include -c -o usbcam.o usbcam.c
 
Ca passe nickel sauf que lorsque je fais : insmod ./usbcam.o, il me dit :
usbcam.o : couldn't find the kernel version the module was compiled for
 
Pourtant, j'ai bien rajouté dans mon fichier usbcam.c (ex usb-skeleton.c), la ligne :
#include <linux/version.h>
 
J'ai même essayé en copiant directement :
#define UTS_RELEASE "2.4.20-8"
#define LINUX_VERSION_CODE 132116
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
 
dans mon fichier usbcam.c ... mais ca change rien :(
 
Avez-vous une idée de ce qui me manque ? Dois-je utiliser la macro KERNEL_VERSION(a,b,c) dans mon code pour définir la version du kernel ... ou est-ce simplement pour effectuer différents tests du style :
#if LINUX_VERSION_CODE > KERNEL(2,4,20) ...
 
Merci d'avance pour votre aide !

Reply

Marsh Posté le 10-01-2005 à 17:45:33   

Reply

Marsh Posté le 10-01-2005 à 18:22:15    

... bon à priori, il me manquait le -g lors de la compil !!!

Reply

Marsh Posté le 10-01-2005 à 18:44:24    

et alors ???
as tu activé le "kernel debugging", dans les options "kernel hacking" ?

Reply

Marsh Posté le 10-01-2005 à 18:52:11    

euh ... c'est quoi le kernel hacking ???
 
BOn je rajoute aussi une question car mon driver compile (usb-skeleton), et j'arrive bien à le lancer avec insmod.
 
Par contre, je voudrais faire un printk dans la fonction usb_probe, sauf que je teste pour l'instant sur une clé usb ... donc j'ai comme l'impression qu'il doit déjà y avoir un driver pour la clé donc le core ne lance pas ma fonction usbcam_probe ... y'a-t-il un moyen de désactiver le driver de clés usb ... peut-etre usb-storage remarque, j'ai même pas testé !!!

Reply

Marsh Posté le 10-01-2005 à 18:54:41    

Je confirme qu'en faisant rmmod usb-storage ... le core appelle bien ma fonction usb_probe !!!!
 
Mais je veux bien l'info sur le kernel hacking. Pour l'instant, j'ai juste rajouté USB_CONFIG_DEBUG dans mon fichier, après les includes, car ceux-ci me le désactivent.

Reply

Marsh Posté le 10-01-2005 à 19:11:56    

quand tu compiles un noyau, tu fais un make menuconfig (par exemple). tu as alors un chapitre kernel hacking ou tu peux choisir des options de debugage du noyau.
Je pensais, à tout hasard, qu'en utilisant un noyau compilé avec des options de debugage, tu ne  pouvais alors pas insérer un module ne contenant pas d'informations de débugage ...


Message édité par ++fab le 10-01-2005 à 19:13:12
Reply

Marsh Posté le 10-01-2005 à 19:15:28    

OK !!!
 
ben en fait, j'ai pas recompilé mon noyau, j'ai juste fait l'instal avec les CD et basta ... donc je ne sais pas ce qu'il en est des options de débuguage ... mon module a l'air de passer en tous cas !!!
Merci ++fab !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed