Parasoft wurde im GigaOm Radar-Bericht zum automatisierten Funktionstest von APIs als Marktführer und Schnellstarter ausgezeichnet. Analystenbericht abrufen

Parasoft wurde im GigaOm Radar-Bericht zum automatisierten Funktionstest von APIs als Marktführer und Schnellstarter ausgezeichnet. Analystenbericht abrufen
Zum Abschnitt springen
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.
Zum Abschnitt springen
Zum Abschnitt springen
Eingebettete Systeme sind mikroprozessorbasierte Computersysteme, die normalerweise in ein System oder Produkt eingebaut sind und eine spezielle Betriebsfunktion haben. Mit anderen Worten: Eingebettete Systeme sind die verborgene „Intelligenz“ hinter allen Geräten, die wir verwenden, den Autos, die wir fahren, den Flugzeugen, mit denen wir fliegen, und den Zügen, mit 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.
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.
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:
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.
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.
Häufige Einschränkungen für eingebettete Systemhardware sind:
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.
Beispiele für Zielhardware umfassen kleine Mikrocontroller wie:
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:
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.
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.
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.
Die Anwendungen eingebetteter Systeme sind zu zahlreich, um sie aufzulisten, aber die offensichtlichen hochkarätigen Beispiele umfassen:
Unsere Smartphones, Tablets, Smartwatches und Smart-TVs sind allesamt eingebettete Systeme! Hier sind weitere Anwendungen, die auf eingebetteten Systemen laufen:
Tatsächlich werden 98 % der weltweit produzierten Mikroprozessoren in eingebetteten Systemen verwendet.
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.
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.
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 Validierungsprüfungen ü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.
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.