Was ist Firmware?

Firmware ist die Software, die in Hardware-Geräte eingebettet ist und deren grundlegende Funktionen steuert.

Zu diesen grundlegenden Funktionen in eingebetteten Systemen wie IoT-Geräten gehören:

  • Steuerung und Überwachung des Startvorgangs (Boot-Prozess)
  • Bereitstellung von Hardware-Treibern für Sensoren, Netzwerke und Speichermodule
  • Implementierung von Kommunikationsprotokollen wie Wi-Fi, Zigbee, MQTT und Bluetooth
  • Gewährleistung von Sicherheitsfunktionen, einschließlich Verschlüsselung und Authentifizierung
  • Bereitstellung der gerätespezifischen Funktionalität

Damit übernimmt die Firmware in eingebetteten Systemen Aufgaben, die bei Allzweckcomputern wie PCs oder Smartphones das Betriebssystem oder Anwendungssoftware erfüllen.

Relationship between hardware, firmware, operating system and application software
Gegenüberstellung von Allzweckcomputern und eingebetteten Systemen wie IoT-Geräten

Bestandteile von Firmware

Firmware ist stark an die spezifische Hardware des Geräts angepasst und funktioniert nicht universell auf verschiedenen Geräten. Die Funktionalität und Komplexität eines IoT-Geräts bestimmt, aus welchen Bestandteilen die Firmware besteht. Folgende Bestandteile sind üblich:

Bestandteil Beschreibung
Maschinencode Ausführbarer Code, der direkt auf dem Mikrocontroller oder Prozessor läuft
Bootloader Kleiner Programmcode, der den Startvorgang des Systems steuert und das Hauptprogramm lädt
Hardware-Treiber Softwarekomponenten, die die Kommunikation zwischen der Firmware und der Hardware (z. B. Sensoren, Aktoren) ermöglichen
Kommunikationsprotokolle Implementierungen von Protokollen (z. B. Wi-Fi, Bluetooth) zur Datenübertragung zwischen Geräten.
Dateisystem Struktur zur Organisation und Verwaltung von Dateien, z. B. für Konfigurationen oder Logdaten
Update-Mechanismus Funktionen, die Firmware-Updates ermöglichen
Steuerlogik Algorithmen, die die Funktionalität des IoT-Geräts steuern
Benutzerschnittstelle Elemente zur Anzeige von Statusinformationen, wie LED-Anzeigen oder mobile App-Integration

Firmware kann in verschiedenen Dateitypen vorliegen, abhängig von der Hardware und dem verwendeten System. Zu den gängigsten Dateitypen für Firmware gehören:

  • .bin: Eine binäre Datei, die in der Regel direkt auf das Gerät geflasht wird
  • .img: Eine Abbild-Datei, die eine komplette Partition oder ein Systemabbild enthält, oft verwendet für Flash-Speicher
  • .hex: Ein Hexadezimalformat, das häufig für Mikrocontroller und eingebettete Systeme genutzt wird
  • .tar oder .zip: Komprimierte Archive, die mehrere Dateien und Verzeichnisse enthalten und oft verwendet werden, um Firmware-Pakete zusammenzufassen

Quellen von Firmware

Wie kannst du nun aber in den Besitz der Firmware gelangen? Dafür gibt es theoretisch verschiedene Möglichkeiten. Dies sind unter anderem:

  • Download vom Webserver des Herstellers
  • Mitschnitt eines Firmware-Updates
  • Extraktion von der Hardware

Bei der Extraktion von der Hardware wird die Firmware mit speziellen Werkzeugen direkt dem Gerät bzw. einer seiner Hardwarekomponenten entnommen. Dies kann beispielsweise über eine Debug-Schnittstelle wie JTAG oder SWD erfolgen, die es Entwicklern oder Technikern ermöglicht, tiefgehende Zugriff auf die internen Daten und Prozesse eines Systems zu erhalten. Eine andere Methode ist das direkte Auslesen des Flash-Speichers, auf dem die Firmware gespeichert ist.