• [^] # Re: Driver ou Firmware?

    Posté par (site web personnel) . En réponse à la dépêche Nouvelle version 2.6.27 du noyau Linux. Évalué à 7.

    Les périphériques (imprimantes, modems, etc.) contiennent le plus souvent des CPU. Des petits CPU, mais des CPU quand même. Qui dit CPU dit programme, qui se charge de dialoguer avec le PC et de surveiller et coordonner le reste du matériel contenu dans le périphérique. Par exemple dans le cas d'une imprimante, il faut lancer les moteurs dans le bon ordre, mettre l'encre au bon moment, vérifier que tout marche bien, etc. Ces programmes sont très liés au matériel : seuls ceux qui ont conçu le matériel sont à même de les créer (ou presque). Comme ces programmes sont à mi-chemin du hardware et du software, on les a baptisé firmware (respectivement dur, mou, ferme, pour ceux qui ont du mal avec l'anglais). Et comme ces programmes sont souvent petits par rapport à ceux que l'on trouve sur les PC, en français certains ont choisi des les traduire par micrologiciel.

    Au tout début, les firmware étaient gravés dans une ROM. S'il y avait un bug, on ne pouvait rien y faire. Avec la complexité croissante des périphériques et des firmware, la possibilité de les mettre à jour est devenue très recherchée. Sont alors apparues les ROM réinscriptibles, et la possibilité de "flasher" les firmware, c'est à dire d'inscrire une nouvelle version du firmware dans la ROM, opération relativement risquée à ne pas interrompre en plein milieu, bien entendu. Enfin, certains se sont dit qu'avec la vitesse accrue des connexions aux périphériques (USB, etc.), il était plus simple et plus fiable d'envoyer le firmware au périphérique lors de sa connexion à l'ordinateur. C'est bien sûr le pilote du périphérique qui s'en charge. Comme ça, en cas de bug, le pilote peut être mis à jour (facilement, grâce aux fonctionnalités de mise à jour automatique des systèmes d'exploitation modernes), et le périphérique utilisera automatiquement une version corrigée du firmware dès qu'il sera reconnecté ou redémarré.

    Maintenant tu devrais mieux comprendre ce qu'il se passe au niveau de Linux. Les firmwares dont on parle dans l'article ne sont pas vraiment "dans" le noyau, ils sont juste stockés sur le disque dur sous forme de fichiers binaires, prêts à être uploadés par le pilote Linux qui-va-bien quand le matériel qui-va-bien est branché sur le PC. Auparavant, l'endroit où ces fichiers sont stockés n'était pas standardisé : chaque pilote faisait comme il voulait, il y en avait un peu partout. Maintenant, il y a un répertoire standard dans lequel tous les firmware sont placés, c'est plus propre.

    Enfin, il faut savoir que la plupart des firmwares sont fournis sans code source, vu qu'ils contiennent plein de détail intimes sur la manière dont le périphérique est conçu. Les fabricants n'ont aucune envie de diffuser leurs secrets de fabrication. En général d'ailleurs les firmwares ne sont même pas fournis pour Linux, les programmeurs les récupèrent au fond des pilotes Windows officiels du constructeur. De nombreuses personnes préféreraient disposer du code source de toute leur informatique, et n'apprécient donc pas les firmware "purement binaires", également dits "propriétaires". (Dans certains cas d'ailleurs, des programmeurs se sont aventurés à créer leur propre firmware pour leurs périphériques.)