Software-Portabilität ist ein wichtiger Treiber für Embedded IoT

By 01.30.2023original article

Mit der zunehmenden Verbreitung von Edge-Intelligenz und immer anspruchsvolleren Machine-Learning-Methoden in eingebetteten IoT-Geräten werden Hardware-Rechnerarchitekturen immer komplexer, was wiederum die Softwareentwicklung vor größere Herausforderungen stellt.

Bei diesen eingebetteten IoT-Geräten handelt es sich um kleine, eingeschränkte Systeme und die Code-Entwicklung muss mit kontinuierlichen und nunmehr noch schnelleren Fortschritten bei der Hardware Schritt halten.

Ein Ansatz, der einige dieser Herausforderungen bewältigt, ist die Software-Portabilität. Wie der CEO von MicroEJ, Fred Rivard, kürzlich in einem Interview mit EE Times sagte: „Um Hardware-Innovationen schnell nutzen zu können, müssen Sie Ihre Software-Assets wirksam einsetzen.”

Die Verwendung von „Containern” bietet eine solche Möglichkeit, diese Assets zu nutzen. Wie in dem Artikel „Why the future of embedded software lies in containers” erklärt wird, sind Container in der Lage ein Programm mit all seinen Abhängigkeiten in eine einzelne, isolierte, ausführbare Umgebung zu packen. Tatsächlich wurden Container auch als leichtgewichtige virtuelle Maschinen beschrieben.

Google Cloud fügt hinzu, dass Container die gemeinsame Nutzung von, CPU-, Speicher-, Storage- und Netzwerkressourcen auf Betriebssystemebene erleichtern und einen logischen Paketierungsmechanismus bieten. Dieser ermöglicht es Anwendungen von der Umgebung, in der sie tatsächlich ausgeführt werden, zu abstrahieren.

Es werden drei Vorteile von Containern genannt:

  • Sie bieten eine klare Trennung von Verantwortlichkeiten und ermöglichen es den Entwicklern, sich auf die Anwendungslogik und die Abhängigkeiten zu konzentrieren.
  • Sie können praktisch überall ausgeführt werden, was die Entwicklung und Bereitstellung unter Linux sowie auf virtuellen Maschinen, physischen Servern und auf dem Rechner eines Entwicklers erheblich erleichtert.
  • Sie ermöglichen die Isolierung von Anwendungen, indem sie CPU-, Speicher-, Storage- und Netzwerkressourcen auf Betriebssystemebene virtualisieren und Entwicklern eine von anderen Anwendungen logisch isolierte Sicht auf das Betriebssystem bieten.

Daher können Container die von Rivard angesprochene Portabilität bieten. Der Container ermöglicht es einer Anwendung, unabhängig von der Host-Umgebung zu laufen. Dies führt zu einer konsistenten Ausführung in einer Vielzahl von Umgebungen.

Jacob Beningo, Berater für Embedded Software, erklärt: „Container helfen dabei, die Konsistenz über mehrere Umgebungen hinweg zu gewährleisten und reduzieren die Probleme, die durch unterschiedliche Konfigurationen entstehen. Haben Sie zum Beispiel schon einmal versucht, einen neuen Entwickler mit dem von Ihnen verwendeten Build-System zum Laufen zu bringen? Oftmals ist es sehr mühsam sicherzustellen, dass jeder Anwender identische Versionen von Tools, Bibliotheken etc. hat. Durch eine Containerisierung der Entwicklungsumgebung kann dieselbe Umgebung für eine beliebige Anzahl von Entwicklern bereitgestellt werden, unabhängig von der Konfiguration ihres lokalen Systems.“

Microservices ermöglichen auch Plug-and-Play-Fähigkeit für eingebettete IoT

Neben Containern sind Microservices eine weitere Möglichkeit, Software-Plug-and-Play-Fähigkeiten für eingebettete IoT-Geräte zu ermöglichen.
Sie unterteilen eine Anwendung in eine Sammlung kleiner autonomer Dienste, wobei jeder Microservice unabhängig eingesetzt und mit anderen Microservices in der Anwendung verbunden werden kann.
„Eine klar definierte Schnittstelle wird verwendet, um die Kommunikation zwischen den Microservices zu ermöglichen, damit sie zusammenarbeiten können, um die übergreifenden Ziele der Anwendungen zu erreichen“, so Beningo. „Eine Microservice-Architektur ist flexibler und skalierbarer als eine traditionelle monolithische Architektur.“

 

Luos funktioniert durch Containerisierung von eingebetteten Funktionen in Services auf den Geräten, sodass ein Mikrocontroller eine Reihe von Services hosten kann. Diese Funktionen können überall in einem Luos-Netzwerk bereitgestellt werden und direkt zugänglich sein, unabhängig davon, wo sie sich im Netzwerk befinden.

 

Eine solche Herangehensweise erfolgt mit Luos, einer Open-Source-Containerplattform, die eine Microservices-Architektur für eingebettete Systeme ermöglicht.

Luos funktioniert, indem eingebettete Funktionen auf den Geräten verpackt werden, sodass ein Mikrocontroller (MCU) eine Reihe von Diensten hosten kann, z.B. die Datenerfassung von Sensoren, Aktoren oder bestimmte Verhaltensweisen für die Geräte. Diese Funktionen werden innerhalb von Diensten platziert, die dann überall in einem Luos-Netzwerk bereitgestellt und direkt aufgerufen werden können – unabhängig davon, wo sie sich im Netzwerk befinden. Diese Services können auch dynamisch verbunden und getrennt werden und können von einer Anwendung erkannt und gefunden werden.

Bei der Luos-Engine handelt es sich um eine eingebettete, leichtgewichtige, echtzeitfähige C-Code-Bibliothek, die in die Firmware eingebunden und verwendet werden kann. Diese Bibliothek bietet eine einfache API zur Erstellung, Verwaltung und Interaktion mit Diensten. Die Engine ist Open-Source unter dem Apachen 2.0-Lizenz und auf GitHub* verfügbar.

Ermöglichung von verteilter Intelligenz und softwaredefinierten Produkten

Das Aufkommen von Virtualisierung und Software-Containern für kostengünstige, energieeffizientere Geräte fördert die Verbreitung von intelligenter Edge-IoT. Es unterstützt zudem das Konzept der verteilten Intelligenz mit der Möglichkeit, ein Netzwerk programmierbarer Geräte mit aktualisierbaren Funktionen zu schaffen, was softwaredefinierte Produkte ermöglicht.

Diese „softwaredefinierte“ Fähigkeit ist in Bereichen wie der Telekommunikation seit Jahren bekannt. In jüngster Zeit passt sich auch der Automobilsektor an diese Fähigkeit an, getrieben durch das Aufkommen von softwaredefinierten Fahrzeugen.

Softwaredefinierte Produkte und Dienstleistungen werden durch die Kombination aus Hardware-Programmierbarkeit und der Möglichkeit Funktionen über Over-the-Air (OTA)-Updates hinzuzufügen oder zu ändern ermöglicht. Durch Virtualisierung und Abstraktion von Workloads von der zugrundeliegenden Hardware können flexiblere und agilere Hardware-Plattformen sowie die Bereitstellung von softwaredefinierten oder softwaregestützten Diensten ermöglicht werden.

Bei softwaredefinierten Produkten werden Funktionen unabhängiger von ihrer Hardwarespezifikation. Dies ermöglicht einen größeren Funktionsumfang und eine schnellere Entwicklung, da die Funktionen viel einfacher zu aktualisieren sind. Definitionsgemäß sind die wichtigsten Produktfunktionen softwaregesteuert und portabel, so dass sie die Vorteile neuer Hardware nutzen können und sich problemlos auf verschiedene Hardware-Varianten übertragen lassen.

 

Software-Container von MicroEJ unterstützen die Anpassung und Personalisierung von Smart-Meter-Anwendungen, um bereits auf neue Verbraucherbedürfnisse einzugehen, während diese sich entwickeln. Sie bieten eine kosteneffektive Plattform, die zukünftige Entwicklungen ermöglicht.

 

Für eine Entwicklungsorganisation reduziert ein softwaredefinierter Ansatz Risiken und Kosten. Er ermöglicht die Parallelisierung von Hardware- und Software-Entwicklung, was zu einer höheren Produktivität neuer Produkte und einer verkürzten Time-to-Market führt. Er vereinfacht Upgrades und Wartung und ermöglicht eine schnelle Anpassung an Marktbedürfnisse, wodurch die Produktreichweite und Lebensdauer verlängert wird. In der Regel lässt sich ein softwaredefiniertes Produkt nach der Auslieferung noch verändern, da mehr Nutzungsdaten gesammelt und mehr Anwendungsfälle definiert werden können.

Diese natürliche Entkopplung von der Hardware erhöht auch die Portabilität von Siliziumchips und reduziert die Risiken in der Lieferkette.

Am Beispiel der Automobilbranche haben Autohersteller ihre Designs so weiterentwickelt, dass eine standardisierte Hardware-Plattform für eine Reihe von Modellen verwendet werden kann. Da die Hardware aus konfigurierbaren Geräten besteht, sind sie in der Lage über OTA-Updates Dienste anzubieten, die die Nutzer auf Pay-per-Use-Basis erwerben können.

Die Industrie nennt dies das softwaredefinierte Fahrzeug. Autohersteller und Analysten sind der Meinung, dass diese Fähigkeit die Branche vom „Besitz“ eines Fahrzeugs in eine „Nutzung“ des Fahrzeugs umwandeln wird, da die Fahrzeuge in verschiedenen Umgebungen eingesetzt werden können. Auf einer Konferenz in London über die Zukunft des Autos im letzten Sommer sagten mehrere CEOs, dass Software die Möglichkeit bietet, die Marke eines Automobilherstellers zu differenzieren.

Nicht nur in der Automobilbranche, sondern in fast allen Sektoren erwarten die Hersteller, dass sie in der Lage sind, ihre Dienste an den Verbraucher oder das Unternehmen anzupassen – egal ob es sich um Autos, Radios oder Netzwerke handelt.

Alle Sektoren verstehen die Vorteile der softwaredefinierten Prinzipien. Dies beginnt mit der Software, wobei alles agil und flexibel wird, von der Produktentwicklung bis hin zu Upgrades nach der Veröffentlichung. Zu den Grundpfeilern der Evolution der Software-Entwicklung in der Cloud, softwaredefinierten Netzwerken, mobilen Anwendungen und IT gehören:

  • Agile, kontinuierliche Integration und DevOps-Prozesse
  • Virtualisierung, um mehr aus den Hardware-Plattformen herauszuholen
  • Übernahme von Standardplattformen wie Linux, Android und Microsoft für die Cloud-native Entwicklung
  • Microservices, Docker-Container und Kubernetes-Orchestrierung

Laut MicroEJ kann dieser Ansatz, der ursprünglich für die Cloud konzipiert wurde, nicht einfach für viel kleinere Ziele wie z.B. Edge-Geräte wiederverwendet werden. Es ist notwendig, eine Standardplattform für Edge-Geräte aufzubauen und zu entwickeln, die Virtualisierung auf die kleinsten Ziele bringt, Container und containerisierte Apps mit App-Orchestrierung anbietet und Microservices auf die Geräte bringt.

 

Die MICROEJVEE (Virtual Execution Environment) ist eine eingebettete Software-Plattform, die auf jedem Prozessor ausgeführt werden kann und den kleinen virtuellen Prozessor MEJ32 (einen 32-Bit-Virtual-Core) sowie eine Vielzahl kostenloser Bibliotheken enthält.

 

Der von MicroEJ verfolgte Ansatz basiert auf der virtuellen Ausführungsumgebung MicroEJ VEE (Virtual Execution Environment), einer standardisierten Embedded-Software-Plattform, die auf allen Prozessoren, einschließlich MCUs, Mikroprozessoren und System-on-Chip, ausgeführt werden kann.

Die VEE fungiert als Software-Container, der auf jedem Betriebssystem/RTOS läuft, das üblicherweise in eingebetteten Systemen verwendet wird (FreeRTOS, QP/C, ucOS, ThreadX, mBed OS, Mbed OS, VxWorks, PikeOS, Integrity, Linux), aber auch ohne RTOS (Bare-Metal) oder auf einem proprietären RTOS ausgeführt werden kann.

Erschließung von Geschäftsmöglichkeiten

Gerätehersteller haben mit allen möglichen Geschäftsmodellen gespielt, um wiederkehrende Einnahmen zu erzielen, sobald das Produkt auf dem Markt und im Einsatz ist – etwa durch Wartungs- oder Servicegebühren.

Die Möglichkeit, softwaredefinierte Dienste auf diesen Geräten hinzuzufügen, hebt dies auf eine neue Ebene und ermöglicht Abonnements und „As a Service“-Geschäftsmodelle.

Jetzt können Hardwareunternehmen mit ergebnisbasierten oder pay-per-use-Modellen experimentieren und diese als Service anbieten, während sich die Dienste weiterentwickeln. Selbst Chip-Hersteller sprechen bereits darüber, eingebettete IoT-Hardwaregeräte als Service anzubieten.

Cloud- und Softwareunternehmen können softwaredefinierte Geräte nutzen, um ihr Servicemodell bis zum Kundenkontakt voranzutreiben und Services als Kombination aus Cloud-, Edge- und Device-Computing zu entwickeln. Dank besserer Tools, die die Portabilität von Software ermöglichen, einschließlich Funktionen wie Container und Microservices, wird die Bereitstellung von Plug-and-Play-Embedded-IoT einfacher.

 


Nitin Dahad
Nitin Dahad ist Chefredakteur von embedded.com und Korrespondent für EE Times. Er hat einen Abschluss in Elektrotechnik von der City University und war als Ingenieur, Journalist und Unternehmer tätig. Er war Teil des Gründungsteams von ARC International und führte das Unternehmen an die Börse. Zudem war er in den frühen 2000er Jahren Mitbegründer einer Publikation namens The Chilli. Nitin hat auch bei National Semiconductor, GEC Plessey Semiconductors, Dialog Semiconductor, Marconi Instruments, Coresonic, Center for Integrated Photonics, IDENT Technology und Jennic gearbeitet. Nitin hatte auch eine Rolle in der Regierung inne und förderte britische Technologie weltweit in den USA, Brasilien, dem nahen Osten und Afrika sowie in Indien.