Programmation de drivers sous linux

Résolu/Fermé
grbm Messages postés 2 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007 - 23 nov. 2007 à 11:29
grbm Messages postés 2 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007 - 26 nov. 2007 à 14:28
Bonjour,
je m'intéresse à la programmation système sous linux, plus précisement à la programmation de driver. Voici la structure mnimale d'un module
que j'ai vu dans un club de developpeur:
#include <linux/module.h>

int init_module(void)
{
printk("<1>Hello, world\n");
return 0;
}

void cleanup_module(void)
{
printk("<1>Goodbye cruel world\n");
}

je lance la compilation avec la commande suivante: cc -O -DMODULE -D__KERNEL__ -c hello.c ,ceci me donne tout une nation d'erreur.
je remplace "#include <linux/module.h>" par la bibliothèque "#include <linux/init.h>", la compilation marche et j'obtient le fichier objet.
lorque j'essaie de le charger avec insmod Hello.o voila ce que ça me donne comme message "insmod:error inserting "hello.o":-1invalid module format.
lorsque j'utilise module.h et init.h les erreurs se multipluient , pourtant cela ne pas mauvais non plus car 'module.h ' nous fournit les bases pour le déchargement et le déchargement de module et 'init.h' pour l'initialisation
A voir également:

3 réponses

Bonjour,

voici une piste : https://lwn.net/Kernel/LDD3/

c'est une version téléchargeable de linux device drivers ( 3nd edition) qui m'a permis l'apprentissage de la création de driver sous linux.
j'espère que ça vous aidera ( je vous suggère de lire le 2eme chapitre : Building and Running Modules, qui répondra sûrement à votre question).

Cordialement

:)
0
grbm Messages postés 2 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
26 nov. 2007 à 14:28
Bonjour Akira;
je bien recu votre reponse à mon problème et elle est satisfaisante.
Je veux avoir ton @ mai si cela ne te dérange pas afin de faire beaucoup plus connaissance.
Merci.
0
Bonjour,

j'essaie de le charger avec insmod Hello.o


On ne peut pas insérer un module qui n'a pas été prévu lors de la compilation du noyau. Il faut avoir compilé le noyau avec une option de type "HELLO=m".

Manu
0
gcc -D__KERNEL__ -I/usr/src/linux/include -DMODULE -Wall -O2 -c hello.c -o hello.o
0