Quand quelqu'un dit qu'il a «flashé» le firmware d'un appareil, je suis curieux de savoir ce que cela implique réellement.
- Le micrologiciel est-il simplement un binaire natif qui est stocké en mémoire et qui peut être interprété par le processeur de l'appareil (comme tout autre EXE sur un ordinateur)? Ou le micrologiciel est-il uniquement des données qui agissent comme entrée d'un programme immuable déjà codé en dur / câblé sur l'appareil?
- Si ce dernier exemple n'est pas un firmware, comment l'appelleriez-vous? Par exemple, supposons qu'un périphérique possède un binaire (
someapp.exe
) et que vous ne pouvez pas supprimer ou modifier ce binaire. Le binaire, lorsqu'il est exécuté, prend l'entrée d'une puce mémoire. Vous pouvez "flasher" les données sur cette puce, et donc affecter l'entrée / la configuration desomeapp.exe
celles-ci prendront effet lors de sa prochaine exécution. Si ce n'est pas un firmware, comment cela s'appellerait-il?
Réponses:
Comme souvent avec de telles définitions, nous sommes d'accord dans la plupart des cas, mais il n'y a pas de frontière vraiment ferme entre ce qui est un firmware et ce qui ne l'est pas. Le firmware est
Quant aux données interprétées par un interprète (firmware): cela n'est pas souvent fait dans un cadre professionnel, car cela rend le produit plus cher: plus de mémoire, de puissance CPU, etc. est nécessaire pour atteindre le même objectif final. Il est cependant parfois utilisé en milieu amateur, souvent avec un interpréteur Basic en flash, et une application Basic (tokenisée) stockée dans eeprom (ou dans Flash aussi). Vérifiez par exemple le PICAXE et les différents tampons Basic.
IMO dans un tel paramètre à la fois l'interpréteur de base et l'application de base doivent être appelés firmware.
Une utilisation intéressante d'un interpréteur de micrologiciel qui interprète le code stocké (qui devrait également être considéré comme un micrologiciel) est le démarrage de la XBOX 360. Cet excellent exposé le décrit en détail.
Ci-dessous, MSalters se demande si le code FPGA / les données de configuration doivent être considérés comme des micrologiciels.
Dans les aspects qui importent le plus (ce sont les informations qui peuvent être modifiées tard dans le processus de production, mais elles ne sont pas destinées à être modifiées à volonté par l'utilisateur final) les bits FPGA se comportent comme des micrologiciels. Cela rend la question de savoir s'il s'agit d'un firmware selon une définition théorique. Le point important est qu'il peut (et doit) être écrit, manipulé et géré comme un firmware. (Si ça marche et caquille comme un canard, est-ce un canard?)
Ne vous embêtez pas avec les définitions quand elles ne sont pas utiles. Est le firmware du microcode? La représentation est-elle importante? Le contexte est-il important? Les bits ROM sont-ils pour un micrologiciel IWM?
Le commentaire de Vaxquis à la question de OP m'a incité à lire l'article wiki auquel il renvoie. OMI, la définition du firmware qui y est donnée (mémoire persistante et code de programme et données qui y sont stockées) est gênante. IMO, les cartes stockées dans un système de navigation automobile sont des données, pas un firmware, peu importe comment elles sont stockées (selon le wiki, elles devraient être un firmware). Et les applications de votre iPhone ou téléphone Android sont des applications, pas des micrologiciels (selon le wiki, elles devraient également être des micrologiciels).
la source
Le micrologiciel est un code de programme qui est stocké dans une mémoire non volatile, telle qu'une mémoire flash. Le terme est le plus souvent utilisé en relation avec les systèmes embarqués. Il peut être sur la même puce que le processeur ou sur un appareil séparé.
la source
Je pense que les deux options sont en quelque sorte correctes, en regardant simplement le microprocesseur à différents niveaux d'abstraction. Ce que vous appelez votre binaire immuable serait le matériel lui-même, qui est assez limité dans ce qu'il peut faire. Récupérer l'adresse de l'instruction 0x0000, décoder l'instruction, récupérer l'adresse / le registre fourni, exécuter, incrémenter le compteur d'instructions. C'est le pipeline du microprocesseur, et vous ne pouvez pas le changer. Vous contrôlez ce que fait le microcontrôleur en stockant des instructions en mémoire, qui sont ensuite lues séquentiellement. Donc, fondamentalement, oui, le firmware n'est que des données d'entrée pour un programme immuable, à un faible niveau d'abstraction. Habituellement, cependant, il est plus facile d'imaginer le micrologiciel comme un programme spécial qui contrôle le microprocesseur car, conceptuellement, c'est plus facile de cette façon.
la source
C'est en fait les deux.
Un exemple de micrologiciel est le BIOS du PC, une section du BIOS est exécutable, mais d'autres parties du BIOS lui-même sont en fait des données, en particulier dans des tableaux à afficher pour énumérer les différentes fonctions d'une ROM du BIOS, quel que soit le type de technologie sur lequel elle est basée. sur. Souvent, les données sont stockées dans une autre mémoire flash, une batterie ou une mémoire RAM à condensateur, soit CMOS SRAM ou une autre technologie de puce de mémoire compatible.
Firmware, est un terme générique utilisé pour la mémoire immuable / non volatile, il est là et accessible selon le cycle d'alimentation tant qu'il n'y a rien de mal électriquement avec le circuit ou dans le cas d'un cycle de programmation bloqué, pour EEPROM ou Flash ROMs.
Le micrologiciel, par définition, est le niveau d'accès le plus bas, qui initialise, teste le matériel que vous avez installé dans votre système ou les composants intégrés et fournit des routines de bas niveau (parfois considérées comme des appels de fonction BIOS) dont votre système d'exploitation a besoin pour pouvoir utiliser les composants dans votre système. Dans l'ancien temps, le BIOS ou le système de sortie d'entrée de base comprenait également un langage de programmation appelé "BASIC", comme le Commodore 64 et d'autres ordinateurs personnels des années 1970, bien sûr, il y avait des ordinateurs plus anciens sur lesquels BASIC était intégré. également par des informaticiens professionnels. Si vous entendez parler d'une ROM de caractères ou de symboles qui est une forme de données pures pour la ROM exécutive ou de programme pour que le système accède à cette ROM de caractères et recherche des caractères dans une séquence ou vide la puce entière dans la RAM pour travailler avec elle Là.
Les programmeurs PROM, EPROM, EEPROM et Flash par défaut gravent le firmware sur une puce comme avec le suffixe .hex ou .bin, qui sont des formats similaires, cela dépend de votre application que vous utilisez pour envoyer à la puce, le firmware.
En outre, il existe des fichiers blob de micrologiciel, ce sont des exécutables sous forme de bibliothèques et de routines qui sont chargés au moment de l'exécution, un bon exemple en est les pilotes de matériel sans fil, ils contiennent suffisamment de code pour exécuter tout le matériel de ces cartes via votre Système d'ordinateur. La seule différence est que la carte et le firmware USB ne sont pas réellement stockés sur eux mais sur votre disque dur et chargés en mémoire. Il fonctionne essentiellement comme une couche et un filtre de service de traduction. C'est à la fois des données et du code.
Ma base est que j'écris en fait des BIOS pour d'autres ordinateurs et systèmes intégrés (par exemple, un micrologiciel sans fil, qui est en fait chargé au démarrage de votre système d'exploitation, puis commence à charger les pilotes matériels de bas niveau, qui incluent également le micrologiciel d'exécution) ). On l'appelle firmware car il ne change jamais ses routines, sauf si vous obtenez une mise à jour du fabricant, puis la mise à jour écrase l'ancienne. Agit comme le nouveau firmware dans ce cas jusqu'à ce que de nouveaux éléments soient mis à jour, sinon, c'est le firmware que vous utilisez lorsque votre système d'exploitation se charge.
Je suis d'accord, il ne devrait pas être appelé firmware car il n'est pas techniquement sur la puce en tant que solutions permanentes et nécessite un outil et une application spéciaux pour mettre à jour le firmware (dans le cas des anciens BIOS par rapport à ceux des mémoires flash).
Vous avez d'autres questions, je serais heureux d'y répondre pour vous.
la source
Le micrologiciel est un code qui a été créé dans une sorte d'environnement de développement, tout comme le code logiciel, mais il se résume ensuite au code machine afin que le processeur puisse le comprendre. Si vous videz la mémoire d'un microcontrôleur ou d'une autre puce, vous remarquerez qu'il ne ressemble en rien au code C ou à ce que nous programmons.
Vous ne programmez donc pas de fichier .EXE, car il s'agit d'un programme compilé à exécuter dans une sorte d'environnement de système d'exploitation. Vous programmerez généralement un .hex, ou peut-être un .elf, cela dépend vraiment du périphérique que vous programmez, mais cela n'a pas d'importance parce que vous n'êtes pas concerné par les types de fichiers puisque votre compilateur compilera plutôt le codez-le dans le code machine et placez-le dans le flash sur les puces ou dans le schéma de stockage qu'il possède.
Le micrologiciel est généralement immuable dans la mesure où les conditions environnementales doivent être programmées. Vous ne pouvez pas modifier le code du micrologiciel et le laisser, vous devez effectuer le changement, le compiler et re-flasher l'appareil.
la source
Le micrologiciel est un terme générique qui est généralement utilisé pour spécifier quelque chose qui se situe à mi-chemin entre le monde logiciel et le monde matériel.
Le matériel est difficile à changer. Le logiciel est facile à changer. Le firmware n'est pas aussi difficile à changer que le matériel, mais il est plus difficile à changer que le logiciel.
Il pourrait être utilisé pour discuter du code exécutable, des données ou des informations de configuration (comme dans FPGA / PLD / etc) qui peuvent être modifiés.
la source
Pour expliquer plus en détail ce qu'est le firmware.
Le micrologiciel est un code qui s'exécute sur du matériel très spécifique, ce qui signifie que ses codes opérationnels sont spécifiques au matériel pour lequel il est écrit, il peut s'agir d'une famille de puces ou d'interfaces ou destiné à un seul élément.
C'est essentiellement ce que fait le firmware;
A des instructions câblées pour un processeur donné à entreprendre et à exécuter, cela s'appelle un "bootstrap". Quels sont les ordinateurs les plus démarrables dans leur BIOS?
Initialisez ledit matériel via les instructions du firmware.
Charger / monter la table de saut.
Rendre accessible l'accès aux registres d'un appareil donné.
Remettez le contrôle à la routine de sortie une fois que le BIOS a été utilisé après un démarrage à froid (hors tension) ou à chaud (un redémarrage normal ou une broche de réinitialisation a été utilisé).
La plupart des BIOS (micrologiciels) sont conçus pour un chipset spécifique à l'esprit et extraient toutes les fonctions de ceux-ci et étoffent toutes les données que quelque chose pourrait être attaché à une ligne de bus donnée dans un ordinateur ou un périphérique intégré.
Les disques durs sont un bon exemple d'une solution de stockage qui est en soi un périphérique embarqué, qui a également un BIOS et une forme de firmware sur une puce.
Essentiellement, tout micrologiciel est un tas d'instructions qu'un autre processeur fait pour obtenir des fonctionnalités d'un tel appareil. C'est un logiciel qui est chargé dans un appareil physique, en cas de coupure de courant, il sera là lorsque l'appareil retrouvera du courant.
Techniquement, vous pouvez utiliser n'importe quel langage de programmation ou de script pour créer des fichiers binaires. Il vous suffit de savoir comment fonctionne le processeur que vous allez cibler, les codes opérationnels réels, le registre interne (sans parler de leur destination), d'apprendre les systèmes de nombres binaires et hexadécimaux et comment créer un assembleur qui peut enregistrer votre code en langage assembleur. Une fois cela terminé, vous pouvez charger un autre programme de le convertir en binaire, puis l'enregistrer en tant que fichier .bin ou .hex.
Si vous voulez savoir comment Ada, C, C ++, D et d'autres langages de programmation convertissent leurs "jetons" qui sont leur code natif qui est découpé en pseudo-codes d'opération en langage machine. Il y a plusieurs livres que je vous recommande de lire, certains sont assez élémentaires et sont centrés sur des processeurs très spécifiques mais c'est bon à apprendre. Je vais vous donner un livre pour le moment, parce que je ne veux pas vous noyer, vous ou quiconque, en lisant ces informations.
C'est l'introduction à la programmation en langage assembleur sur PC au tout début. Il parle de la gestion des interruptions (interruptions matérielles et logicielles) et de nombreux autres sujets, il explique plus en détail ce que fait réellement un BIOS et comment l'utiliser.
Contrairement au langage d'assemblage et au langage machine, vous pouvez vous en sortir avec beaucoup plus en Ada, C, C ++, D, si vous ne connaissez pas les spécificités de votre matériel. En assembleur et en langage machine, si vous ne savez pas ce que vous faites, quelque chose de mauvais se produira ou le code ne fonctionnera pas. Je préfère ce dernier cas, ne fonctionne pas contre quelque chose de mauvais.
Remarque: À propos de la réponse ci-dessus, à propos de la RAM flash, il n'y a rien de tel, il y a des ROM flash mais pas de RAM flash. Les mémoires flash ROM contiennent le micrologiciel, les RAM qui sont sauvegardées par batterie ou condensateur, ou ont une autre mémoire flash flash qui contient des paramètres pour les options du BIOS que vous avez définies.
Il y a un code dans le firmware sur la façon de stocker ou d'effacer la mémoire de données (par rapport à la mémoire du programme / firmware lui-même), s'il s'agit d'une ROM flash ou d'une puce RAM. Sur les PC, si votre mot de passe BIOS est altéré ou si vous ne vous en souvenez pas (ou si quelqu'un vous embrouille), vous pouvez ouvrir le boîtier et trouver les deux broches appelées "CMOS CLR / CMOS CLEAR / BIOS RESET / BIOS RST", court-circuiter ces deux broches ensemble efface également la mémoire, tout ce que vous devez faire après cela est d'appuyer sur le bouton de réinitialisation, lorsque les deux broches sont toujours en court-circuit. Cela efface le mot de passe et vous permet un accès complet au BIOS de votre PC (en supposant que vous avez un ordinateur plus récent à partir des années 1990).
Sur les nouveaux PC, vous avez une mémoire flash pour le firmware et vous avez une SRAM alimentée par batterie (n'a pas besoin d'être constamment actualisée comme les puces DRAM, elle est basée sur une technologie plus ancienne).
la source
En termes de systèmes embarqués, le firmware clignotant signifie que vous avez effacé la ROM d'un microcontrôleur à l'aide d'un périphérique clignotant et que vous l'avez réécrite avec un nouveau code. Ce micrologiciel à flasher est au format HEX.
En termes de terminologie liée au système d'exploitation, il est également flashé dans la ROM, mais cette fois, il est de la responsabilité d'un système d'exploitation de le flasher lorsqu'une mise à jour arrive.
la source
Je crois que l'utilisation de la perspective "historique" pourrait donner une compréhension plus basique de ce qu'est le firmware .
Cela commence d'abord par «matériel». Pour fournir / créer une fonction donnée, on pourrait utiliser des tubes, des relais, des transistors et des CI. Vous utiliseriez un certain nombre de ces composants et vous créeriez un appareil qui exécutait la fonction requise. Cela a été considéré comme un "matériel" parce que si vous vouliez (ou aviez besoin) de changer la fonction, vous auriez besoin de dessouder des fils, des prises, etc. et c'était "difficile" à faire. Ainsi, cette méthode d'implémentation d'une fonction est devenue connue comme utilisant du matériel. L'utilisation d'un processeur, de la RAM et du code est devenue une autre méthode de création d'une fonction et est devenue connue sous le nom de "logiciel"apporter des modifications à la conception. "Cependant, il y avait aussi un besoin (principalement des fabricants), de terminer le plus tôt possible une conception, mais d'être capable de faire des modifications de conception" de dernière minute "aussi faciles et rentables que possible. . L'utilisation de ROM a permis cette flexibilité jusqu'au "premier envoi". Les EEPROMS permettent des changements même après "premier envoi" (sur le terrain). Le code nécessaire / utilisé pour les ROM et les PROM a été nommé "firmware" . "
la source