Firmware


aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Unter Firmware (engl. firm ‚fest‘) versteht man Software, die in elektronische Geräte eingebettet ist. 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. Sie nimmt eine Zwischenstellung zwischen Hardware (also den physikalischen Anteilen eines Gerätes) und der Anwendungssoftware (den ggf. austauschbaren Programmen eines Gerätes) ein.

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 (z. B. das in einem Flash-Speicher verankerte BIOS bei Personalcomputern), die notwendig ist, um den Betriebssystemkern des eigentlichen Betriebssystems laden und betreiben zu können.

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 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 seine eigene Firmware beinhaltet.

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 etwa 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 (BS). Jedoch ist auch der Begriff BS bereits ungenau; man kann darunter z. B. nur den Kernel eines Betriebssystems verstehen, oder eben 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 schon 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 Operating-System 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.
  • Ein anschauliches Beispiel: Eine Verpackung enthalte eine Platine mit einem Jumperfeld, einige Jumper, ein Manual und eine CD. Alle diese Dinge sind physisch und somit zunächst einmal Hardware. Die Treiber auf der CD sind Software. Die Firmware besteht in diesem einfachen Fall aus dem Jumper-Plan im Manual (Informatik/Software) und den gesteckten Jumpern (Physik/Hardware).

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 bzw. EEPROMs können über spezielle Verfahren gelöscht und neu beschrieben werden. Dieser Vorgang wird umgangssprachlich „Flashen“ genannt. Die Aktualisierung ermöglicht die Fehlerbehebung, sowie die Nachrüstung neuer Funktionen. 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 wieder hergestellt 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), sowie WLAN-Adaptern (USB) häufig anzutreffen. Auch der Linux-Kernel nutzt diese Methode, u. a. auch bei Grafikkarten, um freie oder angepasste Firmware in Geräte laden zu können. Bei vielen Linux-Distributionen kann man Firmwares für Geräte (z. B. WLAN-Chips, Grafikkarten) über das Paketmanagementsystem installieren.

Ursprung des Wortes

Der Begriff „Firmware“ wurde von Ascher Opler 1967 in einem Artikel in der Zeitschrift Datamation geprägt.<ref name="Opler">Opler, Ascher: Fourth-Generation Software. In: Datamation. 13, Nr. 1, Januar 1967, S. 22–24.</ref> 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.

Quellen

<references />