# Firmware

Unter Firmware (englisch firm ‚fest‘) versteht man Software, die in elektronischen Geräten eingebettet ist und dort grundlegende Funktionen leistet. Sie nimmt eine Zwischenstellung zwischen Hardware (also den physischen Anteilen eines Gerätes) und der Anwendungssoftware (den ggf. austauschbaren Programmen eines Gerätes) ein. Sie ist zumeist in einem Flash-Speicher, einem EPROM, EEPROM oder ROM gespeichert und durch den Anwender nicht oder nur mit speziellen Mitteln bzw. Funktionen austauschbar. Der Begriff leitet sich davon ab, dass Firmware funktional fest mit der Hardware verbunden ist, was bedeutet, dass das eine ohne das andere nicht nutzbar ist.
Als Firmware bezeichnet man sowohl die Betriebssoftware diverser Geräte oder Komponenten (z. B. Mobiltelefon, Spielkonsole, Fernbedienung, Festplatte, Drucker) als auch die grundlegende Software eines Computers, die notwendig ist, um den Betriebssystemkern des eigentlichen Betriebssystems laden und betreiben zu können. Zur Unterscheidung wird letztere jedoch meist als Systemfirmware bezeichnet.

## Verwendung

Firmware wird beispielsweise verwendet in Festplattenrekordern, DVD-Brennern, DVD-Playern, neueren Fernsehgeräten, Haushaltsgeräten, Digitalkameras und ihren Wechselobjektiven, Empfängern für Digital Radio, Computerteilen (Grafikkarten, Laufwerken usw.) und vielen anderen elektronischen Geräten. Sie befindet sich auch in eingebetteten Systemen wie ADSL-Modems, Bordcomputern oder Mobiltelefonen. Im modernen Automobil befinden sich typischerweise 15 bis 90 Steuergeräte (z. B. ABS, ESP, ACC, Airbags, Motorsteuerung, Tacho, Radio, Klimaanlage, Einparkhilfe oder Fensterheber), von denen jedes eine eigene Firmware haben kann.
In der Regel wird der programmierbare Inhalt von Mikrocontrollern als Firmware bezeichnet.

## Unscharfe Definition

Es ist grundsätzlich möglich, jegliche Funktionalität allein in Hardware abzubilden, und diese Hardware wäre ohne jegliche Software funktionstüchtig und bedienbar. Frühe Videospiele wie Pong bestanden beispielsweise aus Schaltkreisen, die das jeweilige Spielprinzip direkt umsetzten, ohne dass Software im Spiel war. In der Praxis hat sich jedoch ab einer gewissen Komplexität die Software als Abstraktionsschicht zwischen Mensch und Hardware als äußerst nützlich erwiesen. Software, die grundsätzliche Funktionen als Abstraktionsschicht abbildet und diese damit dem Benutzer zur Verfügung stellt, nennt man im Allgemeinen Betriebssystem. Jedoch ist auch der Begriff Betriebssystem bereits ungenau; man kann darunter z. B. nur den Kernel eines Betriebssystems verstehen, oder auch den Kernel mitsamt Softwarepaketen. Der Begriff Firmware bezeichnet grundsätzlich eine Software. Dies kann sein:
* ein komplettes Betriebssystem, z. B. OpenWrt. Der Grund für die Bezeichnung dieser Software als Firmware und nicht als Betriebssystem ist, dass die Speicherung auf Flash-Speichern erfolgt, deren Speicherkapazität verhältnismäßig gering ist;
* Software, die einen Teil der Hardware abbildet, z. B. die Firmware einer Grafik-, Netz- oder einer WLAN-Karte
* Software, die Einstellungen in Form von (verschlüsselten oder nicht verschlüsselten) Parametern enthält, z. B. die Firmware einer Codier-Karte
* die komplette Software eines Gerätes (die in der Firmware abgebildet ist): Drucker, Haushaltsgeräte, Kraftfahrzeuge und andere
* die Erfüllung aller Aufgaben eines proprietären Betriebssystems; zusätzliche Software kann betrieben werden, z. B. Smartphones, Spielkonsolen, Storage Server und andere
* die Zurverfügungstellung hardwarenaher Funktionen in einem Gerät, die das Laden und Starten eines gesonderten Betriebssystems von einem Datenträger erlauben. Beim PC wird diese Firmware BIOS genannt. Das Betriebssystem kann Firmware-Funktionen auch direkt nutzen.
Ursprüngliche Bedeutung: Der Begriff Firmware bezeichnet ein festes Bindeglied zwischen Hardware und Software, wie die Namenswahl des Begriffes (firm = fest) nahelegt.
* Es gibt Firmware, die frei von ausführbarem Code ist und zur Konfiguration von spezieller Hardware (CPLDs, Gate-Arrays) benutzt wird. Nachdem die entsprechenden Chips beim OEM anwendungsspezifisch programmiert (früher gebrannt) sind, ist aus der Firmware de facto Hardware geworden. Bei dieser Art von Firmware sind End-Anwender-Updates nicht üblich, da eine fehlerhafte Konfiguration im schlimmsten Fall (Kurzschluss der Versorgungsspannung) zur sofortigen Zerstörung des Gerätes führen kann. Sie wird in Abgrenzung zu Maschinensprache auch Configware genannt.
* Aus der Sicht eines Hardware-Designers ist ein BIOS ein basales Betriebssystem und somit eher als Software zu betrachten. Die Firmware in einem Computer konfiguriert die Hardware (Glue-Logic bzw. Chip-Set) so, dass das BIOS von einem Datenspeicher (ROM) überhaupt erst gelesen werden kann.

## Systemfirmware

Für die Firmware eines Computersystems hat sich der Begriff „BIOS“ etabliert, benannt nach der Systemfirmware des IBM Personal Computers von 1981. Aufgrund des großen Erfolgs dieser Plattform, die in den 1980er bis 2000er Jahren als IBM-PC-kompatible Computer bekannt wurde und die erfolgreichsten PCs überhaupt sind, findet sich auch bei Systemfirmwares anderer Plattformen manchmal die Bezeichnung „BIOS“ (z. B. AlphaBIOS, OpenBIOS). Bei der modernen, aus den IBM-PC-Kompatiblen entstandenen Plattform – oft einfach mit „PC“ bezeichnet – wird die Systemfirmware UEFI oft ebenfalls mit UEFI-BIOS bezeichnet, obwohl UEFI als Nachfolger des BIOS auf der PC-Plattform keine zum originalen PC kompatible Systemfirmware mehr ist.

## Aktualisierung von Firmware

Meist ist Firmware auf einen Festwertspeicher geschrieben und kann folglich nur durch den Austausch entsprechender Bauteile aktualisiert werden. Bei aktuellen Geräten ist es aber immer häufiger möglich, die Firmware auf Softwareebene auszutauschen. Flash-Speicher beziehungsweise EEPROMs können über spezielle Verfahren gelöscht und neu beschrieben werden. Dieser Vorgang wird umgangssprachlich „Flashen“ oder „PDRen“ genannt.
Die Aktualisierung kann der Fehlerbehebung sowie der Änderung von Funktionen dienen. Schlägt die Aktualisierung – zum Beispiel durch eine Unterbrechung der Stromzufuhr während des Schreibens – fehl, kann das Gerät unbrauchbar werden: Wenn die elementaren Funktionen zur Aktualisierung der Firmware selbst gelöscht und nicht vollständig erneuert werden, kann eine funktionsfähige Firmware möglicherweise nur noch mit speziellen Hilfsmitteln durch den Hersteller installiert werden.
In seltenen Fällen ist die Firmware von Computer-Zubehörteilen nicht im Gerät selbst dauerhaft gespeichert, sondern wird während des Bootvorganges oder beim Einstecken des Gerätes in einen RAM-Baustein, der sich im Gerät befindet, geschrieben. Eine Aktualisierung ist hierbei meist extrem einfach, da die Firmware einfach als Datei im lokalen Dateisystem des Rechners abgelegt ist und durch Überschreiben der Datei aktualisiert werden kann. Diese Variante ist insbesondere bei WLAN-Karten (PCI oder PCMCIA), WLAN-Adaptern (USB) sowie dem Microcode in modernen Mikroprozessoren häufig anzutreffen. Der Linux-Kernel nutzt diese Methode, unter anderem bei Grafikkarten, um freie oder angepasste Firmware in Geräte laden zu können. Bei vielen Linux-Distributionen kann man Firmware für Geräte (zum Beispiel WLAN-Chips, Grafikkarten) über das Paketmanagementsystem installieren.
Eine weitere Möglichkeit zur Aktualisierung von Firmware sind sog. Over-the-Air-Updates, welche über die Funkschnittstelle der Endgeräte durchgeführt werden.
Firmware-Updates können neben Funktionserweiterungen und Sicherheitsverbesserungen auch einen effizienteren Betrieb von Hardware zur Folge haben (Siehe auch Green IT). In größeren IT-Landschaften haben sie daher nicht zu vernachlässigende ökonomische Effekte.

## Ursprung des Wortes

Der Begriff „Firmware“ wurde von Ascher Opler 1967 in einem Artikel in der Zeitschrift Datamation geprägt. Ursprünglich wurde damit der Microcode im beschreibbaren Mikroprogrammspeicher eines Mikroprozessors in einem Computer bezeichnet, wo der Befehlssatz des Hauptprozessors (der CPU) abgelegt wird. Die Firmware konnte neu geladen werden, um den Befehlssatz zu ändern. Firmware war deshalb nicht im Maschinencode der CPU geschrieben, sondern in Mikrocode. Im ursprünglichen Sinn wurde Firmware klar von Hardware (der CPU selbst) und Software (die Programme, die auf dem Prozessor laufen) abgegrenzt.
Später wurde die Bezeichnung für Mikrocode benutzt, gleichgültig, ob er im RAM oder ROM lag.
Danach wurde der Begriff nochmals weiter gefasst, für alles, was im ROM gespeichert ist, wie Prozessormaschinenbefehle für das BIOS, Bootloader oder andere spezialisierte Programme.

## Firmware von Drittanbietern

Üblicherweise stammt die Firmware eines Gerätes vom Hersteller des Gerätes. Diese mit dem Gerät ausgelieferte Firmware wird auch als „Stock-Firmware“, „Soosware“ oder „Stock-ROM“ bezeichnet. Für einige Geräteklassen wie Smartphones, Tablets und Spielkonsolen werden zusätzlich alternative Firmware-Varianten von Drittanbietern entwickelt. Diese werden auch als „Custom-ROM“ oder „Aftermarket Firmware“ bezeichnet. Viele Custom-ROMs werden von Einzelpersonen in ihrer Freizeit entwickelt, um z. B. neue Funktionen hinzuzufügen, Beschränkungen der Stock-Firmware zu umgehen oder um ihr Gerät mit freier Software auszustatten.
Eine große Plattform zu dem Thema ist XDA Developers.

## Quellen

* ↑ Chu Jay Tan, Junita Mohamad-Saleh, Khairu Anuar Mohamed Zain, Zulfiqar Ali Bin Abd. Aziz: Review on Firmware. In: Proceedings of the International Conference on Imaging, Signal Processing and Communication. 2017 doi:10.1145/3132300.3132337.
* ↑ Opler, Ascher: Fourth-Generation Software. In: Datamation. 13. Jahrgang, Nr. 1, Januar 1967, S. 22–24.
* ↑ What is an Android Custom ROM? xda-developers.com, archiviert vom Original (nicht mehr online verfügbar) am 15. August 2018; abgerufen am 20. April 2018.
* ↑ Alternative Android-Versionen auf Smartphones und Tablets installieren. heise.de, 17. Mai 2014, abgerufen am 20. April 2018.