Siemens bietet sowohl Automotive Embedded Software als auch Embedded Software Engineering Solutions an. Siemens hat das Angebot von eigenständiger Embedded-Software für SoCs eingestellt und die Software-Produktangebote Sokol, Nucleus und Multicore eingestellt.
Was sind die verschiedenen Arten von Embedded-Software und ihre Zwecke?
- Betriebssystem – Ein Betriebssystem (OS) im allgemeinsten Sinne ist eine Software, die es einem Benutzer ermöglicht, andere Anwendungen auf einem Computergerät auszuführen. Das Betriebssystem verwaltet die Hardwareressourcen eines Prozessors, einschließlich Eingabegeräte wie Tastatur und Maus, Ausgabegeräte wie Displays oder Drucker, Netzwerkverbindungen und Speichergeräte wie Festplatten und Arbeitsspeicher. Das Betriebssystem stellt auch Dienste bereit, die die effiziente Ausführung und Verwaltung von Softwareanwendungsprogrammen sowie die Speicherzuweisung erleichtern.
- Firmware – Firmware ist eine Art von Software, die direkt für eine Hardware geschrieben wird. Es funktioniert ohne den Umweg über APIs, das Betriebssystem oder Gerätetreiber und bietet die erforderlichen Anweisungen und Anleitungen, um mit anderen Geräten zu kommunizieren oder grundlegende Aufgaben und Funktionen wie beabsichtigt auszuführen.
- Middleware – Middleware ist eine Softwareschicht, die sich zwischen Anwendungen und Betriebssystemen befindet. Middleware wird häufig in verteilten Systemen eingesetzt, wo sie die Softwareentwicklung vereinfacht, indem sie Folgendes bereitstellt:
- Ausblenden der Feinheiten verteilter Anwendungen
- Verschleierung der Heterogenität von Hardware, Betriebssystemen und Protokollen
- Bereitstellung einheitlicher und hochrangiger Schnittstellen, die verwendet werden, um interoperable, wiederverwendbare und portable Anwendungen zu erstellen.
- Bereitstellung einer Reihe gemeinsamer Dienste, die Doppelarbeit minimieren und die Zusammenarbeit zwischen Anwendungen verbessern
- Anwendung – Der Endbenutzer entwickelt die endgültige Softwareanwendung, die auf dem Betriebssystem ausgeführt wird, die Middleware und Firmware verwendet oder mit ihnen interagiert und der Hauptfokus der Zielfunktion des eingebetteten Systems ist. Jede Endanwendung ist einzigartig, während Betriebssysteme und Firmware von Gerät zu Gerät identisch sein können.
Embedded Software vs. Embedded Systems
Die Hardwarekomponenten in einem Gerät, auf dem Embedded-Software ausgeführt wird, werden als "Embedded-System" bezeichnet. Einige Beispiele für Hardwarekomponenten, die in eingebetteten Systemen verwendet werden, sind Stromversorgungsschaltungen, Zentralprozessoren, Flash-Speichergeräte, Timer und serielle Kommunikationsanschlüsse. In den frühen Entwicklungsphasen eines Geräts wird die Hardware, aus der das eingebettete System bestehen soll, und seine Konfiguration innerhalb des Geräts festgelegt. Dann wird Embedded-Software von Grund auf neu entwickelt, um ausschließlich auf dieser Hardware in dieser genauen Konfiguration ausgeführt zu werden. Dies macht das Design von Embedded-Software zu einem Spezialgebiet, das tiefgreifende Kenntnisse der Hardwarefunktionen und der Computerprogrammierung erfordert.
Beispiele für Embedded-Software-basierte Funktionen
Fast jedes Gerät mit Platinen und Computerchips verfügt über diese Komponenten, die in einem eingebetteten Softwaresystem angeordnet sind. Infolgedessen sind eingebettete Softwaresysteme im Alltag allgegenwärtig und finden sich in der Verbraucher-, Industrie-, Automobil-, Luft- und Raumfahrt-, Medizin-, Handels-, Telekommunikations- und Militärtechnik.
Gängige Beispiele für eingebettete softwarebasierte Funktionen sind:
- Bildverarbeitungssysteme in medizinischen Bildgebungsgeräten
- Fly-by-Wire-Steuerungssysteme in Flugzeugen
- Bewegungserkennungssysteme in Überwachungskameras
- Verkehrsleitsysteme in Ampeln
- Zeit- und Automatisierungssysteme in Smart-Home-Geräten
Welche verschiedenen Arten von eingebetteten Systemen gibt es?
Basierend auf den Leistungs- und Funktionsanforderungen gibt es fünf Hauptklassen von eingebetteten Systemen:
- Eingebettete Echtzeitsysteme erledigen Aufgaben auf deterministische und wiederholbare Weise, was von der zugrunde liegenden Architektur und dem Zeitplan des Betriebssystems sowie von der Leistung von Threads, Verzweigungen und Unterbrechung der Latenz beeinflusst wird. Allzweck-Embedded-Systeme enthalten keine Echtzeitanforderung und können Interrupts oder Verzweigungen verwalten, ohne von einer Abschlusszeit abhängig zu sein. Grafikdisplays und Tastatur- und Mausverwaltung sind gute Beispiele für allgemeine Systeme.
- Eigenständige Embedded-Systeme können Aufgaben ohne Host-System oder externe Verarbeitungsressourcen erledigen. Sie können Daten von angeschlossenen Geräten ausgeben oder empfangen, sind aber nicht auf sie angewiesen, um ihre Aufgabe zu erfüllen.
- Eigenständige Embedded-Systeme können ihre Aufgabe ohne Host-System oder externe Verarbeitungsressourcen erfüllen. Sie können Daten von angeschlossenen Geräten ausgeben oder empfangen, sind aber nicht auf sie angewiesen, um ihre Aufgabe zu erfüllen.
- Vernetzte eingebettete Systeme sind auf ein verbundenes Netzwerk angewiesen, um zugewiesene Aufgaben auszuführen.
- Basierend auf der Komplexität der Hardwarearchitektur des Systems gibt es drei Haupttypen von eingebetteten Systemen: Vernetzte eingebettete Systeme sind auf ein verbundenes Netzwerk angewiesen, um zugewiesene Aufgaben auszuführen.
Wie sich Endmärkte auf eingebettete Systeme auswirken
Die Anforderungen und Komponenten von Embedded-Systemen unterscheiden sich je nach den Anforderungen des Zielmarktes. Hier einige Beispiele:
- Konsumgüter – In Anwendungen wie Konsumgütern wie Waschmaschinen, Wearables und Mobiltelefonen betonen eingebettete Systeme die reduzierte Größe der
- System-on-Chip, geringer Stromverbrauch oder Batteriebetrieb und Grafikschnittstellen. In diesen Anwendungen werden konfigurierbare Betriebssysteme und die Möglichkeit, nicht-operative "Domänen" des Designs abzuschalten, geschätzt.
- Netzwerk – Anwendungen, die Konnektivität, Kommunikation, Betrieb und Verwaltung eines Unternehmensnetzwerks ermöglichen. Es stellt den Kommunikationspfad und die Dienste zwischen Benutzern, Prozessen, Anwendungen, Diensten und externen Netzwerken/dem Internet bereit. Embedded-Netzwerkanwendungen konzentrieren sich auf Reaktionsgeschwindigkeit, Paketverarbeitung und Peripherie-Hardwarepfade.
- Industrie – Bei Anwendungen wie Fabrikmanagement, Motoren und Windmühlen liegt der Schwerpunkt in der Regel auf der Sicherung der Cloud-Konnektivität und des deterministischen "Echtzeit"-Betriebs und kann sich stark auf Middleware konzentrieren.
- Medizin, Automobil und Luft- und Raumfahrt – Diese Branchen benötigen sicherheitskritische Systeme mit gemischter Sicherheit, bei denen Teile des Designs voneinander isoliert sind, um sicherzustellen, dass nur die notwendigen Daten in das System ein- oder austreten (Sicherheit) und gleichzeitig der Endbenutzer nicht geschädigt wird (Sicherheit). Beispiele sind autonome Fahrsysteme in Automobilen und medizinischen Geräten. Diese Embedded-Systeme können eine Mischung aus Open-Source- (Linux) und deterministischen Echtzeitbetriebssystemen (RTOS) aufweisen und bewährte Middleware stark nutzen.
Warum ist Automotive-Embedded-Software anders?
In der Automobilelektronik finden komplexe Echtzeitinteraktionen über mehrere eingebettete Systeme hinweg statt, die jeweils Funktionen wie Bremsen, Lenkung, Aufhängung, Antriebsstrang usw. steuern. Das physische Gehäuse, in dem sich jedes eingebettete System befindet, wird als elektronische Steuereinheit (ECU) bezeichnet. Jedes Steuergerät und seine eingebettete Software sind Teil einer komplexen elektrischen Architektur, die als verteiltes System bezeichnet wird.
Durch die Kommunikation miteinander können die Steuergeräte, aus denen das verteilte System eines Fahrzeugs besteht, eine Vielzahl von Funktionen ausführen, wie z. B. automatische Notbremsung, adaptive Geschwindigkeitsregelung, Stabilitätskontrolle, adaptives Kurvenlicht und vieles mehr. Eine einzelne Funktion kann Interaktionen über 20 oder mehr Embedded-Softwareanwendungen erfordern, die über zahlreiche Steuergeräte verteilt sind, die über mehrere Netzwerkprotokolle verbunden sind. Komplexe Steuerungsalgorithmen, die mit der eingebetteten Software bereitgestellt werden, gewährleisten das richtige Timing von Funktionen, benötigten Ein- und Ausgängen sowie Datensicherheit.
Gängige Beispiele für anwendungsbasierte Funktionen von Automobilsoftware sind:
- ADAS-Funktionen (Advanced Driver Assist Systems) wie adaptive Geschwindigkeitsregelung, automatische Notbremsung, Spurhalteassistent, Verkehrsassistent, Spurverlassenswarnung
- Batteriemanagement
- Drehmoment-Kompensation
- Steuerung der Kraftstoffeinspritzrate
Steuergeräte-Software-Stack
Die elektronische Steuereinheit (ECU) besteht aus einer Hauptrecheneinheit mit Hardware auf Chip-Ebene und einem Stapel eingebetteter Software. Bei den Automobilherstellern gibt es jedoch einen zunehmenden Trend, Steuergeräte mit komplexen integrierten Schaltkreisen zu entwerfen, die mehrere Rechenkerne auf einem einzigen Chip enthalten – ein sogenanntes System on a Chip (SoC). Diese SoCs können eine Vielzahl von Steuergeräteabstraktionen beherbergen, um Hardware zu konsolidieren. Der Software-Stack für ein Steuergerät umfasst in der Regel eine Reihe von Lösungen, von Low-Level-Firmware bis hin zu High-Level-Embedded-Software-Anwendungen.
Steuergeräte-Stack | Beschreibung |
Eingebettete Softwareanwendung | Steuerungsalgorithmen, Verarbeitung, Dienste |
Anwendungs-Framework | Sicherheits- und Schutz-Frameworks |
Betriebsumgebung | AUTOSAR classic, AUTOSAR Adaptive, Ein-/Ausgangskanäle |
Eingebettete Virtualisierungen | Echtzeit-Betriebssystem, Steuergeräte-Abstraktionen |
Firmware | Bootloader, sicherer Speicher, sicheres Threading |
Hardware | Siliziumbasierte Geräte, Mikrocontroller, ein- oder mehrschichtige Platinen |