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.
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.taroder.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.
