Cloud-basierte Embedded-Entwicklungstools wie Keil Studio können den Workflow für Embedded-Anwendungen verbessern, von der ersten Produktevaluierung bis hin zur modell- oder simulationsbasierten Validierung.
Embedded System Design ist eine der ältesten Disziplinen der Elektronik. Im Laufe der Jahrzehnte haben Milliarden von Embedded-Produkten die Welt auf ungeahnte Weise verändert. Doch während andere Arten der Software- und Anwendungsentwicklung in die Cloud verlagert wurden, steckt die Cloud-basierte Embedded-Entwicklung noch in den Kinderschuhen – weil viele Embedded-Anwendungen immer noch lokal auf Desktop-Computern erstellt werden.
Dafür gibt es verschiedene Gründe. Einer davon ist die traditionelle Risikoaversion von Embedded-Entwicklern: In einem Umfeld mit hohem Druck und engen Time-to-Market-Fenstern zögern Embedded-Entwickler oft, ihre Werkzeug- und Designabläufe zu ändern. Ein weiterer wichtiger Grund ist jedoch: Der Validierungsprozess hängt stark von der Zielhardware ab, und diese Hardware wird mit Desktop-Computern verbunden. Tatsächlich ist oft eine lokale Tool-Installation als Schnittstelle zur realen Zielhardware erforderlich.
Jetzt, da das Internet der Dinge (IoT) entfaltet, erfährt dieser jahrzehntealte Ansatz dank der Cloud einen enormen Wandel. Cloud-basierte Embedded-Entwicklungstools wie Arm Keil Studio können dabei helfen, den Workflow für Embedded-Anwendungen zu verbessern, von der initialen Produktevaluierung über die modell- oder simulationsbasierte Validierung mit Continuous Integration Flows, die Modelloptimierung für maschinelles Lernen bis hin zur Gerätebereitstellung für den Einsatz.
In der Softwareentwicklung werden das Versionsmanagement und die dazugehörigen Managementtools wie das Issue Tracking zunehmend in die Cloud verlagert. Für multinationale Konzerne ist es heute wirtschaftlicher, Dienste wie GitHub zu nutzen, anstatt über eine eigene IT- und Server-Infrastruktur zu verfügen. Dies ermöglicht dezentrale Entwicklungsteams oder die einfachere Zusammenarbeit mit anderen Unternehmen, die keinen direkten Zugriff auf die Unternehmens-IT haben sollen.
Dieser neue Design-Flow verspricht, das Embedded-Design zu verändern und eine neue Innovations-Welle auszulösen.
Die Cloud-basierte Embedded-Entwicklung bietet vier Hauptvorteile:
1. Software-as-a-Service (SaaS) mit einsatzbereiten Entwicklungstools
Anstatt eine integrierte Entwicklungsumgebung (IDE) lokal auf einem Computer zu installieren, können Sie ein komplettes Setup von einem Cloud-Dienstanbieter verwenden. Die IDE läuft im Internetbrowser und die eigentliche Kompilierung erfolgt auf einem Cloud-Server, meist deutlich schneller als bei einem Desktop-Flow.
Bei der Cloud-basierten Embedded-Entwicklung können Entwickler Evaluierungsboards verschiedener Halbleiterhersteller einfach per USB anschließen und über einen Webbrowser sofort verschiedene Beispielprogramme auf das Zielsystem laden, testen und ändern. Eine komplizierte Tool-Installation entfällt und die Software-Beispiele sind immer auf dem neuesten Stand. Wenn Sie Mikrocontroller evaluieren möchten, sparen Sie Zeit und Aufwand, da das Setup bereits einsatzbereit ist. Dies gibt Teams Flexibilität bei der Art der Computer und Betriebssysteme, mit denen sie entwickeln können.
2. Software-Updates für Systeme im Feld
Over-the-Air-Updates (OTA) sind bereits auf vielen Geräten verfügbar, erfordern jedoch häufig eine Benutzerinteraktion. OTA wird zunehmend automatisiert und kann auch auf kleineren Mikrocontrollern mit Arm Cortex-M Kern verwendet werden. Dadurch kann die Softwareentwicklung gestaffelt werden und es kann ein System mit minimalen Funktionen zunächst schneller auf den Markt gebracht werden. Diese Funktionalität kann dann über OTA erweitert werden und so eine bereits eingesetzte Produktgeneration an neue Anforderungen angepasst werden. Dies verbessert die Wettbewerbsfähigkeit, und kann in Zukunft auch zu neuen Geschäftsmodellen führen.
3. Datenanalyse für Predictive Maintenance
Die IoT-Systeme können dem Hersteller wertvolle Daten liefern. Melden sie beispielsweise wichtige Zustandsparameter eines Systems, können frühzeitig potenzielle Probleme erkannt werden, die zu einem Systemausfall führen könnten – bevor es zu einem Problem wird. Der Wartungsaufwand ist geringer, da er nur auf potenziell ausfallende Systeme abzielt. Aber man kann auch Betriebsdaten berücksichtigen, also die Daten, die das System über Sensoren aus der Umgebung erhält. Wenn Anomalien im Betrieb entdeckt werden, die bei der Entwicklung nicht berücksichtigt wurden, kann man die Funktionalität des Systems verbessern. Und Cloud-basierte Embedded-Entwicklung stellt genügend Rechenleistung bereit, um Künstliche Intelligenz (KI) zu nutzen und so Datensätze aus einer umfangreichen Installationsbasis zu analysieren.
4. Continuous Integration (CI) von Softwareänderungen
Versionsverwaltungsdienste wie GitHub bieten auch eine virtuelle Maschine mit sogenannten Runnern, um verschiedene Testjobs auszuführen. Dies ist für viele Anwendungen bereits gängige Praxis. Das Problem bei Embedded-Anwendungen ist normalerweise die Zielhardware, aber über Keil Studio können wir leistungsstarke Simulationsumgebungen für die Cloud-basierte Embedded-Entwicklung anbieten, die ein Cortex-M-Subsystem mit Optionen für I/O-Stimuli modellieren.
Sobald ein Continuous Integration (CI) System in den Flow integriert ist, erhält der Softwareentwickler automatisierte Informationen – zum Beispiel ob eine Modifikation eine Regression hat oder korrekt integriert wurde. Dies steigert typischerweise die Motivation der Mitarbeiter, erkennt frühzeitig mögliche Fehler und führt somit schneller zu einer besseren Software-Qualität. Solche CI-Flows sind in der Automobilindustrie bereits etabliert, werden sich aber in den kommenden Jahren als gängige Praxis auf die gesamte Embedded-Branche ausweiten.
Wenn man CI als Service im Cloud-Kontext betrachtet, vereinfachen CI-Tests mit virtuellen Plattformen die Entwicklung noch mehr. Zu den Vorteilen zählen:
Geschwindigkeit: Virtuelle Plattformen haben keinen Overhead für das Flashen der Anwendung auf physischer Hardware. Das spart Zeit bei kleinen und schnellen Unit-Tests.
Skalieren: Virtuelle Plattformen können skaliert werden, um viele Tests parallel auszuführen. Dies macht virtuelle Plattformen kostengünstiger als eine Farm mit physischer Hardware.
Wartung: Im Gegensatz zu physischer Hardware überhitzen virtuelle Plattformen nicht, nutzen sich nicht durch Überbeanspruchung ab, gehen nicht kaputt oder verbrauchen keinen Platz und keine Ressourcen.
Upgrades: Virtuelle Plattformen können angepasst und neu konfiguriert werden, um entsprechende Änderungen an der zugrunde liegenden Hardwareplattform, die sich in der Entwicklung befindet, anzupassen.