Firmware und Software: Ein Vergleich
In der heutigen, von Computern durchdrungenen Welt, begegnen uns häufig die Begriffe Firmware und Software. Beide spielen eine entscheidende Rolle in der Funktion moderner eingebetteter Systeme und Computer.
Die Digitalisierung hat unseren Alltag stark verändert. Computer sind zu einem unverzichtbaren Werkzeug geworden. Software und Hardware sind dabei die am häufigsten genutzten Ausdrücke, wenn es um die Funktionsweise von Computern geht.
Es existieren unzählige Komponenten, die zur Herstellung technischer Geräte beitragen. Neben verschiedenen Arten von Software und Hardware ist auch die Firmware ein wesentlicher Bestandteil.
Sowohl Firmware als auch Software sind in der Elektronikindustrie von Bedeutung. Die Unterscheidung kann jedoch schwierig sein, da sie manchmal ähnliche Funktionen erfüllen.
Beispielsweise kann ein manuelles Update eines Android-Betriebssystems als Firmware-Aktualisierung betrachtet werden. Das Flashen eines Betriebssystemupdates auf einem Android-Telefon bedeutet, dass die Software für die spezifische Hardware des Geräts entwickelt wurde, also als Firmware gilt.
Wenn dies verwirrend erscheint, lassen Sie uns tiefer in das Thema eintauchen.
In diesem Artikel werden wir die Unterschiede, Gemeinsamkeiten und Anwendungsbereiche von Software und Firmware genauer unter die Lupe nehmen.
Legen wir los!
Was ist Firmware?
In der Welt der Computertechnik bezeichnet Firmware eine spezielle Kategorie von Software. Sie dient der Steuerung der Hardware eines bestimmten Gerätes auf einer niedrigen Ebene. Firmware beinhaltet grundlegende Funktionen des Gerätes und bietet Hardware-Abstraktionsdienste für übergeordnete Software, wie beispielsweise Betriebssysteme.
Bei weniger komplexen Geräten kann die Firmware als vollständiges Betriebssystem fungieren, das Steuerungs-, Überwachungs- und Datenverarbeitungsfunktionen übernimmt. Sie wird in nichtflüchtigen Speichern wie EPROM, EEPROM, Flash-Speicher und ROM gespeichert.
Der Begriff „Firmware“ wurde 1967 von dem amerikanischen Wissenschaftler Ascher Opler geprägt, um ein Mikroprogramm zwischen Software und Hardware zu beschreiben.
Die Aktualisierung der Firmware kann den physischen Austausch des ROM oder die Neuprogrammierung des EPROM mit einem bestimmten Verfahren erfordern. Einige Firmware-Speichergeräte sind nach der Installation nicht mehr veränderbar.
Firmware-Updates sind wichtig, um Fehler zu beheben, Geräte um Funktionen zu erweitern und vieles mehr. Im Grunde kann man sich Firmware als „Software für Hardware“ vorstellen. Obwohl Software ein verwandter Begriff ist, sind beide nicht austauschbar.
Hersteller veröffentlichen regelmäßig Updates, um die Hardware auf dem neuesten Stand zu halten und die Kompatibilität mit neuen Medien zu gewährleisten. Das gilt auch für Netzwerkrouter, Smartphones, Kameras und vieles mehr. Solche Updates sind in der Regel auf den Webseiten der Hersteller zu finden.
Die Firmware lässt sich basierend auf der Hardwareintegrationsebene in drei Hauptkategorien unterteilen:
- Low-Level-Firmware gilt als essentieller Bestandteil der Gerätehardware und wird auf schreibgeschützten, nichtflüchtigen Chips wie ROM gespeichert. Daher ist sie nicht veränderbar. Geräte mit Low-Level-Firmware haben einen einmalig programmierbaren Speicher.
- High-Level-Firmware ermöglicht Updates, ist aber komplexer als Low-Level-Firmware. Sie wird auf Flash-Speicherchips gespeichert.
- Subsystem-Firmware ist Teil eines eingebetteten Systems. Ein Beispiel hierfür ist das Stromversorgungssubsystem eines Servers, das halb unabhängig vom Server arbeitet.
Beispiele für Firmware sind BIOS oder Unified Extensible Firmware Interface (UEFI), USB-Laufwerke, Sensoren, Kleincomputer und Smartcards.
Wie funktionieren Firmware-Updates?
Firmware-Updates werden oft bereitgestellt, um Firmware-Hacks zu verhindern, die Sicherheit zu erhöhen, Fehler zu beheben, neue Funktionen einzuführen und Interoperabilität mit den neuesten Medien zu ermöglichen. Sie enthalten Code, der der Hardware neue Verhaltensweisen aufzwingt.
Einige internetfähige Geräte suchen automatisch nach neuen Firmware-Versionen und installieren diese. Andere Geräte erfordern, dass der Benutzer die Hersteller-Webseite besucht, um die Updates herunterzuladen und manuell zu installieren. Die Häufigkeit von Updates variiert je nach Nutzung. Firmware in intelligenten Geräten muss möglicherweise nicht häufig aktualisiert werden.
Smartphones aktualisieren die Firmware in der Regel zusammen mit Software-Updates, sodass der Benutzer nicht gezwungen ist, die Firmware-Versionen separat zu aktualisieren. Viele elektronische Geräte müssen während eines Firmware-Updates eingeschaltet bleiben.
Was ist Software?
Software umfasst Daten, Programme und Anweisungen, die zur Ausführung von Computeroperationen verwendet werden, um bestimmte Aufgaben zu erfüllen. Software steht im Gegensatz zur Hardware, den physischen Aspekten des Computersystems. Software ist nicht physisch greifbar.
Software ist ein Oberbegriff für Skripte, Programme und Anwendungen, die auf jedem Gerät laufen können. Sie ist ein veränderlicher Bestandteil eines Computers. Die Hauptkategorien von Software sind:
- Anwendungssoftware: Sie ist darauf ausgelegt, bestimmte Computeranforderungen zu erfüllen oder spezielle Aufgaben auszuführen.
- Systemsoftware: Dieser Softwaretyp dient zum Betrieb der Hardware eines Geräts. Zudem bietet sie eine Plattform für die Ausführung von Anwendungen.
- Programmiersoftware: Sie bietet Programmierwerkzeuge für Softwareentwickler. Dazu gehört auch der Begriff Middleware, die zwischen System- und Anwendungssoftware vermittelt. Auch Treibersoftware, die Computergeräte und Peripheriegeräte steuert, fällt in diese Kategorie.
In den frühen 1980er Jahren wurde Software auf Disketten verkauft, später auf CDs und DVDs. Heute wird die meiste Software über das Internet gekauft oder heruntergeladen. Eine Vielzahl von Softwarearten ist auf den Webseiten der Anbieter verfügbar.
Nachfolgend einige Software-Design-Arten:
- Architekturdesign: Hierbei wird die grundlegende Struktur der Software mit den Hauptkomponenten und deren Beziehungen identifiziert. Architekturdesign-Tools werden dabei verwendet.
- High-Level-Design: Diese zweite Ebene des Softwaredesigns konzentriert sich auf die Implementierung des Systems in Form von Modulen, die durch einen Software-Stack unterstützt werden. Hier werden auch die Beziehungen zwischen den Modulen und die Datenflüsse beschrieben.
- Detaillierte Schicht: Diese dritte Ebene des Softwaredesignprozesses befasst sich mit den Implementierungsdetails der Softwarearchitektur.
Die Qualität von Software kann anhand verschiedener Merkmale bewertet werden, darunter Zugänglichkeit, Kompatibilität, Funktionalität, Leistung, Portabilität, Installierbarkeit, Lokalisierung, Effizienz, Wartbarkeit, Sicherheit, Benutzerfreundlichkeit, Testbarkeit, Zuverlässigkeit und mehr.
Wie funktioniert Software?
Software liefert dem Computer Daten und Anweisungen, damit er arbeiten und die Bedürfnisse der Benutzer erfüllen kann. Anwendungs- und Systemsoftware funktionieren auf unterschiedliche Weise.
Anwendungssoftware
Anwendungssoftware umfasst viele Programme, die spezifische Aufgaben für Endbenutzer erfüllen, wie das Navigieren auf Webseiten oder das Schreiben von Berichten. Sie führt auch Aufgaben für andere Anwendungen aus. Anwendungssoftware kann nicht eigenständig ausgeführt werden. Sie erfordert ein Betriebssystem und unterstützende Systemsoftware.
Desktop-Anwendungen werden auf dem Computer des Benutzers installiert und verwenden den Computerspeicher zur Aufgabenerfüllung. Sie beanspruchen Speicherplatz auf der Festplatte und benötigen keine Internetverbindung. Webanwendungen benötigen hingegen eine Internetverbindung. Sie sind nicht von Systemsoftware oder Hardware abhängig. Geräte mit Webbrowsern ermöglichen den schnellen Zugriff auf Webanwendungen.
Systemsoftware
Systemsoftware fungiert als Schnittstelle zwischen Anwendungssoftware und Computerhardware. Sie läuft im Hintergrund und übernimmt die wesentlichen Funktionen des Computers. Systemsoftware koordiniert Hardware und ermöglicht die Ausführung von High-Level-Software.
Systemsoftware beginnt mit dem Hochfahren des Computers und läuft kontinuierlich während des Betriebs. Sie wird in Low-Level-Maschinencode oder Assemblersprache geschrieben. Daher kann sie unabhängig arbeiten und den reibungslosen Betrieb des Computers gewährleisten.
Firmware vs. Software: Gemeinsamkeiten
Die Begriffe Firmware und Software werden im Kontext von eingebetteten Systemen oft synonym verwendet. In dieser Branche gibt es einige Gemeinsamkeiten. Oft wird Firmware als eine Art Low-Level-Software angesehen.
In Stellenangeboten findet man manchmal die Bezeichnung „Embedded Software Engineer“ oder „Embedded Firmware Engineer“ mit derselben Stellenbeschreibung. Das liegt daran, dass die Anwendungsseite des Systems zusammen mit der Systemseite entwickelt wird.
Beispiel: Bei der Arbeit mit Barebone-Designs (ohne Betriebssystem) hat man nur einige Mikrocontroller-spezifische Dateien (CPU, Treiber und Header) und einige Treiber von Drittanbietern (für Anzeige und TCP/IP). Diese Dateien verwalten die Hardwareseite der Software.
Mit Treibern und Headern kann Anwendungssoftware geschrieben werden. Später werden alle Dateien in einer Binärdatei zusammengefasst. Wenn ein Betriebssystem wie FreeRTOS oder VxWorks verwendet wird, übernimmt das RTOS die Speicherverwaltung und den Kontextwechsel. Dennoch muss Anwendungssoftware mithilfe von Mikrocontrollertreibern, Treibern von Drittanbietern und RTOS-Dateien geschrieben werden.
Firmware vs. Software: Unterschiede
Betrachten wir nun die Unterschiede zwischen Firmware und Software genauer:
Merkmal | Firmware | Software |
Definition | Software, die die Hardware steuert und regelmäßig aktualisiert wird. | Eine Reihe von Anweisungen für das Computersystem. |
Ebene | Low-Level-Software, die sich zwischen dem Betriebssystem und der Hardware befindet. | Software interagiert nicht direkt mit der Hardware, sondern läuft auf dem Betriebssystem. |
Typen | Umfasst Low-Level-Firmware, High-Level-Firmware und Subsystem-Firmware. | Umfasst Anwendungs-, System-, Programmier-, Middleware- und Treibersoftware. |
Größe | Gering. | Kann an die Bedürfnisse der Benutzer angepasst werden. |
Programmierung | Wird in der Regel nur einmal programmiert. | Kann beliebig oft installiert und deinstalliert werden. |
Speicherort | Wird im Flash-Speicher der Hardware gespeichert. | Wird auf dem sekundären Speichergerät des Computers gespeichert. |
Entwicklungssprache | Low-Level-Programmiersprachen. | Sowohl High-Level- als auch Low-Level-Programmiersprachen. |
Ausführung | Läuft direkt auf Speicherchips wie EEPROMs und Flash. | Wird von Wechselmedien kopiert und auf Speichermedien wie SSDs oder Festplatten installiert. |
Beispiele | UEFI- und BIOS-Firmware, Open-Source-Router-Firmware wie OpenWrt und DD-WRT. | Betriebssysteme wie Linux, Android, Windows und Anwendungen wie Browser, Apps, Spiele, MS Office usw. |
Firmware vs. Software: Anwendungsfälle
Anwendungsfälle von Firmware
Firmware ist in vielen elektronischen Geräten zu finden, auch in komplexen Systemen. Hier einige Beispiele:
- Personal Computer: Die Firmware ist in einem kleinen Speicherchip eingebettet. Auch Peripheriegeräte wie Grafikkarten enthalten Firmware.
- Haushaltsgeräte: Waschmaschinen und Geschirrspüler nutzen Firmware, um die Kommunikation mit einem Computer zu ermöglichen, der Einstellungen und Steuerelemente konfiguriert.
- Speichergeräte: Festplatten, tragbare Speichergeräte und USB-Laufwerke verwenden Firmware, um die Interaktion mit dem Computersystem zu ermöglichen.
- Smartcards: Sie nutzen Firmware zum Einbetten von Anweisungen für grundlegende Funktionen, Verschlüsselung und Authentifizierung.
- Automobil: Fahrzeuge verfügen über Sensoren, Kleincomputer und eingebettete Systeme mit Firmware, die ihnen bei der Erfüllung ihrer Aufgaben helfen.
- Mobilgeräte: Laptops, Tablets, Smartphones und andere mobile Geräte nutzen Firmware, um die Interaktion der Hardware mit verschiedenen Softwareprogrammen zu ermöglichen.
Anwendungsfälle von Software
Software ist in der heutigen Welt allgegenwärtig. Alles, was auf Computern oder anderen Geräten installiert und heruntergeladen wird, ist Software. Die Verwendung von Software ist für viele Menschen ein fester Bestandteil des Alltags.
Beispiele für Anwendungssoftware:
- Textverarbeitungssoftware: MS Word, Notepad, Wordpad
- Tabellenkalkulationssoftware: Microsoft Excel, Apple Numbers usw.
- Datenbanksoftware: MS Access, Oracle usw.
- Simulationssoftware: Wissenschaftliche Simulatoren, Flugsimulatoren
- Unternehmenssoftware: Customer-Relationship-Management-System (CRM)
- Multimedia-Software: Media Player
- Lernsoftware: Encarta, Britannica Mathematical, Google Earth
- Präsentationssoftware: Keynotes, Microsoft Powerpoint
- Software für Informationsarbeiter: Ressourcenverwaltungstools, Dokumentationstools usw.
- Anwendungspakete: Microsoft Office, OpenOffice usw.
- Software für den Zugriff auf Inhalte: Webbrowser, Mediaplayer usw.
Beispiele für Systemsoftware:
- Betriebssysteme: Windows, macOS, Linux
- Gerätetreiber
- Firmware
- BIOS und UEFI
- Übersetzer für Programmiersprachen
- Dienstprogramme
Fazit
Firmware wird in der Regel für die Mikroprogrammierung eingebetteter Systeme verwendet, während sich Software auf High-Level-Programme bezieht. Das Austauschen von Firmware ist komplexer als der Austausch von Software.
Firmware ist Systemsoftware, die die Hardware eines Geräts steuert. Software ist eine Sammlung von Anweisungen, die es einem Computer oder anderen Geräten ermöglichen, Aufgaben auszuführen. Ich hoffe, die wichtigsten Unterschiede und Gemeinsamkeiten zwischen Firmware und Software sind nun deutlicher geworden.
Vielleicht interessieren Sie sich auch für das Internet der Dinge (IoT).