Comment commencer à écrire des pilotes?

J'ai un ordinateur portable à bas prix que je voudrais tourner autour, un Thinkpad SL 500.

Ce qui me dérange, ce sont deux leds, l'une pour la connectivité sans fil, et l'autre pour l'hibernation, qui ne s'allument pas du tout, bien qu'elles soient fonctionnelles, je l'ai essayé sur windows.

Je voudrais donc écrire un pilote de kernel pour eux, rien de grand, ça ressemble à une bonne idée de jouer avec le kernel.

Ma question est de savoir quelle méthodologie dois-je suivre systématiquement pour savoir quels appareils sont responsables de ces leds (en général, pas nécessairement spécifiques à mon matériel), et quels sont les drivers responsables des deux autres leds qui fonctionnent, le bluetooth et l'indicateur de batterie?

Et quand je dis méthodologie, je veux vraiment dire la méthodologie, étape par étape, avec les raisons de chaque étape, comme dans la réponse que j'ai donnée à quelqu'un d'autre ici: Que signifie && dans void * p = && abc;

Je suis très utile pour repérer les grands repositorys de code, en utilisant des parsingurs de codes statiques & co, mais je pense que mon manque de connaissance du matériel me gêne sur ce problème.

PS: J'utilise ArchLinux, donc presque la dernière version du kernel.

Quelle méthodologie dois-je suivre systématiquement pour savoir quels appareils sont responsables de ces LED?

Dans l'idéal, vous devriez find la source (ouverte) du operating system du kernel sur laquelle fonctionnent les DEL de votre ordinateur portable, puis vous pouvez commenter une partie par partie du kernel jusqu'à ce que vous trouviez le code qui est responsable des voyants mais c'est la partie amusante).

Si les voyants ne fonctionnent pas sous Linux et que vous ne savez pas quel matériel les pilote sur d'autres OS, comment pensez-vous que vous allez écrire un pilote?

C'est la meilleure réponse que quelqu'un puisse donner, j'ai peur, et cela ne vous rend (presque) pas plus intelligent qu'avant. Juste vous indique que vous avez besoin de savoir exactement quel matériel vous avez, pour être en mesure de faire quelque chose de plus.

Pour être plus utile, deux conseils:

  1. L'un des puces IDE ou SATA souvent utilisées est la série Intel ICHX ou ICHXr (ICH5, ICH6, ICH7 … ou ICH6R, ICH7R, …).

  2. Répertoire du kernel Linux où se trouve le code source pour contrôler le lot de diodes électroluminescentes

Je voudrais vous donner le troisième pointeur aussi, mais comme cela gorkypy déjà écrit ci-dessus, je peux juste répéter: pilotes de périphériques Linux, 3e édition , en PDF, gratuitement.