Kontakt
Kontakt
RAFI GmbH & Co. KG

Ravensburger Str. 128–134
88276 Berg/Ravensburg
Deutschland
T +49 751 89-0
F +49 751 89-1300

Phone Kontakt
RAFI Embedded Software

Embedded Software

Das, was antreibt.
  1. Startseite
  2. Ι Aktuelles
  3. Ι Blog

Embedded Software“ ist ein Sammelbegriff für Programme, die speziell für ein bestimmtes elektronisches Gerät oder eine Maschine entwickelt wurden. Oft wird in diesem Zusammenhang auch von „Firmware“ gesprochen. 

Der Zusatz „Embedded“ (deutsch: „eingebettet“) deutet bereits an, dass die Anwendung fest mit der physischen Komponente, der Hardware, verbunden ist. Die Softwareentwicklung erfolgt dementsprechend auch immer produktspezifisch: Um welches Gerät handelt es sich? Wo kommt es zum Einsatz? Was soll es leisten?

Grundsätzlich ist unter eingebetteter Software also eine fundamentale Logik zu verstehen, dank der ein bestimmtes Funktionsinstrument genau das tut, was die Bediener*in will.

So ergibt sich ein gesamtheitliches System, bei dem beide Teilgebiete Hand in Hand laufen: Die Hardware reagiert zuverlässig auf jeden Softwarebefehl, während das Programm alle grundlegenden Funktionen sicherstellt und deren fehlerfreie Durchführung in der Praxis überwacht.

In ihrer exakten Angepasstheit an einen physischen Apparat unterscheidet sich die eingebettete Software grundlegend von anderen Programmen. Letztere ergänzen ähnlich wie ein Plug-in das Produkt nur um weitere Funktionen und sind oft als universales Tool auf verschiedene Hosts übertragbar. Die eingebettete Software ist dagegen ein unverzichtbarer Baustein. Sie stellt die grundsätzliche Anwendbarkeit eines elektronischen Geräts sicher: Jeder Code ist darauf ausgelegt, eine bestimmte Aufgabe zu übernehmen. Daraus ergibt sich in Summe eine enorme Komplexität an Befehlen, die letzten Endes die Steuerung des Produkts ausmachen.

Obwohl sie also für den Nutzen einer Elektronikkomponente unentbehrlich ist, nimmt die Anwender*in die Embedded Software beim Einsatz der Gerätschaft nicht wahr. Denn das eingebettete Programm fungiert bloß im Hintergrund und kontrolliert unbemerkt, ob alles so läuft, wie es soll. Man unterscheidet gemeinhin drei Untereinheiten der Software, die sich auf Design und Funktionalität des Systems auswirken:

Der Bootloader sorgt dafür, dass sowohl Betriebssystem als auch Applikationssoftware laden und aktualisieren. Auch das Betriebssystem selbst ist Teil der Embedded Software und ermöglicht die Daten- und Speicherverwaltung. Außerdem ist das Betriebssystem für die grundlegende Systemsteuerung des Produkts verantwortlich. Der dritte Teilbereich macht die Applikations-Software aus: Sie ist das Bindeglied zum Host-System, ermöglicht gerätespezifische Funktionen und verarbeitet die erfassten Daten während der Anwendung.

 

RAFI Embedded Software

Was ist Embedded Software?

Der Name setzt sich aus zwei verschiedenen Begriffen zusammen: „Embedded Systems“ und „Software Engineering“. Eingebettete Systeme sind Computersysteme, die ein technisches (physisches) System notwendig ergänzen und mit diesem in Wechselwirkung stehen. Der zweite Teil, Software Engineering, legt ganz klar den Fokus auf die Softwaretechnik. Wenn also von Embedded Software Engineering die Rede ist, ist der eigentliche Programmierungsprozess der Anwendung gemeint. Erst wenn eine einwandfreie Softwarequalität erreicht ist, kann die Implementierung in die technisch-physische Komponente beginnen – im nächsten Themenabschnitt werden die wichtigsten Kriterien für die Entwicklung einer eingebetteten Software erläutert.

Das Computersystem, zum Beispiel eine Einsteckkarte mit Prozessor, setzt sich ebenfalls aus Software und Hardware zusammen und wird dann als eigene Systemeinheit in ein übergeordnetes System integriert. Damit aber die Software auf keine weiteren Anwendungen angewiesen ist und das System im Ganzen eigenständig steuert, muss die eingebettete Software eine gesamtheitliche Architektur aufweisen. Erst dann ist gewährleistet, dass sie die Elektronik unabhängig von anderen Programmen vollumfassend funktionstüchtig macht.

Diese Erfordernis wird nachvollziehbarer, wenn man das Gegenstück von eingebetteten Systemen betrachtet. Ein sogenanntes „Self-Contained System“ definiert sich gerade dadurch, dass einzelne Funktionen durch verschiedene voneinander gänzlich separierten Systemen übernommen werden. Als Beispiel zählt die klassische Computertastatur, die für sich unabhängig vom Anschluss an einen Rechner als eigenständiges System gilt. Erst angeschlossen, erweitert sie das Leistungsspektrum der Computereinheit. Die Tastatur ist aber für die grundsätzliche Einsatzbereitschaft des Computers nicht erforderlich – weil das Tastatursystem für nur eine einzelne Zusatzfunktion verantwortlich ist.

Die Embedded Software ist also per Definition das nicht-physische Kernstück eines integrierten Systems. Das schließt aber nicht aus, dass das System trotzdem um weitere Anwendungsprogramme ergänzt werden kann. Anders als diese Art der Applikation ist die eingebettete Software aber für die Inbetriebnahme unerlässlich. In der Regel verfügen Technologien, die zum Internet der Dinge (IoT) zählen, über eine Embedded Software. In allen möglichen Branchen stattet sie Elektronikkomponenten, Geräte und Maschinen aus, damit die angebotenen Produkte ihr Leistungsversprechen halten – insbesondere in der Automobilindustrie ist die Anzahl an Modulen mit eingebetteter Software extrem hoch. Computer im klassischen Sinne, also als Arbeitsrechner, Laptops und Notebooks verfügen aber über eine gesonderte Betriebssoftware.

Über die Entwicklung von Embedded Software.

An Embedded Software werden hohe Anforderungen gestellt. Aus der engen Abstimmung an die jeweilige Hardware resultieren oft klare Vorgaben und Richtlinien, die beim Programmieren beachtet werden müssen. Es gibt drei wesentliche Rahmenbedingungen, die Entwickler*innen im Blick haben: Die Software soll zwar das Maximum an Leistung aus dem Endprodukt herausholen, muss dabei aber kostengünstig, möglichst platzsparend und energiesparend sein.

Was die eigentliche Funktionsweise von eingebetteter Software angeht, wird eine hohe Bedienerfreundlichkeit sowie Zuverlässigkeit erwartet. Von wichtigem Nutzen ist außerdem, dass die Software alle Datensätze in Echtzeit aktualisiert und so eine hohe Sicherheit gewährleistet. Das Echtzeitverhalten ist vor allem bei Produkten wichtig, die zum Schutz von Personen zum Einsatz kommen, wie beispielsweise Airbags. Aber auch in der Industrie schafft die Eigenschaft eine hohe Effizienz, weil so Prozesse vom Prototyp bis zur Serienproduktion perfekt aufeinander abgestimmt werden können.

Um also all diese Ansprüche zu realisieren, muss die Entwicklung von Embedded Software genaustens durchdacht und konzipiert werden. Dafür stehen verschiedene Programmiersprachen und Techniken zur Verfügung. Die Designs von eingebetteter Software unterscheiden sich maßgeblich von standardisierten PC-Designs. Am häufigsten wird Embedded Software in Hochsprachen wie C oder C++ programmiert, weil diese meist über einen besseren Compiler verfügen – also einem Programm, das die höhere Programmiersprache dann in ein Maschinensprachprogramm übersetzt. Zudem sind viele der Analyse- und Optimierungstechniken auch für Anwendungen nutzbar, die auf Assembler basieren. Dementsprechend stehen die Hochsprachen den Tools und Möglichkeiten von Assembler in nichts nach, sind dagegen sogar weniger kompliziert und intuitiver.

Die Programmierung von eingebetteter Software ist aus oben genannten Gründen anspruchsvoller als die von normalen Computerprogrammen. Entwickler*innen steht nur ein begrenzter Speicher zur Verfügung. Auch die Trennung von Programm- und Arbeitsspeicher sowie die niedrige Taktrate des Embedded-Prozessors, im Vergleich zu herkömmlichen PC-Systemen, stellt Entwickler*innen teils vor gewaltige Herausforderungen. Letzteres führt zu der Schwierigkeit, dass ein großes Funktionsspektrum bei hohen Ansprüchen an die Geschwindigkeit realisiert werden muss – natürlich soll eine Maschine effizient arbeiten, für schnelle Zeitabläufe sorgen, und eine Produktion ohne Fehler garantieren.

 

 RAFI Embedded Software

Beispiele aus der Praxis für Embedded Software.

Wie schon vorweggenommen wird Embedded Software häufig bei elektronischen Geräten implementiert, die zum Internet of Things (IoT) zählen. Das Internet of Things ist eine Art globale Infrastruktur, die es ermöglicht, dass ein Mensch mit einem elektronischen Objekt wechselseitig kommunizieren kann. Weitere Details und Hintergründe zu diesem Bereich und welchen Mehrwert IoT-Plattformen bieten, lesen Sie demnächst in einem anderen Beitrag auf unserer RAFI Seite.

Werden verschiedene Embedded Systeme, also eigenständige Produkteinheiten, miteinander vernetzt, dann entstehen dadurch oft völlig neue Möglichkeiten. Insbesondere hochkomplexe Fachgebiete können von dem Automatismus, den Embedded Software ermöglicht, profitieren. Ein neues Maß an Fortschrittlichkeit wird dort realisiert, wo Maschinen selbstständig und ohne die Bedienung durch eine Person arbeiten können – die nötige Sicherheit bei dieser Autonomie wird durch die Echtzeit-Synchronisation gegeben.

Die Anwendungsbereiche und Branchen, in denen eingebettete Software für das Funktionsspektrum von Produkten verantwortlich ist, sind vielseitig. Sowohl in Telekommunikations-Geräten wie Mobiltelefone, als auch in Unterhaltungselektronik wie Fernseher und Spielkonsole finden sich eingebettete Software. Aber auch in der Industrie- und Medizintechnik, in der Militärtechnik sowie in Luft- und Raumfahrt kommt sie zum Einsatz. Selbst die heimische Wasch- und Geschirrspülmaschine als auch der Kühlschrank werden von dieser Technik angetrieben.

Natürlich ist Embedded Software auch in der Produktion ein großes Thema. Eigentlich alle Fertigungsautomaten bei RAFI laufen im Kern mit eingebetteten Programmen und sind über das IoT miteinander vernetzt. Das hat den Vorteil, dass Betriebsdaten in Echtzeit an eine zentrale Verwaltung gesendet werden. Damit ist es möglich, den Arbeitsprozess zu überwachen und jederzeit Anpassungen vorzunehmen. Es kommt so gut wie nie zum Stillstand und die Wirtschaftlichkeit steigt langfristig.

Embedded Software für Automotive RAFI
Embedded Software

Für die Fahrzeugtechnik

Vor allem in der modernen Automobiltechnik finden sich inzwischen viele Komponenten mit Embedded Software. Von diesem Technikstand aus ist die Gesellschaft vom Trend des autonomen Fahrens nicht mehr weit entfernt. Fast alles wird von hocheffizienter Software gesteuert: egal, ob Airbag, ABS, adaptives Fahrwerk, Getriebeautomatik oder sogar die Klimaanlage. Embedded Software ist aus der heutigen Automobilindustrie nicht mehr wegzudenken. Exakt programmiert reagiert die jeweilige Hardwarekomponente zuverlässig auf den einschlägigen Softwarebefehl, macht das Fahren so noch sicherer und gibt dem Fahrerlebnis zusätzlichen Komfort.

Bekommt das ABS beispielsweise von den Reifendrehzahlsensoren mitgeteilt, dass das Rad beim Bremsen blockieren könnte, verändert es mit Hilfe hydraulischer Ventile den Bremsdruck am betreffenden Rad. Auf diese Weise bleiben die Lenkfähigkeit und Fahrstabilität erhalten.

Die Vorteile von Embedded Software – und was noch ausbaufähig ist.

Laut Meinungsumfragen sind viele Nutzer*innen mit der Technologie zufrieden – unter dem Strich ergibt sich ein recht positives Bild von Embedded Software. Allerdings gibt es wie bei den allermeisten Innovationen auch die ein oder andere Beanstandung und Kritik. Diese gilt es in Zukunft zu optimieren – und daran wird auch zielstrebig gearbeitet.

Fast immer gehen nämlich von der Hardware umfassende Anforderungen aus, denen sich Softwareentwickler stellen müssen. Ist die leistungsstarke Software erst in die zugehörige Elektronik eingebettet, profitiert die Anwender*innen aber von nicht wenigen Vorteilen. Durch die oft geringe räumliche Kapazität ist die Technologie nicht nur platz-, sondern auch stromsparend. Da die Gerätesteuerung quasi schon inklusive ist, sparen sich Anwender*innen weitere teure Zusatzsoftware, die zur Optimierung der Bedienung beitragen soll. Mit der eingebetteten Software erhält der User gleich ein profitables Komplettpaket.

Das gilt insbesondere auch für die interne Systemeinheit. Denn Updates sind bei Embedded Software eher unüblich. Das macht die Anwendung sehr wartungsarm und unkompliziert gegenüber anderen optionalen Anwendungen mit Zusatzfunktion. Bei Maschinen, die über lange Betriebszeiten autonom laufen, ist das ein großer Vorteil. Denn wenn keine Wartung oder Systemupdates erforderlich sind, kann die Maschine im Betrieb durchgängig und ohne erforderliche Autorisierungsschritte arbeiten. Aus diesen Gründen kommt es extrem selten zu plötzlichen Stopps.

Allerdings gibt es auch noch einige Schwachstellen, die es künftig zu verbessern gilt. Die Embedded Software ist für den Standardbetrieb des gesamten Systems unverzichtbar – das heißt: Kommt es unerwartet doch zu Komplikationen, ist das Gesamtsystem nicht betriebsbereit und Stehzeiten sind unvermeidbar. Weil die Software fest in die Elektronikkomponente eingebettet ist, kann sie nicht so einfach ausgetauscht werden. Im Fall von modularen Einheiten, können dagegen Einzelteile bei Defekt einfach und schnell ersetzt werden. Auch der Austausch von Komponenten zwecks Modernisierung ist bei diesen Maschinenmodellen wesentlich unkomplizierter.

Das Thema Aufrüsten ist kein leichtes Unterfangen, da die Gesamtkonstruktion auf Dauerbetrieb ausgelegt ist. Updates sind meist nicht vorgesehen. Das kann sowohl ein Vorteil sein, weil die Maschine besonders wartungsarm ist. Langfristig betrachtet, ist es jedoch nur mit größerem Aufwand möglich, den Automaten an fortschrittliche neue Technik anzupassen. Dafür muss nämlich die Hardware fast immer komplett auseinander gebaut werden. Mit einiger Mühe ist es also durchaus möglich, ein Gerät mit integriertem Embedded System an neue Leistungsstandards anzupassen. Je nach Produkt, Modell und Baujahr gilt es abzuwägen, ob der Austausch der kompletten Apparatur nicht die unter dem Strich günstigere Alternative wäre. Bei insgesamt preiswerten Produkten liegt das nahe, bei großen Maschinen sieht das aber schon anders aus.

Ein weiteres Manko ist die eingeschränkte Reaktivität. Das Echtzeitverhalten, das von der Embedded Software ausgeht, ist zwar für viele Abläufe wichtig. Allerdings kann dieser Anspruch nicht von jeder verknüpften Maschine oder synchronisierten Verwaltungszentrale eingehalten werden, was sich dann negativ auf den Gesamtprozess auswirken kann. Wie zum Thema IoT beschrieben, kommuniziert die Software mit anderen Geräten und vernetzten Objekten – über sogenannte Sensoren und Aktoren. Auf die gleiche Weise werden sicher auch zukünftig übrige Nachteile eliminiert, sodass die eingebettete Software eine durchweg attraktive Technologielösung darstellt.

site-to-top