web-dev-qa-db-fra.com

Comment dois-je commencer à écrire des pilotes de périphérique?

Je voudrais apprendre à écrire des pilotes de périphérique car je pense que ce serait amusant. J'utilise un Macbook Mac OS X, mais j'ai également une machine Ubuntu (fonctionnant sur un Mac Min). Je connais assez bien C et je lis actuellement ce livre . J'ai trouvé des liens en ligne tels que Mac Dev Center . Je fais ça parce que ce serait amusant. Je pense qu'il y aurait une réelle satisfaction à voir le matériel fonctionner à cause du logiciel que j'ai écrit.

Je suppose que ce que j'aimerais, ce sont des conseils ou des conseils et des orientations, et quelqu'un connaît-il une liste de périphériques qui n'ont pas de pilotes ou puis-je écrire un pilote pour quelque chose qui est déjà pris en charge (je préfère le premier, donc je suis en fait valeur). Quel est un bon appareil pour commencer? Suis-je en train de mordre plus que je ne peux mâcher? Je n'ai pas peur de la programmation ou de l'assemblage de bas niveau ou de la quantité d'effort requise. J'aimerais vraiment un défi!

63
Bjorn Tipling

Pour Linux, vous pourriez envisager de récupérer le livre O'Reilly Pilotes de périphérique Linux ou de lire PDF en ligne. À mon avis, c'est l'un des meilleurs textes sur le sujet.

Le Guide de programmation du module du noyau Linux est une autre bonne ressource.

Vous pouvez également vouloir prendre un livre spécifiquement sur le noyau Linux. J'ai pris une copie de Robert Love Linux Kernel Development (2nd Edition) à cet effet ( rd Edition en cours de route).

34
jschmier

L'écriture d'un pilote de périphérique peut être assez simple ou compliquée presque arbitrairement. Par exemple, j'ai été impliqué dans un projet où il nous a fallu près de trois ans à six d'entre nous pour résoudre UN bug dans un pilote de périphérique. Bien sûr, nous avons éliminé des dizaines d'autres bogues en le recherchant ... le code s'est énormément amélioré. Le correctif s'est avéré être un patch de huit lignes, qui a coûté, de manière conservatrice, environ un million de dollars.

Mais, en tant que projet parallèle à cela, j'ai écrit un pilote Ethernet à partir de la fiche technique de la puce en une semaine, et j'ai pris une autre semaine pour le déboguer. Je n'ai pas eu besoin de le toucher depuis.

Il n'y a aucun moyen de dire en général combien de travail sera un conducteur; un pilote GPU pourrait coûter des centaines de millions, un pilote pour une seule LED coûte au maximum deux heures de travail.

26
Andrew McGregor

Si vous voulez opter pour le développement de pilotes de périphériques Linux, le livre O'Reilly disponible gratuitement Linux Device Drivers, Third Edition est une lecture incontournable.

Afin de trouver des éléments matériels non pris en charge pour lesquels vous pourriez écrire un pilote, demandez sur les listes de diffusion Linux . Peut-être un périphérique USB 3.0? ;)

4
AndiDog

Pour Mac, vous voudrez peut-être jeter un œil à Mac OS X Internals book. C'est réfléchi et lourd mais amusant à lire. Il s'agit principalement de Mac basés sur PowerPC, mais comporte une annexe sur les Mac à processeur Intel. Pour Linux, jetez un œil à Pilotes de périphérique Linux, 3e édition - il est plus léger (PDF gratuits en ligne :) et est vraiment orienté pilote de périphérique, pourrait être un meilleur début.

2
Nikolai Fetissov