un firmware, si j’ai bien compris, est un programme qui se trouve « déjà » dans le matériel, et qui permet de faire fonctionner ce matériel.
Donc si le firmware se trouve « déjà » dans le matériel, pourquoi des fois on a besoin de télécharger et d’installer un firmware (via un dépôt debian par exemple) pour faire fonctionner le matériel ?
2ème question, est-ce que c’est la commande dmesg qui permet de savoir si un firmware est manquant pour faire fonctionner le matériel ?
De nombreux appareils ont besoin d’un micrologiciel pour fonctionner. Historiquement, le microprogramme était intégré dans la mémoire ROM ou Flash de l’appareil, mais de plus en plus souvent, une image de microprogramme doit être chargée dans la RAM de l’appareil par un pilote d’appareil lors de l’initialisation de l’appareil.
Quelques images de microprogrammes sont des logiciels libres et des sources ouvertes, mais malheureusement presque toutes ne sont pas libres, ce qui signifie que Debian ne peut pas les inclure normalement dans l’archive sous main ou contrib.
Concernant la commande dmesg, elle affiche les messages liés au noyau. Je dirai donc que oui si le firmware est lié au noyau.
Maintenant, ce n’est plus dans la rom du périphérique, car c’est maintenant à l’OS de fournir le firmware.
Je pense que c’est parce que comme les OS sont programmés différemment, un même périphérique doit avoir un firmware spécifique pour chaque OS : un firmware linux, un firmware microsoft, un firmware macOs, etc…
Voici quelques précisions au sujet des microprogrammes. Historiquement, on employait une « ROM » puis de la Flash qui présentait l’avantage de pouvoir être reflashée (reprogrammée électriquement) pour les mises à jour. On emploie à présent sur certains systèmes à très haute performance de la RAM qui présente des vitesses bien plus rapides. Le problème c’est que ce composant perd son contenu à la mise hors tension. Pour contourner cet inconvénient majeur le microcode en mémoire Flash série est transféré automatiquement dans la RAM à chaque boot. Ce principe est employé aussi avec les gros FPGA. Ce transfert est généralement effectué par un premier microcode de très petite taille enfoui dans la flash d’un microcontrôleur. Ce premier micro code dédié exclusivement au transfert n’a pas vocation à être reprogrammé.