Holen Sie sich die neuesten wichtigen Update-Informationen für die Log4j-Sicherheitslücke. Sehen Sie sich an, wie Sie das Problem mithilfe der Parasoft-Anleitung beheben können. Erfahren Sie mehr >>

X
BLOG

Was ist ein eingebettetes System?

Was ist ein eingebettetes System? Lesezeit: 6 Minuten

Eingebettete Systeme sind mikroprozessorbasierte Computersysteme, die normalerweise in ein System oder Produkt integriert sind und eine dedizierte Betriebsfunktion haben. Mit anderen Worten, eingebettete Systeme sind die versteckten „Smarts“ hinter allen Geräten, die wir verwenden, den Autos, die wir fahren, den Flugzeugen, mit denen wir fliegen, und den Zügen, in denen wir fahren.

Anstatt aus separaten Komponenten wie Desktop-Computern, Servern und anderen ähnlichen Computerdomänen zu bestehen, werden eingebettete Systeme in Produkte eingeschlossen und umfassen integrierte Hardware und Software.

Wie werden eingebettete Systeme verwendet?

Das Interessante an eingebetteten Systemen ist die Anwendungsbreite. Sie reichen von kleinen Controllern in Smart-Home-Geräten über Avionik-Systeme in Flugzeugen bis hin zu großen Netzwerk-Switches, aus denen unsere Telekommunikationsnetze bestehen. Dies macht sie auch schwierig zu konzipieren und zu entwickeln. Die Einschränkungen des beabsichtigten Produkts wirken sich auf den Leistungsumfang der eingebetteten Hardware und Software aus.

Eingebettete Systeme sind allgegenwärtig, aber den meisten Verbrauchern relativ unbekannt. Moderne Autos haben bis zu 100 Millionen Codezeilen in ihnen und das meiste davon nicht im Infotainmentsystem. Ein Großteil der Soft- und Hardware eines modernen Autos steckt in den verschiedenen Mikrocontrollern und Motorsteuergeräten, die moderne Funktionen steuern und überwachen.

Die Architektur eingebetteter Systeme

Eingebettete Systeme bestehen wie oben erwähnt aus Hardware und Software. Sie werden häufig in Anwendungen verwendet, bei denen sowohl etwas Physisches in der Umgebung erfasst als auch als Reaktion darauf gesteuert werden muss.

Ein einfaches Beispiel ist ein HLK-System mit einem eingebetteten Thermostatregler. Ein solches System würde die Raumtemperatur erfassen und entweder die Heizung oder die Klimaanlage ansteuern. Es kann eine Form der Kommunikation über eine Netzwerkschnittstelle erfordern und die Temperatur auf einem LCD-Bildschirm (Mensch-Maschine-Schnittstelle oder HMI) anzeigen.

Solche Systeme werden oft als „Echtzeit“ oder „ereignisgesteuert“, da sie rechtzeitig auf reale Ereignisse reagieren müssen. Je nach Art und Kritikalität der Anwendung ist es wichtig, auf Ereignisse zu einem bestimmten Zeitpunkt zu reagieren. Sicherheitskritische Systeme wie das Antiblockiersystem (ABS) im Auto müssen innerhalb von Millisekunden reagieren. Solche Systeme werden als „harte Echtzeit“ bezeichnet, was bedeutet, dass sie die erforderlichen Fristen einhalten müssen oder ein Fehler aufgetreten ist. Systeme mit lockereren Fristen werden als „soft real time“ bezeichnet. In den meisten dieser Fälle laufen diese Systeme auf einer Art Echtzeit-Betriebssystem (RTOS).

Hier ist ein einfaches Beispiel für eine eingebettete Systemarchitektur:

Diagramm, das eine Umgebung mit einem eingebetteten System und einem Controller zeigt. Das eingebettete System wird durch eine transparente Box mit blauem Umriss und vier angeschlossenen Boxen symbolisiert: HMI, Sensoren, Aktoren, Netzwerk/Seriell/USB. Diese zeigen alle zu und zurück von Controller-Elementen, die in einer grünen Controller-Box reflektiert und enthalten sind, zu denen RAM, ROM, I/O und CPU gehören.

Ebenfalls einzigartig für eingebettete Systeme ist die Verwendung einer Mikrocontroller-Architektur. Im Gegensatz zu Desktop- oder Serversystemen haben Mikrocontroller normalerweise den gesamten RAM, ROM und I/O auf einem einzigen Chip. Diese Controller verfügen oft über die erforderlichen E/A-Funktionen, um mit Sensoren und Aktoren zu interagieren und sich in Netzwerk- und andere Kommunikationsgeräte zu integrieren.

Hardware eingebetteter Systeme

Eingebettete Systeme werden auf Hardware ausgeführt, die so ausgelegt ist, dass sie die Einschränkungen des Produkts, in dem sie verwendet werden, erfüllt. Die Hardware wird oft so spezifiziert, dass sie geschäftliche (z. Diese Produkte können Millionen von Einheiten umfassen und jahrzehntelang betrieben werden, was den Bedarf an Hardware- und Software-Zuverlässigkeit und -Qualität impliziert.

Einschränkungen der Hardware

Häufige Einschränkungen für eingebettete Systemhardware sind:

  • Begrenzte Rechenleistung
  • Speicher
  • Lagerung

Diese Einschränkungen begrenzen die Leistung und Komplexität der Anwendung, die die Hardware unterstützen kann. Dies wiederum erhöht die Design- und Entwicklungsherausforderungen, insbesondere wenn versucht wird, mehr Funktionen zu integrieren.

Einschränkungen bei der Hardware von Embedded-Systemen werden durch geschäftliche Anforderungen bestimmt, die sich häufig auf die Rentabilität des Endprodukts auswirken.

  • Stückliste kosten. Weniger komplexe Hardware ist billiger in der Anschaffung und hat höhere Gewinnmargen. Mit zunehmender Softwarekomplexität übersteigt sie jedoch schnell die Hardwarekapazität. Der Wechsel zu größeren Prozessoren bedeutet höhere Stücklistenkosten (BOM) und erhebliche Auswirkungen auf die Software.
  • Größe und Gewicht. Endprodukte sind durch Größe und Gewicht begrenzt, was sich auf die Hardwareauswahl auswirken kann. Komplexere Hardware erfordert möglicherweise größere Leiterplatten, Netzteile und Wärmeableitung.
  • Energieverbrauch. Eingebettete Systeme befinden sich häufig in batteriebetriebenen Geräten, bei denen der Stromverbrauch streng kontrolliert wird. Sie können sich auch in höherwertigen Systemen befinden, bei denen Wärme ein Problem darstellt.

Beispiele für Zielhardware umfassen kleine Mikrocontroller wie:

  • Das allgegenwärtige 8-Bit 8051
  • PIC16-MCU von Microchip
  • ST Micro STM32 32-Bit-ARM-Cortex-MCU
  • Eingebettete Systeme auf einem Chip (TI's OMAP oder im Raspberry Pi)
  • Große Multiprozessor-64-Bit-Systeme basierend auf ARM-, Intel- und AMD-Prozessoren
Anforderungsmanagement und Rückverfolgbarkeitsmatrix

Software eingebetteter Systeme

Der größte Teil des Engineering-Aufwands fließt in die Software eingebetteter Systeme. Tatsächlich benötigen die meisten Hersteller eine Softwaregruppe, um die in ihre Produkte eingebetteten Anwendungen zu entwickeln. Die CEOs dieser Unternehmen scherzen scherzhaft: „Wir sind ein Softwareunternehmen, das sich als Widget-Hersteller ausgibt.“ Die Realität ist, dass Software in vielen Märkten zum Schlüsselbereich der Differenzierung und Innovation geworden ist, auch in Unternehmen, deren Hauptprodukt nicht Software ist.

Wie bei der Hardware hängt die Komplexität der Software von der beabsichtigten Anwendung ab, die stark variieren kann. Es gibt jedoch drei Hauptkategorien, in die die meisten eingebetteten Softwares passen:

  • Kleiner Maßstab
  • Mittlere Skala
  • Großformat

Kleiner Maßstab, „Bare Metal“

Diese Anwendungen befinden sich normalerweise auf 8- und 16-Bit-Mikrocontrollern ohne formale Betriebssysteme, auch bekannt als Bare Metal. Die Anwendungen steuern in der Regel ein einzelnes Subsystem basierend auf wenigen Sensoren. Sie sind möglicherweise nicht mit einem Netzwerk verbunden und arbeiten möglicherweise autonom. Die Steuerung auf hoher Ebene findet anderswo statt, beispielsweise mit einem Überwachungssteuerungs- und Datenerfassungssystem (SCADA), normalerweise mit viel komplexerer Hardware und Software.

Mittlere Skala

Diese Systeme verwenden oft kommerzielle oder Open Source eingebettete Betriebssysteme, die häufig auch Echtzeit sind (RTOS). Diese Betriebssysteme bieten die notwendige Hardwareabstraktion, Multiprocessing und Multithreading, Netzwerk- und Schnittstellenbibliotheken. Beispiele beinhalten FreeRTOS, VxWorksund QNX, und in einigen Fällen eingebettetes Linux. Die Anwendungen können von harten Echtzeit-, sicherheitskritischen Anwendungen wie Flugzeugavionik bis hin zu drahtlosen Routern und HLK-Systemen variieren.

Üblicherweise handelt es sich bei der Hardware um 32-Bit-Mikrocontroller und SoCs mit mehr RAM und Flash als bei kleinen Systemen. Allerdings ist die Softwarekomplexität in dieser Kategorie um Größenordnungen höher, da Anwendungen Zehntausende bis eine Million Codezeilen (LOC) oder mehr aufweisen.

Große Skala

Systeme dieser Kategorie sind normalerweise sehr komplex mit mehreren Funktionen und Fähigkeiten. Sie arbeiten oft auf serverähnlicher Hardware mit Multiprozessoren. Anwendungen erfordern oft eine Echtzeitverarbeitung und können dennoch High-End-RTOS oder Linux verwenden. Beispiele hierfür sind Unternehmensnetzwerk-Switches und -Router und Telekommunikationsnetzwerk-Backbone-Systeme, Börsenverarbeitung und Flugsicherung. Diese Systeme sind hochkomplex und mit Codebasen von mehreren Millionen Codezeilen verbunden.

Trotz der Vielfalt der Anwendungen gibt es einige gemeinsame Merkmale, wie z. B. die spezielle Art der Anwendungen. Eingebettete Systeme laufen oft das ganze Jahr über, 24 Stunden am Tag. Sie teilen auch die Notwendigkeit, zuverlässig, sicher, energieeffizient und kostengünstig in der Herstellung zu sein. Sie müssen mehr denn je sicher sein, worüber wir später sprechen werden.

Anwendungen eingebetteter Systeme

Die Anwendungen eingebetteter Systeme sind zu zahlreich, um sie aufzulisten, aber die offensichtlichen hochkarätigen Beispiele umfassen:

  • Lebensrettende Geräte wie Herzschrittmacher
  • Kritische Anwendungen wie Flugsteuerung in Flugzeugen und automatisierte Fahrerassistenz
  • Software, die Gadgets und Smart-Home-Geräte ausführt

Unsere Smartphones, Tablets, Smartwatches und Smart-TVs sind allesamt eingebettete Systeme! Hier sind weitere Anwendungen, die auf eingebetteten Systemen laufen:

  • Industrielle Automatisierung.
  • Führung und Kontrolle von Kernkraftwerken, Stromerzeugung und -verteilung.
  • Strom, Wärme und Licht, um die Wirtschaft am Laufen zu halten.
  • Sicherheitskritische Software in Zügen, Flugzeugen und Autos.
  • Telekommunikationstürme, Hubs, Switches und Router für Internet- und Telekommunikationsvorgänge.
  • Ausgeklügelte Waffen, Kampfjets, Panzer und Raketen haben eingebettete Systeme als Herzstück.

Tatsächlich werden 98 % der weltweit produzierten Mikroprozessoren in eingebetteten Systemen verwendet.

Was ist nicht eingebettet?

So allgegenwärtig eingebettete Systeme auch sind, es gibt immer noch viele Systeme und Software, die dies nicht sind. Alle Desktop-Software wie Produktivität, Webbrowser und Videospiele werden nicht als eingebettet betrachtet. Unternehmenssoftware, Cloud-Infrastruktur und Back-End-Systeme sind ebenfalls nicht eingebettet.

Wenn es auf allgemeiner Hardware wie einem typischen PC oder Server ausgeführt wird, wird es normalerweise nicht als eingebettet betrachtet. Physisch sind die Anwendungen nicht als Einheit mit der Hardware gebündelt und untrennbar. PCs werden beispielsweise möglicherweise mit Microsoft Windows-Betriebssystemen ausgeliefert, aber dieses Betriebssystem kann ersetzt und entfernt werden, ohne die Hauptfunktion des PCs zu ändern. Nicht eingebettete Software ist in der Regel Anwendungssoftware, die auf einer Vielzahl von Hardware remote oder lokal ausgeführt werden kann.

Sicherheitsbedenken für eingebettete Systeme

Eingebettete Systeme spielen in sicherheits- und sicherheitskritischen Geräten eine wichtige Rolle. Produkte wie Herzschrittmacher und ABS-Bremssteuerungen können nicht versagen. Leben hängen davon ab, dass diese Geräte die ganze Zeit richtig funktionieren. Aufsehenerregende Fehler wie die Therak 25 Vorfall, bei dem Patienten massiv mit Strahlung überdosiert wurden oder die Ariane-5-Raketen-Katastrophe verursacht durch einen Integer-Überlauffehler.

Sicherheit ist heute ein wichtiges Anliegen, da immer mehr eingebettete Systeme online gehen und über das Internet (das Internet der Dinge) verbunden sind. Diese Verbindung schafft neue Funktionen und Möglichkeiten und öffnet die Tür für Angriffe. Eine ganze Reihe von Sicherheitsproblemen bei IoT-Geräten dokumentiert unser eigener Code Curmudgeon in seinem IoT-Hall of Shame. Unsichere Geräte sind unsicher, daher müssen Sicherheit und Schutz bei diesen kritischen Geräten gleichermaßen berücksichtigt werden.

Wie machen wir eingebettete Systeme sicher und sicher?

Der einzige Weg, um sicherzustellen, dass eingebettete Systeme sicher und geschützt sind, ist durch Testen. Genauer gesagt durch rigoroses Verifizierung und Validierung während des gesamten Entwicklungslebenszyklus. Das gilt vor der Softwareentwicklung, in der frühen Anforderungsanalyse bis hin zum End of Life.

Es gibt bestimmte Standards, die von Branchen befolgt werden müssen, in denen Sicherheit ein wichtiges Anliegen ist, darunter die folgenden:

Hersteller dieser Geräte müssen die Standards befolgen und durch Audits nachweisen, dass sie ihrer Sorgfaltspflicht nachkommen und alle Sicherheitsbedenken berücksichtigt haben. Diese Art der Hardware- und Softwareentwicklung ist zeitaufwändig und teuer in der Erstellung und Prüfung, aber unerlässlich, um ein korrektes Verhalten bei der Bereitstellung sicherzustellen.

Weißer Text auf marineblauem Hintergrund: Optimizing Unit and Regression Testing for Embedded Systems mit roter Schaltfläche darunter, auf der Whitepaper herunterladen steht.

Geschrieben von

Richard Camacho

Ricardo ist Senior Technical Product Marketing Manager für die eingebetteten Testlösungen von Parasoft und verfügt über Erfahrung in der SDLC- und Testautomatisierung eingebetteter Echtzeit-, sicherheits- und sicherheitskritischer Anwendungen sowie in der Softwarekonformität mit Industriestandards.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.