Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

Was sind eingebettete Systeme?

Kopfbild von Ricardo Camacho, Director of Safety & Security Compliance
10. Oktober 2023
7 min lesen

Eingebettete Systeme begleiten uns schon seit Ewigkeiten. Lesen Sie weiter, um zu erfahren, was sie sind, einige Sicherheitsbedenken bei eingebetteten Systemen und wie angemessene Tests dazu beitragen können, sie sicher und geschützt zu machen.

Einführung in eingebettete Systeme

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-Einschränkungen eingebetteter Systeme

Eingebettete Systeme laufen auf Hardware, die so konzipiert ist, dass sie die Einschränkungen des Produkts erfüllt, in dem sie verwendet werden. Die Hardware wird oft so spezifiziert, dass sie geschäftliche (z. B. Kosten) und technische Ziele erfüllt. Diese Produkte können Millionen von Einheiten umfassen und jahrzehntelang betrieben werden, was einen Bedarf an Zuverlässigkeit und Qualität sowohl der Hardware als auch der Software mit sich bringt.

Einschränkungen der Hardware

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

  • Begrenzte Rechenleistung
  • Memory
  • 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

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 laufen normalerweise auf 8- und 16-Bit-Mikrocontrollern ohne formale Betriebssysteme, auch Bare Metal genannt. Die Anwendungen steuern normalerweise ein einzelnes Subsystem basierend auf einigen wenigen Sensoren. Sie sind möglicherweise nicht mit einem Netzwerk verbunden und arbeiten möglicherweise autonom. Die Steuerung auf hoher Ebene findet woanders statt, beispielsweise bei einem SCADA-System (Supervisory Control and Data Acquisition), normalerweise mit viel komplexerer Hardware und Software.

Mittlere Skala

Diese Systeme verwenden häufig kommerzielle oder Open-Source-Embedded-Betriebssysteme, die häufig auch Echtzeit-Betriebssysteme (RTOS) sind. Diese Betriebssysteme stellen die erforderliche Hardware-Abstraktion, Multiprozessor-, Multithreading-, Netzwerk- und Schnittstellenbibliotheken bereit. Beispiele beinhalten FreeRTOS, VxWorks und 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.

Normalerweise 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 umfassen.

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 beispielsweise den dedizierten Charakter 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 usw Automobile.
  • 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 tun. Sämtliche Desktop-Software wie Produktivität, Webbrowser und Videospiele gelten nicht als eingebettet. Unternehmenssoftware, Cloud-Infrastruktur und Backend-Systeme sind ebenfalls nicht eingebettet.

Wenn es auf allgemeiner Hardware wie einem typischen PC oder Server läuft, gilt es normalerweise nicht als eingebettet. Physisch gesehen sind die Anwendungen nicht als Einheit und untrennbar mit der Hardware verbunden. PCs werden beispielsweise möglicherweise mit dem Betriebssystem Microsoft Windows ausgeliefert, dieses Betriebssystem kann jedoch ersetzt und entfernt werden, ohne dass sich die Hauptfunktion des PCs ändert. Bei nicht eingebetteter Software handelt es sich in der Regel um Anwendungssoftware, die auf unterschiedlicher 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 Angriffen Tür und Tor. Eine ganze Reihe von Sicherheitsproblemen bei IoT-Geräten wird von unserem eigenen Code Curmudgeon in seinem Dokument dokumentiert 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 Natürlich sind wir auch auf Facebook zu finden: <br> <a href="https://www.facebook.com/tijhof.de" target="_blank" rel="noopener"><img class="alignleft wp-image-15850 size-full" src="https://tijhof.nl/wp-content/uploads/2024/03/facebookGmBh.png" alt="" width="250" height="50"></a>. Genauer gesagt, durch strenge Überprüfung und Bestätigung über den gesamten Entwicklungslebenszyklus. Das gilt vor der Softwareentwicklung, in der frühen Anforderungsanalyse und bis zum Lebensende.

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 einhalten und durch Audits nachweisen, dass sie ihrer Sorgfaltspflicht nachkommen und alle Sicherheitsbedenken berücksichtigt haben. Der Aufbau und Test dieser Art der Hardware- und Softwareentwicklung ist zeitaufwändig und teuer, aber für die Sicherstellung des korrekten Verhaltens bei der Bereitstellung unerlässlich.

Gewährleistung der Sicherheit eingebetteter Systeme

Eingebettete Systeme, insbesondere sicherheitskritische eingebettete Systeme, können nicht ausfallen. Wenn sie es tun, sind die Folgen verheerend. Es werden Leben verloren gehen oder Personen werden schwer verletzt. Es besteht auch die Möglichkeit eines Sachschadens. Daher sind Softwaretests von entscheidender Bedeutung.

Softwaretests stellen sicher, dass das eingebettete System sicher und zuverlässig ist. Tests helfen auch bei der Zertifizierung dieser Fakten. Die im vorherigen Abschnitt erwähnten Standards zur funktionalen Sicherheit bieten Orientierung und empfehlen Testmethoden wie statische Codeanalyse, Unit-Tests, Integrationstests, Systemtests, Regressionstests, strukturelle Codeabdeckung und viele andere Arten der Gefahrenanalyse, Bedrohungsanalyse und Risikobewertung Aktivitäten, um das sicherste eingebettete System zu gewährleisten, das möglich ist.

Für viele eingebettete Systeme gelten auch Zertifizierungsanforderungen, die von Bundesaufsichtsbehörden auferlegt werden. In den USA gibt es die FDA für medizinische Geräte, die FAA für Avionik, die NHTSA für Kraftfahrzeuge, die FRA für Schienenfahrzeuge und noch mehr. Diese Behörden erlassen Vorschriften, die die Sicherheit der Öffentlichkeit gewährleisten. Darüber hinaus streben Unternehmen selbst nach Qualität, denn Rückrufe, Klagen und langwierige Rechtsstreitigkeiten können ein Unternehmen zerstören.

Statische Codeanalyse für die eingebettete Entwicklung