Moderne Softwareentwicklung ist ohne CI/CD heutzutage undenkbar. CI/CD steht für Continuous Integration (CI) / Continuous Delivery/Deployment (CD). Es unterteilt sich also in zwei Bereiche:
Continuous Integration (CI)
Hier entsteht die Software eines Geräts – Es wird Code geschrieben und getestet. Wird bei den Tests ein Fehler gefunden, erstellt der Entwickler einen Bugfix und es wird erneut getestet. Dieser Kreislauf geht so lange, bis die Software fehlerfrei funktioniert und alle Tests besteht. Ist dieser Punkt erreicht, kann mit dem Deployment begonnen werden.
Continuous Delivery/Deployment (CD)
In diesem Schritt wird die neue / angepasste Software für die Produktion freigegeben und auf die Serienprodukte aufgespielt. Bei updatefähigen Geräten kann die Software in diesem Schritt auch automatisch zum Update für die Kunden bereitgestellt werden.
Im Laufe der Zeit kommen dann Bugreports oder Feature-Requests aus dem Feld zurück, die dann für die Umsetzung in einem neuen CI-Durchlauf eingeplant werden.
Es gibt zahlreiche Tools die bei diesem Prozess unterstützen. Dazu gehören unter anderem Jenkins, GitHub, GitLab und Azure. Der Einsatz von CI/CD Tools in der Firmwareentwicklung ist die Grundvoraussetzung für eine stabile, zuverlässige und agile Softwareentwicklung.
Herausforderung für Embedded Systeme
Die Firmware für Embedded-Systeme ist in der Regel nur auf der Ziel-Hardware (Mikrocontroller) im Zusammenspiel mit der Peripherie lauffähig. Mit den gängigen CI/CD-Tools werden die Tests in der Regel auf virtuellen Maschinen durchgeführt. Dies ist im Embedded-Bereich aufgrund der engen Bindung des Codes an die Zielhardware nicht möglich. Hier bleibt nur die Möglichkeit die Zielhardware zu simulieren (Hardware-in-the-loop Tests) oder den Code im Rahmen eines Integrationstests auf der echten Zielhardware auszuführen. Da die Erstellung von Simulationsmodellen teilweise sehr aufwändig ist, setzen wir mit unserer Testplattform auf den Integrationsansatz. Die Hardware ist in den meisten Fällen zur Entwicklungszeit verfügbar, so dass ohne zusätzliche Aufwand direkt mit der Erstellung der eigentlichen Tests begonnen werden kann.

Um solche Integrationstests durchführen zu können muss also eine Verbindung zwischen dem CI/CD Tool und der physischen Hardware hergestellt werden. Dies kann über einen lokalen PC mit Internetanbindung erfolgen. Auf diesem PC läuft ein so genannter Runner oder Agent. Dieser wird vom CI/CD-Tool getriggert, sobald ein neuer Code eingecheckt wird und kann so automatisch einen Test der Testbox starten. Das Testergebnis wird dann vom Runner/Agent an das CI/CD Tool zurückgemeldet und das ein Testreport als Artefakt zur Verfügung gestellt.
CI/CD integration mit der Embedded Testplattform
Wie kann nun ein Systemtest an die gängigen CI/CD-Tools angebunden werden?
Kompilieren des Codes
Das Kompilieren des Codes kann noch auf dem Server erfolgen. Dieser hat in der Regel mehr Rechenleistung, so dass das Kompilieren dort schneller geht als auf dem lokalen PC. Das fertige Kompilat kann dann als Artefakt für die weiteren Schritte bereitgestellt.
Übertragung der Firmware auf die Zielhardware
Dieser Schritt kann nur lokal an der physischen Hardware erfolgen. Der entsprechende Programmer zum Übertragen des Kompilats auf den Mikrocontroller wird an den lokalen PC angeschlossen. Die Übertragung der Firmware kann dann per Skript erfolgen. Die Übertragung der Firmware kann auch in den Testablauf integriert werden – siehe hierzu in der Dokumentation Kapitel Flash Firmware.

Durchführung der Tests
Nachdem die neue Firmware auf die Zielhardware übertragen wurde, können die aktuellen Testskripte aus dem Repository auf die Testbox übertragen und der Test gestartet werden. Der Test läuft nun wie gewohnt autark auf der Testbox ab. Die Ergebnisse der einzelnen Testschritte werden an den PC übertragen.
Bereitstellung des Testergebnisses
Während des Tests erstellt der PC einen Testreport, der alle Zwischenergebnisse und Messwerte sowie eine Dokumentation des Testaufbaus enthält. Dieser Testreport wird dann wiederum als Artefakt auf dem Server abgelegt und das Testergebnis an das CI/CD-Tool zurückgemeldet. Das CI/CD-Tool kannn nun je nach Einstellung und Testergebnis den Entwickler direkt über das Ergebnis informieren.
Zusammenfassung
Mit unserer Lösung können Sie die Tests für Ihr Embedded-Projekt im Rahmen eines Integrationstests auf der Zielhardware durchführen. Unsere Testbox lässt sich mittels PC als Bindeglied in alle etablierten CI/CD Tools integrieren. So können Sie geringem Aufwand alle Methoden der modernen Softwareentwicklung auch für Ihr Embedded Projekt nutzen. Unsere Experten unterstützen Sie gerne bei der Integration in Ihr CI/CD-System.