Schwerpunkte

IoT-Applikationen

Einfach entwickeln in der Cloud

07. September 2021, 10:00 Uhr   |  Von Reinhard Keil und Christopher Seidl

Einfach entwickeln in der Cloud
© shutterstock.com

Heute werden viele Embedded-Anwendungen noch auf Desktop-Computern erstellt – meist aufgrund des Validierungsprozesses. Jedoch lässt sich das Entwickeln mit Cloud Computing wesentlich vereinfachen. Wie das geht und welche Tools dafür nötig sind, zeigt Arm Germany.

Cloud Computing ist der am schnellsten wachsende Markt in der Computerbranche und hat unsere Arbeitsweise verändert. Zum Beispiel mit Office-Anwendungen, die Dokumente auf verschiedenen Geräten zugänglich machen, Customer-Relationship-Management-Systemen im Vertrieb und Service oder Videokonferenzen während der Pandemie. Aufgrund von Covid-19 hat sich der Trend zum Homeoffice beschleunigt – Experten gehen davon aus, dass viele Unternehmen das »neue Arbeiten« nach der Pandemie beibehalten.

Cloud Computing hält außerdem zunehmend Einzug beim Entwickeln von Software: beispielsweise beim Verwalten von Versionen mit Task Tracking und Ticketing. Für multinationale Konzerne ist es heute wirtschaftlicher, Dienste wie GitHub zu nutzen, anstatt eigene IT- und Server-Infrastruktur vorzuhalten. Solche Systeme ermöglichen außerdem dezentrale Entwicklerteams oder erleichtern die Zusammenarbeit mit Dienstleistern, die keinen direkten Zugriff auf die unternehmenseigene IT haben.

Vor- und Nachteile von Cloud Computing

Cloud Computing ist gut etabliert und wächst schnell, da es Unternehmen jeder Größe viele Vorteile bietet:

  • Kosten reduzieren: Es sind keine Investitionen in Hardware erforderlich. Für Software-Lizenzen bieten Cloud-Anbieter häufig ein »Pay per Use«-Geschäftsmodell an.
  • Zugriff auf aktuelle Tools und Software: Es sind weder Zeit noch Geld für Installationen bereitzustellen.
  • Ausfallsicherheit: Cloud-Anbieter gewährleisten redundante Setups und das Wiederherstellen von Daten in Notfällen – von Naturkatastrophen bis hin zu Stromausfällen.
  • Hohe Rechengeschwindigkeit: Nach Bedarf sind Rechenressourcen einfach zu skalieren.
  • Speicherplatz: Die Speicherkapazität ist nahezu unbegrenzt und mit geringen monatlichen Gebühren schnell erweiterbar.
  • Mobilität: Das Arbeiten vor Ort oder an entfernten Standorten ist einfach und effektiv.
  • Zusammenarbeit: vereint Mitarbeiter aus verschiedenen Regionen in einem Team.
  • Online-Sicherheit: Die Cloud-Anbieter überwachen die Systeme sorgfältig.

Natürlich gibt es ebenso einige Nachteile:

  • Internetverbindung: Eine gute und zuverlässige Infrastruktur ist ein Muss.
  • Ausfälle: Technische Probleme können zu Ausfällen führen.
  • Sicherheitsbedrohungen: Sensible Informationen könnten an Dritte gelangen.
  • Leistung: Sie kann variieren, da die zugrunde liegenden Systeme gleichzeitig Ressourcen für andere Unternehmen bereitstellen.

Technik für die Cloud

Um die Vorteile von Cloud Computing effektiv nutzen zu können, braucht es zuverlässige Technik. Arm-Neoverse-Prozessoren beispielsweise verarbeiten Cloud-native Workloads mit hoher Leistung und Effizienz. Sie sind für große Rechenanlagen konzipiert, die auf Redundanz achten. Wichtig ist das, da Cloud Server in der Regel die Anforderungen mehrerer Kunden gleichzeitig erfüllen und ausreichend Leistung für rechenintensive Applikationen bieten.

Cortex-A- oder Cortex-R-Prozessoren hingegen kommen vielfach in IoT Gateways und 5G-Basisstationen in der Netzwerk- und Telekommunikationsinfrastruktur zum Einsatz, können jedoch genauso IoT-Daten aggregieren. Gateways ermöglichen es zudem, Latenz-kritische Berechnungen in Echtzeit durchzuführen, die Cloud Server nicht garantieren können.

Cortex-M-Prozessoren sind der Kern für viele Mikrocontroller (MCUs) und somit die Basis für IoT-Endgeräte. Sie stellen die Schnittstelle zur physischen Welt mit I/O-Peripherie wie Sensoren und Aktoren dar. Viele IoT-Endgeräte erfüllen meist lediglich eine Aufgabe, die jedoch häufig zeit-deterministisch ist und mit wenig Energie auskommen muss. Endpunkte verbinden sich mit IoT-Gateways über verschiedene Transportprotokolle wie WiFi, LoRa, Bluetooth oder bei kabelgebundenen Schnittstellen mithilfe von Ethernet, CAN oder USB. Um künftige Anforderungen zu unterstützen, ist der Cortex-M mit einem Ethos-U-Neural-Processing-Unit- (NPU) Prozessor kombinierbar, um Machine-Learning- (ML) Berechnungen zu beschleunigen.

Arm Keil Studio
© Arm

Bild 1: Browser-basierte IDE mit »WebUSB Debugging« und Export/Import zu Desktop Tools (Keil MDK)

Cloud Computing für das Entwickeln von IoT-Applikationen

Das Entwickeln von Embedded Software verwendet traditionell einen Desktop Computer, der mit der Testhardware verbunden ist. Cloud-basierte Ansätze haben das Potenzial, die Entwicklungsabläufe mit folgender Technik zu verbessern:

  • Versionskontrolle: Sie wird normalerweise über einen Git-Hosting-Dienst bereitgestellt.
  • Software as a Service (SaaS): stellt eine gebrauchsfertige, komplette Tool-Umgebung bereit.Kontinuierliche Tests: Hier stellt ein Cloud Server eine virtuelle Maschine oder einen Container mit Simulationsmodellen bereit.
  • Systeme zum Administrieren einer geografisch verteilten Geräteflotte, inklusive Programmieren Over the Air (OTA).
  • Maschinelles Lernen inklusive Datenanalyse: kommt zum Einsatz, um Geräte auf Anomalien zu überwachen (Predictive Maintenance).

Versionskontrolldienste wie GitHub sind bereits gut etabliert und beinhalten Zugriffskontroll- und Kollaborationsfunktionen, die ein verteiltes Entwicklerteam unterstützen. Daher lässt dieser Artikel Versionskontrolldienste außen vor und konzentriert sich auf die vier Themen Entwickeln von Software, Software-Test, Programmieren via OTA sowie Datenanalyse und KI.

Entwickeln von Software in der Cloud

Die serverbasierte Software-Entwicklung auf der Kommandozeile ist bereits etabliert. Hierbei ist auf einem Server eine komplette Toolchain installiert, die meist aus Compiler, Linker und weiteren Tools zur Projektgenerierung besteht. Kommt zusätzlich die CMSIS-Pack-Infrastruktur zum Einsatz, sind Hardware-Treiber für viele Arm-basierte Mikrocontroller verfügbar.

Embedded-Ingenieure arbeiten meist mit einer integrierten Entwicklungsumgebung (IDE) und direkter Verbindung zu einem Hardware-Zielsystem. Moderne Browser ermöglichen eine IDE, die über USB direkt mit der Zielhardware verbunden werden kann, wie in Bild 1 gezeigt. Der Browser verbindet die IDE mit der zuvor beschriebenen serverbasierten Infrastruktur für das Entwickeln der Software in der Cloud.

Arm arbeitet an einer neuen Generation von Software-Entwicklungs-Tools für MCUs. Keil Studio basiert auf Eclipse Theia, einer IDE-Plattform, die VS Code ähnelt und für verschiedene Betriebssysteme verfügbar ist. Die IDE läuft im Browser – das eigentliche Kompilieren erfolgt auf einem Cloud Server. Eine Tool-Installation ist nicht nötig und Beispielprojekte mit den dazugehörigen Software-Paketen sind immer auf dem aktuellen Stand. Ein ideales Setup, um Beispielcode zu erkunden und Mikrocontroller verschiedener Hersteller zu vergleichen, da sich der Anwender den Installationsprozess verschiedener Software-Umgebungen spart.

Es ist möglich, die Software-Entwicklung in der Cloud fortzusetzen; ebenso kann man die Beispielprojekte in klassische Desktop Tools wie Keil MDK exportieren. Die Plattform eignet sich für Evaluierungs-Tests sowie zum Lernen und für Trainings, da sie eine Schnittstelle zu Git-basierten Versionskontrolldiensten integriert. Zukünftig ist die Plattform genauso für das professionelle Entwickeln von Software vorgesehen, bei dem Features für ein verteiltes Team deutliche Vorteile bringen.

Seite 1 von 3

1. Einfach entwickeln in der Cloud
2. Kontinuierliches Testen in der Cloud
3. Datenanalyse und KI

Auf Facebook teilen Auf Twitter teilen Auf Linkedin teilen Via Mail teilen

Das könnte Sie auch interessieren

Verwandte Artikel

ARM Germany GmbH