Un firmware, parfois appelé micrologiciel ou microcode, ou plus rarement logiciel interne ou logiciel embarqué, ou encore microprogramme, est un ensemble d'instructions et de structures de données qui sont intégrées dans du matériel informatique (ordinateur, photocopieur, automate (API, APS), un disque dur, un routeur, un appareil photo numérique, etc.) pour qu'il puisse fonctionner.
Origine du terme
Le mot anglais « firmware » est issu de firm (« résistant » ou « ferme », en anglais) et de software (logiciel, programme informatique). Firm est un état intermédiaire entre soft (« doux ») et hard (référence au hardware ou matériel informatique). Le premier firmware était un microcode et l'usage a étendu le terme à toute forme de logiciel de base, stocké dans une mémoire morte résistant aux coupures d'électricité.
Description
Le firmware a été créé pour permettre une plus grande fle**bilité du hardware afin de lui permettre d’évoluer en permettant d’intégrer de nouvelles fonctionnalités, non prévues initialement, sans avoir besoin de revoir complètement le design du hardware.
La mémoire dans laquelle réside le firmware peut être :
non volatile, stockant le programme et les données même lorsqu'elle n'est pas alimentée en électricité, c'est le cas le plus courant, avec des ROM, des EPROM ou une mémoire flash;
volatile, donc effacée lorsqu'elle n'est plus alimentée en électricité. Dans ce cas, le firmware doit être chargé par un pilote à la mise sous tension, ce qui est peu pratique.
Dans la plupart des cas, ce logiciel gère le fonctionnement interne du système électronique.
D'une manière générale, le firmware cumule les avantages du logiciel, qu'il est possible de modifier, et du matériel, plus efficace. De son côté, le firmware interagit avec des composants matériels qui ne peuvent plus être modifiés une fois fabriqués, ce qui réduit la nécessité de le mettre à jour.
On peut noter que :
Le firmware des ordinateurs (BIOS ou EFI) est exécuté par son (ou ses) CPU interne (ex : code de gestion de la carte mère, d'une carte vidéo ou SCSI) ;
Le firmware interne à chaque périphérique est exécuté par le matériel qu'il contient (ex : lecteur DVD, IDE ou SCSI, employant des micro-contrôleurs ou circuits de diverses familles).
Cependant, les deux cas précédents sont parfois réunis, par exemple, lorsque la ROM d'un périphérique contient une partie du BIOS de l'ordinateur ainsi que le firmware destiné à la gestion de ce périphérique. Accessoirement, cela permet de mesurer le degré d'indépendance d'un périphérique vis-à-vis du type de machine hôte car toute extension munie d'un BIOS pour PC n'est utilisable que sur une machine de ce type alors que celles qui n'emploient qu'un firmware sont indépendantes de la machine hôte. C'est par exemple le cas des lecteurs/graveurs CD/DVD IDE, qui sont conformes à la norme ATAPI et donc fonctionnent sur toute machine IDE (PC, Mac…)).
Mise à jour
L'utilisateur final n'a, d'ordinaire, pas accès directement au firmware mais peut parfois le modifier par l'installation de mises à jour pour profiter d'améliorations ou de corrections de bug. Pour cela il faut que le firmware réside dans certains types de mémoires ROM « reprogrammables », le plus souvent il s'agit d'EEPROM ou, depuis le milieu des années 1990, de mémoire flash (c'est-à-dire des EEPROM rapides).
Sécurité
Les firmwares sont susceptibles d'être la cible d'actions malicieuses visant à rendre l'appareil inopérant ou à l'utiliser afin de s'introduire dans un réseau. Durant l'EUsecWest 2008, Rich Smith a mis en avant la possibilité de lancer une Attaque par déni de service permanent via une faille de sécurité sur les systèmes de mises à jour des firmwares des équipements faibles.
Si une telle faille peut être exploitée afin de déployer une attaque par déni de service permanente, il est alors envisageable d'exploiter cette faille pour introduire une backdoor et s'introduire dans le système d'information. Ce sont souvent des équipements constamment en fonctionnement qui sont la cible de telles attaques.
Exemples
Les BIOS
Les BIOS présents dans les ordinateurs de type PC sont des firmwares.
EFI
Les firmwares EFI (de l'anglais Extensible Firmware Interface) sont amenés à remplacer les BIOS sur les futures cartes mères des PC car ils possèdent une simplicité de programmation que n'a pas le BIOS.
Son inconvénient étant de rajouter une couche supplémentaire entre le hardware et l'utilisateur, compensée par une plus grande rapidité des processeurs et des mémoires.
Autres exemples
Open Firmware est un firmware présent dans les ordinateurs de type Macintosh basés sur un processeur PowerPC ;
Les programmes qui gèrent les composants d'un téléphone mobile, d'un lecteur de DVD, d'un baladeur MP3 ou d'une console de jeux ;
La gestion de l'injection électronique d'un moteur à explosion.
Un programme stocké dans une clef USB équipée d'un microprocesseur
Un programme stocké sur une machine à laver gérant les différents programmes
Le programme gérant la couche réseau d'une imprimante
Le programme faisant fonctionner la machine à voter ESF1
韧体(firmware),是一种嵌入在硬件设备中的软件。通常它是位于特殊应用集成电路(ASIC)或可程序逻辑设备(PLD)之中的闪存或EEPROM或PROM里,有的可以让用户更新。可以应用在非常广泛的电子产品中,从遥控器、计算器到电脑中的键盘、硬盘,甚至工业机器人中都可见到它的身影。
顾名思义,韧体的所在是位于软件和硬件之间的。像软件一样,他是一个被电脑所运行的程序。然而它是对于硬件内部而言更加贴近以及更加重要的部份,而对于外在的世界而言较无重要的意义。
起源
「韧体」这个名词是源自于为了如AMD29xx之类的微进程所写之微程序。后来它被当成取代一个低价的微处理器里的一部分功能。 实际而言,一般硬件可以透过对韧体的升级提升其性能及可靠性。在众多的有规律的韧体升级中刻录设备是其中之一,比如说光盘刻录器(DVD, CD, HD DVD, Blu-ray),随着媒体技术的日新月异,韧体的更新可以确保硬件保持在最新的状态以及确保其兼容性。
韧体使用的演进
韧体已经演进为一个硬件设备当中的可程序化的内容,比如说韧体可能包含有一处理器之机械码或者固定功能之设备,或是闸道数组或者可程序化之逻辑设备之设置。
韧体的一个一般性的特色是它可以被在生产后或用电子的方式或者用取代保存媒介的方式更新。
韧体可以—但并非必需—暴露出一个可由外界连接的接口。比如说在某些调制解调器的实作中,韧体并非可以直接访问,但却是由硬件以及韧体所组成回应主机的一部分。
韧体原本被存放在于ROM中,然而价格以及性能的需求已经让原件供应商妥协于其他的替代方案,包含了非挥发性的媒体比如说EEPROM以及闪存或是SRAM的解决方案。
标准
联邦标准1037C(Federal Standard 1037C)
MIL-STD-188(MIL-STD-188)
可扩展固件接口
范例
个人电脑中的BIOS
升阳电脑和苹果电脑的电脑中使用的Open Firmware
在唯读内存中的电脑程序(硬件的设置通常用软件的方式来表示)
在PROM中,这些程序只可以被特别的外部硬件来更改,而不能经由应用程序更新
PlayStation Portable系统软体