2012-10-07 1 views
5

J'ai quelques années c expérience de programmation. Maintenant, j'ai décidé de travailler sur le développement du module noyau Linux. Cependant, je ne peux même pas commencer. J'ai compilé ce code dans Ubuntu. Cependant, l'insmod ne fonctionne pas, le message d'erreur est "Invalid module format". après googling j'ai pensé qu'il pourrait y avoir un problème avec la compatibilité de la version. Et il n'y a pas de bon moyen de le résoudre. Alors, est-ce que de vrais développeurs de modules du noyau peuvent me donner des conseils? Quel environnement devrais-je préparer avant de commencer à apprendre?Comment coder un module noyau Linux?

Merci!

Répondre

10

Il vous manque les macros module_init() et module_exit() et quelques-unes de #defines cruciales. Nous avons également besoin de plus d'informations, telles que vos options make/gcc. Il peut s'agir du "format de module invalide", car vous compilez en 32 bits lorsque votre noyau est en 64bits, donc assurez-vous d'utiliser le drapeau-64 de compilation et de lien.

Un grand tutoriel Bonjour monde pour les modules du noyau se trouve ici: http://archive.is/KNkEE (le original link à l'article est brisé).

Bienvenue dans l'écriture de modules de noyau. Ils sont très amusants comparés à l'écriture de pilotes Windows (j'ai fait les deux). L'interface du module noyau Linux est beaucoup plus simple à utiliser et il y a beaucoup de pilotes de base que vous pouvez déléguer et accélérer le travail.

+0

* "Il vous manque les macros __init et __exit ..." * - L'utilisation de '' __init' et __exit' ne sont pas nécessaires; ils spécifient seulement les sections de texte qui peuvent être libérées après le démarrage. Ce qui est requis pour un module de pilote, ce sont des déclarations pour deux points d'entrée utilisant 'module_init()' et 'module_exit()'. – sawdust

1

Un blog complet et simplifié sur les noyaux Linux, la programmation de modules et l'écriture de pilotes de périphériques simples pour les périphériques embarqués.

xploredevicedrivers.blogspot.in

Questions connexes