"Qui ne s'est jamais dit en présence d'un matériel assez simple mais non encore supporté: "Il faut que je me code le driver ça ne doit pas être si sorcier !". En effet, si l'on a accès aux bonnes informations cette aventure peut s'avérer très constructive et enrichissante, comme vous le prouve cet ouvrage."
Linux Device Drivers | |
Auteur | Alessandro Rubini |
Editeur | O'REILLY |
ISBN | 1-56592-292-1 |
Pages | 421 |
Prix | Constaté : 255F |
Rédacteur | trollhunter |
<!-- Ceci est a mettre comme texte de la news annoncant la revue<br/> du livre -->
Qui ne s'est jamais dit en présence d'un matériel assez simple mais
non encore supporté: "Il faut que je me code le driver ça ne doit pas
être si sorcier !". En effet, si l'on a accès aux bonnes informations
cette aventure peut s'avérer très constructive et enrichissante, comme
vous le prouve cet ouvrage.
<!-- Fin du texte de la news -->
Le premier chapitre vous présente tout naturellement les bases du
kernel et les subtilités de licence s'appliquants au logiciel
. Puis, dès le second chapitre l'on plonge directement
dans le sujet avec la présentation des modules. Le troisième chapitre
est lui consacré au bases des char drivers avec les opérations de
lecture/écriture.
Arrivé à ce point de l'ouvrage, il est fort possible que vous ayez
commencé à expérimenter dans votre coin et que vous ayez déjà quelques
petits soucis, cela tombe bien, l'auteur vous donne les ficelles pour
déboguer vos petits modules.
Puis l'on replonge dans le monde des char drivers avec la présentation
d' ioctl, des E/S bloquantes et de la gestion des accès sur
un fichier de périphérique.
Lorsque l'on rédige des drivers, la gestion du paramètre temps est
très importante puisqu'elle vous permet non seulement d'accéder au
temps présent, de retarder certaines opérations pendant un certain
temps ( cas par exemple de l'attente d'une vitesse de
rotation constante pour certains périphériques ), aussi un chapitre
entier y est constaté vous montrant les différentes manières d'y
accéder, la gestion des files d'ordonnancement.
Un autre paramètre très important est la gestion de la mémoire, avec,
dans le chapitre suivant la présentation de kmalloc,
vmalloc et get_free_page.
Maintenant que la partie soft commence à vous être familière vous
allez pouvoir aborder la partie hard, cette partie commence doucement
avec la présentation du port favori des
lecteurs de la
Cofee mini HOWTO
: le port parallèle. puis l'on passe très vite sur les cartes ISA 1M
, PCI, et l'accès en mode texte au video buffer.
Le neuvième chapitre est dédié à la gestion des interruptions avec
l'implémentation d'un mini gestionnaire d'interruptions. La gestion de
la concurrence fait l'objet d'un soin particulier.
Le chapitre suivant est consacré à l'utilisation judicieuse des types
de données; en effet lorsque l'on désire écrire un driver portable il
faut faire très attention à la taille des différents types, sinon des
surprises vous attendent.
Puis l'on revient sur la modularisation et kerneld, vous y
apprendrez le support des versions dans vos modules ainsi que la
persitence entre deux chargements/déchargement.
Cet ouvrage ayant commencé par vous présenter les drivers caractères,
le douzième chapitre vous présente les drivers en mode block. A l'issu
de ce chapitre des aspects tels la gestion des partitions par le
kernel n'auront plus de secrets pour vous.
Un petit retour sur la mémoire dans le chapitre suivant puisque l'on
vous présente MMAP et les accès DMA
Linux et réseau étant souvent associé, vous apprendrez les bases des
gestionnaires réseau.
Enfin, vous avez doit tout naturellement droit à un chapitre où les
bus vous sont présentés. L'accent est particulièrement mis sur le bus
PCI et l'on vous parle un peu de MCA, EISA,
VLB et Sbus.
Puis vous aurez droit à un chapitre intitulé physical layout of the
Kernel Source où A. Rubini vous explique où trouver les différents
sous ensembles du kernel et vous donne un petit aperçu du boot des
PC, Alpha et SPARC.
Le 17ème et dernier chapitre est quand à lui consacré aux dernier
dévellopements par exemple les macros permettant les conversions big
endian little endian, ces macros introduites avec le 2.1.10 sont
standards sur tous les kernels >= 2.2.x .
Parmis les nombreux points que j'aime dans cet ouvrage d'introduction
à l'écriture des drivers pour le kernel il faut signaler le style de
l'auteur qui aide à faire passer les difficultés de l'entreprise, de
plus la structure des chapitres avec la petite partie introductive
servant à placer le sujet, les explications très claire, le code et
les sorties d'ecran ou les dumps permettent de se faire une petite
idée. En outre il faut signaler la clareté des schémas d'illustration
que ce soit des schémas illustrants un brochage ou une structure de
donnée. Enfin la section Quick Reference permet de bien synthétiser
les connaissances acquises au cours du chapitre, et rappellent dans
quel fichier sont déclarés les fonctions vues au cours de ce chapitre.
Par contre il y a quelques petits regrets, mais ils sont surtout dus
à l'âge du livre ( Février 1998 ): cet ouvrage se base sur les kernels
2.0 et 2.1.10, l'on ne parle pas du tout de l'USB, et la section sur
le bus Sbus aurait mérité beaucoup plus d'explications d'autant plus
que l'auteur possède une SPARC et que dans la section initialisation du
16ème chapitre l'amorçage d'une SPARC est très bien expliqué.
Mais en dehors de ce petit détail, les quelques 400 pages de cet
ouvrage sont vraiment très intéressantes. A signaler un autre ouvrage
, qui est une petite initiation à l'écriture de modules pour le
kernel, c'est le
Linux Kernel Module Programming guide
Enfin pour compléter le driver l'on pourra toujours se reporter à
l'ouvrage de R.Stones où vous apprendrez à créér les librairies de
développement autour de votre driver, à utiliser les services de
syslogd et enfin à rédiger la page man expliquant le tout..
Table des matières
- Chapter one: An introduction to the Linux Kernel.
- Chapter two: Building and running modules.
- Chapter three: Char Drivers.
- Chapter four: Debugging techniques.
- Chapter five: Enhanced Char Driver Operations.
- Chapter six: Flow of time.
- Chapter seven: Getting hold of Memory.
- Chapter eight: Hardware Management.
- Chapter nine: Interrupt Handling.
- Chapter ten: Judicious use of Data Types.
- Chapter eleven: Kerneld and advanced Modularization.
- Chapter twelve: Loading Block Drivers.
- Chapter thirteen: Mmap and DMA.
- Chapter fourteen: Network Drivers.
- Chapter fifteen: Overview of Peripheral Buses.
- Chapter sixteen: Physical Layout of the kernel Source.
- Chapter seventeen: Recent Developments.
- Index
Références
Aller plus loin
- Critique Complète. (12 clics)
# Cool mais
Posté par Benjamin . Évalué à 1.
[^] # Re: Cool mais
Posté par bmc . Évalué à 1.
Pour ma part, ça fait longtemps que j'attends ça et je vais courir me le procurer :)
[^] # Re: Cool mais
Posté par Tab Tab . Évalué à 1.
Je te conseille de chercher sur les sites web des constructeurs tu t'apercevra que certains on les specifications de leur materiel (en .pdf)
Tab
[^] # Re: Cool mais
Posté par Benjamin . Évalué à 1.
Demande aux développeurs de tous les trucs un peu "unifiés" (genre Sane, gphoto, Livid, Linmodem, etc.), tu verras de quoi je veux parler. De plus, ceux qui donne leurs specs les donne au compte-goutte, et uniquement sur certains points du hard (par exemple, ATI et 3dfx restent muet sur le moyen de hard-décoder les mpeg2). Et encore, pas mal de hardware fonctionne uniquement parce que les chips sont relativement standard, pas parce que les constructeurs ont faits des drivers ou émis des specs.
C'est quand meme ennervant de *systematiquement* galérer (ou attendre qu'un autre le fasse) pour pouvoir faire fonctionner du matos sous pretexte qu'on n'a pas Microsoft. Et vu l'état d'avancement actuel de Linux, le nombre de driver déjà existant malgré ca, etc., c'est bien la preuve d'une mauvaise volonté généralisée.
[^] # Re: Cool mais
Posté par Guillaume GIROUD . Évalué à 1.
[^] # Re: Cool mais
Posté par Frédéric Lopez . Évalué à 1.
> appartient maintenant en majorite a nvidia, qui
> lui nous fait des beaux drivers...
Rassure moi, c'est une blague ?
Des beaux drivers bien propriétaires qui ont une facheuse tendance à planter sur toutes les TNT2 sur lesquelles je les ai essayés...
[^] # Re: Cool mais
Posté par Loic Jaquemet . Évalué à 1.
[^] # Re: Cool mais
Posté par Anonyme . Évalué à 0.
[^] # Re: Cool mais
Posté par Anonyme . Évalué à 0.
Peut-etre que les geforce vont plus vite, mais tant que les drivers ne seront pas opensource ils peuvent crever j'en veux pas.
[^] # Re: Cool mais
Posté par FRLinux (site web personnel) . Évalué à 1.
[^] # Re: Cool mais
Posté par Tab Tab . Évalué à 1.
Tab
[^] # Re: Cool mais
Posté par Tab Tab . Évalué à 1.
Tab
[^] # Re: Cool mais
Posté par Pierre Tramo (site web personnel) . Évalué à 1.
# Aie
Posté par Tab Tab . Évalué à 1.
Car du passage du 2.2 a 2.4, a vraiment plein de difference, sur les structures net_device,
et surtout sur les locks.
Mais bon je pense qu'il doit donner une base suffisante pour permettre de passer avec peu d'effort en 2.4.
Tab
[^] # Re: Aie
Posté par bmc . Évalué à 1.
Alors oui, les constructeurs ont du mal à donner leurs specs, mais quand ils le feront nous serons prêts ;)
Ce genre de livres est fait pour débuter dans le domaine concerné, puis pour avoir de plus amples informations rien ne vaut un bon prof et des docs sur le Web. Donc, l'adaptation au 2.4 devrait sans faire sans trop de casse une fois lancé.
[^] # Re: Aie
Posté par Pat Le Nain . Évalué à 1.
[^] # Re: Aie
Posté par Tab Tab . Évalué à 1.
en 2.4
Tab
[^] # Re: Aie
Posté par Loic Jaquemet . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.