Facing The Engineers Logo und Titel

Von fester und weicher Ware

Firmware oder Software – Das ist hier die Frage

„Ich sehe hier nur Softwareentwickler, haben Sie auch Firmwareentwickler?“, „Also wir haben nur eine Software-Abteilung, können Sie für uns Firmware entwickeln?“

Solche oder so ähnliche Fragen erreichen uns manchmal in Gesprächen mit Kunden. Aber was ist eigentlich der Unterschied zwischen Software und Firmware? Oder ist es gar dasselbe? Ein Erklärungsversuch.

Software? Oder doch Firmware?

Ganz allgemein lässt sich sagen: Firmware ist fest („Firm“) an die Hardware gebunden, für die sie entwickelt ist. Es besteht also eine Abhängigkeit der Firmware von der Hardware. Anders herum ist es aber genauso: Moderne Geräte haben fast immer einen Mikrocontroller an Bord, der ohne seine „Firmware“ einfach gar nichts macht. Die Hardware ist also ebenso von der Existenz und Korrektheit der dazugehörigen Firmware abhängig. Gemeinsam bilden sie ein so genanntes „Eingebettetes System“ (engl. „Embedded System“) – also das Zusammenspiel von einer elektrischen Schaltung und einem Programm, welches auf einem Mikrocontroller ausgeführt wird.

Zusätzlich greift eine Firmware allgemeinhin direkt auf die Hardware-Komponenten und Register des Controllers zu, auf dem sie ausgeführt wird. Sie steuert angeschlossene Bauteile über hardwarenahe Kommunikationsschnittstellen wie I²C oder SPI und sammelt so über Sensoren Informationen über die „echte“, physikalische Welt um sie herum oder verändert diese über Aktuatoren wie z.B. Motoren oder LEDs.

Das, was viele meinen, wenn sie von „Software“ sprechen, findet im allgemeinen viele, viele Abstraktionsschichten weiter oben statt: Eine Software wird vermeintlich nicht von einem Mikrocontroller ausgeführt, sondern von einem „richtigen Computer“. Ihr stehen viel mehr Ressourcen wie Rechenleistung oder Arbeitsspeicher zur Verfügung. Ein Betriebssystem wie Windows oder Linux kümmert sich um die direkten Hardwarezugriffe und bietet so eine komfortable Schicht zwischen der Software und der verfügbaren Hardware. Eine Software ist demnach im Allgemeinen auch auf mehreren, heterogenen Systemen lauffähig, so beispielsweise auf zwei Entwickler-PCs, die mit verschiedene Prozessoren oder verschieden viel Arbeitsspeicher ausgestattet sind.

Es wäre nun also ein Einfaches zu sagen: „Firmware“ läuft auf Mikrocontrollern, „Software“ auf „richtigen“ Computern. Aber so einfach ist es nicht: Gilt ein Betriebssystem schon als „Firmware“? Wie ist es denn mit Produkten wie Android, die auf einem Mobiltelefon ausgeführt werden? Es handelt sich streng genommen um ein eingebettetes System, mit einer Rechenleistung zwar, von der die NASA bei der Mondlandung geträumt hätte, aber eben doch mit einem Prozessor und viel Hardware drumherum auf einer Leiterplatte. Ist dies noch Firmware, oder schon Software?

Anders herum werfen wir einen Blick auf die Programme, die wir für eingebettete Systeme in von uns entwickelten Geräten schreiben: Große Teile der Software sind nicht für ein spezielles Gerät oder eine spezielle Hardware entwickelt, sondern können in vielen Produkten wiederverwendet werden. Bis auf die unterste Schicht der Software, nämlich jene, die direkt auf die Prozessor-Register zugreift, können sogar nahezu alle Treiber für Sensoren oder Aktuatoren auf andere Systeme portiert werden. Noch interessanter wird es, wenn wir auf dem eingebetteten System ein Betriebssystem wie zum Beispiel FreeRTOS einsetzen: Schreiben wir darauf aufbauend noch Firmware, oder schon Software?

Kurzum: Die Grenzen sind nicht klar definiert. Was früher noch eine einfache „Firmware“ mit begrenzten Ressourcen und viel Optimierungsbedarf war, wird heute immer größer, komplexer und speicherhungriger. Wir nutzen daher für beide Arten der Software, nämlich der „PC“-Software und der „eingebetteten“ Software einfach das selbe Wort: Software. Software für eingebettete Systeme ist eine Teilmenge davon. Unsere Softwareentwickler können folglich auch in beiden Disziplinen brillieren: Anwender-Software auf dem PC, Steuer-Software auf Servern und eben der eingebetteten Software auf von uns kundenspezifisch entwickelten Geräten.

Related Articles

Über CogniMed

CogniMed wurde 1994 von Prof. Dr. Martin Ryschka und Frank Willers gegründet als Gesellschaft für medizinische und industrielle Mess- und Automatisierungstechnik. Wir sind eine kleine Firma (unter 20 Mitarbeiter), die sich spezialisiert hat auf technische Entwicklungsdienstleistungen, meist in dokumentatorisch anspruchsvollen und regulierten Branchen. Unsere Erfahrung mit der Entwicklung und dem Inverkehrbringen eines eigenen Klasse IIa-Medizinproduktes über viele Jahre ist heute unschätzbar für uns, um die Anforderungen unserer Kunden an Zuverlässigkeit und regulatorisch solide Dokumentation zu verstehen und umzusetzen. Auch in unsere Luftfahrt-Projekte bringen wir eigene Entwicklungs-Erfahrungen ein (DAL B, DO-178B, DO-254).

Charta der Vielfalt Unterzeichner

Wir freuen uns und sind stolz darauf, als eine von tausenden unterzeichnenden Firmen unser Commitment zur Vielfalt und zu einer wertschätzenden und vorurteilsfreien Unternehmenskultur durch die Urkunden-Unterzeichnung zum Ausdruck zu bringen. Toleranz und Wertschätzung stellen schon seit je her Grundpfeiler unseres Miteinanders dar. Unser Team ist in vielerlei Hinsicht bunt. Wir sind bestrebt, die Arbeitsbereiche und -zeiten aller so zuzuschneiden, dass sie ihre Stärken zeigen können. Trotzdem wissen wir, dass es auch bei uns noch viel zu verbessern gibt. Packen wir es an!
Image

Aktuelles

Image
Folgen Sie uns auf LinkedIn®.

Quick Links

Wir benutzen Cookies
Wir nutzen Cookies und weitere Techniken auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.