Tout le monde a entendu les termes matériel informatique et logiciel informatique - le matériel est les choses physiques sur lesquelles nous exécutons des programmes, et les logiciels sont les programmes eux-mêmes.
Le matériel est "dur" parce qu'il est difficile à modifier - pour apporter un changement à la conception d'un circuit, il faut généralement une nouvelle disposition d'une carte de circuit imprimé (PCB), la fabrication de la carte, l'assemblage de toutes les pièces sur la nouvelle carte, et des tests avant qu'un programme puisse fonctionner dessus.
Le terme logiciel a été inventé en 1953 par Paul Niquette, et utilisé pour la première fois sous forme imprimée par John Tukey en 1958. (Tukey a également inventé le mot "bit" pour désigner un chiffre binaire.)
Les logiciels sont "soft" parce qu'on peut apporter quelques modifications à un programme informatique, ce qui, à l'époque de Niquette et Tukey, signifiait des modifications à un jeu de cartes perforées, et réexécuter le programme sans avoir à modifier l'ordinateur. (Dans les années 1940, des ordinateurs comme Colossus et ENAIAC étaient reprogrammés en modifiant le câblage de l'ordinateur à l'aide d'interrupteurs et de fiches.)
Aujourd'hui, le logiciel est associé à des programmes qui sont stockés sur un certain support de stockage de masse, comme un disque dur ou un SSD, puis chargés dans la RAM pour être exécutés. On pourrait également l'appliquer aux applications qui sont téléchargées depuis le Cloud, puis stockées sur votre smartphone ou votre tablette dans une mémoire Flash, et à nouveau téléchargées dans la RAM pour être exécutées.
En 1971, le premier microprocesseur - le 4004 - a été inventé. Les programmes étaient stockés et directement exécutés à partir de la mémoire morte (ROM) au lieu d'être chargés depuis un autre support. Au départ, la seule façon de modifier le programme était de créer un nouveau jeu de masques pour la puce ROM. Plus tard, les ROM programmables, appelées PROM, ont été inventées, suivies par les ROM programmables effaçables (EPROM) utilisant la lumière UV, et enfin les ROM programmables effaçables électriquement (EEPROM), qui sont liées aux mémoires Flash d'aujourd'hui.
Les microcontrôleurs intégrés utilisant la mémoire Flash pour contenir leurs programmes peuvent être mis à jour en place en utilisant ce qu'on appelle la programmation série en circuit (ICSP). Les programmes sont appelés firmware parce qu'il est plus facile de les mettre à jour que d'effectuer des modifications matérielles, mais pas aussi facile que de simplement charger un programme à partir d'un disque dur, et les programmes sont non volatils.
Mise à jour du firmware sur une carte de développement à l'aide d'ICSP
Ascher Opler a inventé le terme "firmware" dans un article de Datamation de 1967. À l'origine, il désignait le contenu d'une mémoire de contrôle inscriptible (une petite mémoire spécialisée à haute vitesse), contenant le microcode qui définissait et mettait en œuvre le jeu d'instructions de l'ordinateur. Il n'était pas composé d'instructions machine du CPU, mais de microcode de niveau inférieur impliqué dans la mise en œuvre des instructions machine.
Ce n'est qu'après l'invention du microprocesseur (et plus tard du microcontrôleur) que le micrologiciel a commencé à être associé aux programmes qui s'exécutent sur ces dispositifs
Dans un PC de bureau ou portable, qui exécute des logiciels à partir d'un disque dur ou d'un SSD, etc, il y a encore un peu de micrologiciel situé dans le BIOS de l'ordinateur, qui gère le processus de démarrage de la machine, en chargeant le système d'exploitation dans la mémoire vive et en lui donnant ensuite le contrôle.
C'est à ce moment-là que le micrologiciel a commencé à être associé aux programmes exécutés sur ces appareils.