c++ développement de pilotes de périphériques sous linux
Je voulais avoir plus de détails pour l'écriture Graphique pilotes de périphériques audio et les pilotes de périphérique à l'aide de c++ pour Linux.
Je suis novice dans le développement de pilotes de périphériques , Veuillez me fournir développement/documentation détails pour la même chose.
Grâce
-Pravin
Si vous êtes en vue de la canalisation principale d'inclusion, c++ est le plus sûr moyen d'avoir votre patch ignoré.
OriginalL'auteur pravin | 2010-12-07
Vous devez vous connecter pour publier un commentaire.
Noyau Linux, les pilotes de périphérique sont écrits en C plutôt qu'en C++.
La plupart des pilotes de périphérique sont accessibles par l'intermédiaire d'un dispositif spécial de fichier (/dev/yourdevice0) à laquelle le contrôle ainsi que les opérations de lecture et écriture peuvent être effectuées.
Mode utilisateur client les programmes et les pilotes en mode utilisateur d'ouvrir le fichier de périphérique et de l'utiliser comme une voie à parler le pilote en mode noyau. Ces pilotes en mode pourrait être écrit en C++ ou tout autre langage.
Généralement la meilleure façon de commencer est d'avoir un appareil qui a besoin d'un pilote, et d'apprendre ce qu'il vous faut pour l'écrire. Et souvent, la meilleure façon de le faire est de trouver un pilote pour un périphérique, ou de l'un avec les mêmes paradigmes de l'interface, et de commencer par la modification jusqu'à ce qu'il fonctionne pour votre nouvel appareil à la place ou en tant que bien.
OriginalL'auteur Chris Stratton
Venir à cette page en retard, la question elle-même a été répondu par Chris Stratton, mais il est important de corriger un couple de choses que Chris Becke mettre ici que sont des idées fausses les plus courantes avec des gens qui ne sont pas familier avec le C++:
C'est à l'adresse des idées fausses posté ici. Pour ajouter plus cependant:
1) Un novice programmeur C++ peut faire n'importe quoi, mais un novice programmeur C en essayant de mettre en œuvre par lui-même, le polymorphisme et l'héritage comme l'a fait maintes et maintes fois dans le noyau, sans l'appeler comme tel, va faire beaucoup plus inefficace undebuggable non-sens.
2) en Disant que la seule chose qui peut être créé dans la base de C++ est un pointeur virtuel SI VOUS en avez BESOIN et de préciser "virtuel", et puis aussi de programmeurs C habituellement, il suffit de créer un tel pointeur de la manipuler par eux-mêmes ajouter des tables de recherche et d'obtenir beaucoup plus difficile de bugs en bas de la ligne qui lui est dû. Comme toujours en C++, si vous ne mentionnez pas "virtuel", alors vous ne pouvez même pas obtenir ce pointeur. Héritage et de l'encapsulation sont bien sûr totalement libre de frais généraux.
3) C++ crée la même quantité de l'asm et de la mémoire comme C si vous n'avez pas de demander EXPLICITEMENT de caractéristiques spéciales, mais il est un cas courant quand le C++ est plus efficace - lors du passage de pointeurs de fonction. Si vous utilisez C++de foncteurs vous pouvez insérer le relevé de la fonction. Cela est TRÈS utile dans embedded applications.
4) Si embedded RT utilise C++ pourquoi linux ne l'est pas? Tout simplement parce que de mythes, veuillez lire ce message attentivement et consultez scott meyers ou, mieux encore, l'asm s'est lui-même. J'ai 20 ans en RT et avait la même incrédulité en C++ quand je passe il y a 14 ans, mais les faits ne confirment pas une telle méfiance.
TL;DR - c'est très facile à écrire et efficace dans un cas commun plus efficace du code en C++, les études, beaucoup d'expérience de l'industrie et des livres abondent sur ce sujet.
OriginalL'auteur SeventyFive
Comme il n'y a pas de C++ runtime dans le noyau, vous serez confronté à des problèmes rapidement. Je suppose que vous pourrait faire un runtime C++ pour l'exécuter dans le noyau, mais il aurait besoin de quelques très bonnes compétences. Beaucoup plus de compétences que d'écrire le pilote dans C.
Aussi, vous mettre instantanément par les développeurs du noyau Linux. Je veux dire VRAIMENT mettre bas. Ils avaient flamme vous si mauvais, que vous n'auriez jamais s'en remettre. Les Chances sont que vous dire, "Vis de Linux et de leur élitiste salauds".
Je ne veux pas paraître négatif, mais je suis un doux et propice voix en comparaison de ce que vous pouvez entendre d'autres personnes.
OriginalL'auteur Jörgen Sigvardsson
Pilotes Linux sont développés en C. Si vous souhaitez en savoir plus sur le développement de drivers Linux, vous devriez lire cet eBook gratuit: http://lwn.net/Kernel/LDD3/
Une archive de tous les fichiers pdf chapitres est également disponible: http://lwn.net/images/pdf/LDD3/ldd3_pdf.tar.bz2
OriginalL'auteur jopasserat
C, pas du C++ est le langage pour l'écriture (mode noyau) les pilotes de périphériques, et la raison en est simple: le C++ est un langage inapproprié à utiliser pour écrire le pilote. Comme un effet secondaire de cela, il n'y a pas de c++ runtime disponible en mode noyau.
Pourquoi le c++ est inapproprié: Il y a au moins deux raisons:
Je pense qu'il y a d'autres aspects que je suis l'oubli, mais, ideomatic c++ viole un certain nombre de contraintes qui pèsent sur les pilotes. C'est pourquoi C est préféré.
OriginalL'auteur Chris Becke