Auf Docker basierende Toolchain für die Entwicklung von Embedded Software

Die vielseitigen kundenspezifischen Anforderungen, welche an konplan als Dienstleister täglich gestellt werden, erfordern eine flexible, leicht erweiterbare und komfortable Toolchain. Dadurch kann eine wiederkehrend hohe Qualität sichergestellt werden. Ein gut durchdachtes Setup ermöglicht uns, Probleme frühzeitig zu erkennen, geänderten Anforderungen nachzukommen und den Kunden dadurch vollends zufriedenzustellen.

Unterschiedliche Hardware diverser Hersteller stellen die Toolchain vor eine Herausforderung. Auch muss jederzeit eine lauffähige, getestete Version der entsprechenden Software zur Verfügung stehen. Des Weiteren sollte es auch Jahre nach Abschluss eines Projektes jederzeit möglich sein, die Software zu builden und Änderungen daran vorzunehmen.

Aufbau, Übersicht und verwendete Tools

Während Docker in diversen Gebieten der Softwareentwicklung schon länger Standard ist, entdeckt die Embedded-Software-Fraktion erst langsam das Potential und die Möglichkeiten einer virtualisierten Entwicklungsumgebung. Dies gilt vor allem für die Entwicklung von Software für kleinere Microcontroller.

konplan verwendet schon seit längerem eine mit Docker virtualisierte Entwicklungsumgebung, die auf den bekannten, plattformunabhängigen Makefile Generator CMake sowie auf den Open Source Compiler GCC setzt. Unterstützt wird der Build-Prozess durch eine konplan-eigene Python Library, welche die Aufsetzung des Projekts ermöglicht und den Build-Prozess startet. Die Versionisierung und Verwaltung der Software wird von Git übernommen. Die Automatisierung und Bereitstellung für die verschiedenen Entwickler – wie auch für den Kunden – wird mithilfe von Azure DevOps sichergestellt. Dabei werden sowohl die Remote Repositories als auch die Pipelines benutzt. Der modulare Aufbau ermöglicht es jederzeit, einzelne Komponenten zu erweitern oder auszutauschen.

Die Vorteile einer virtualisierten, cloud-basierenden CI/CD Toolchain

Die Vorteile des vorgestellten Setups liegen auf der Hand:

  • Einfach erweiterbar, plattformunabhängig, flexibel und Open Source
    Die verwendeten Tools ermöglichen es, die Software für verschiedenste Plattformen zu kompilieren. Aufgrund des modularen Aufbaus können einzelne Komponenten der Toolchain erweitert oder auch ausgewechselt werden. Zudem ist die Python Library so aufgebaut, dass eine Erweiterung für neue Hardware ganz einfach ist.
  • Identischer Output lokal wie auch in der Cloud
    Die Virtualisierung durch Docker ermöglicht es, die Versionen der verwendeten Tools genau festzulegen und den Zustand durch ein Builden des Images einzufrieren. Dieses Image kann sowohl lokal als auch in der Cloud (Azure DevOps) verwendet werden. Dies garantiert einen identischen Build-Output unabhängig von der verwendeten Plattform – also auch bei einer kleinen Code-Erweiterung in vielleicht zehn Jahren.
  • Versionierbares Setup ermöglicht Wiederherstellung verschiedenster Zustände jederzeit
    Speziell in der Medizintechnik ist eine konsistente und aussagekräftige Versionierung von Software für die Traceability sehr wichtig (ISO 62304). Genau wie die zu entwickelnde Software können auch das Setup der Toolchain sowie die verwendete Python Library versioniert werden. Durch das Erstellen eines Docker Images kann zu einem späteren Zeitpunkt das identische Setup mit nur wenigen Klicks wiederhergestellt werden, ganz unabhängig vom verwendeten Host System. So ist es auch für neue Entwickler sehr einfach, die gesamte Toolchain inklusive IDE zu installieren.
  • Unabhängig von der Entwicklungsumgebung (IDE)
    Aufgrund der intern entwickelten Python Library wird der Build-Prozess ausgelagert und findet nicht mehr im Code Editor der IDE statt. Dadurch kann jede/r Entwickler/in den Lieblingseditor verwenden.

Durch das verwendete Setup können wir jederzeit ohne grösseren Mehraufwand auf Kundenwünsche und geänderte Anforderungen reagieren. Die vielseitigen Vorteile ermöglichen ein äusserst angenehmes und flexibles Arbeiten, was in hoher Qualität der entwickelten Software resultiert. So sorgen wir einerseits für Zufriedenheit beim Kunden – andererseits auch beim Entwickler.

Möchten auch Sie von der flexiblen und zuverlässigen konplan-Lösung profitieren oder benötigen Sie Unterstützung beim Erstellen einer ähnlichen Build-Umgebung, dann so zögern Sie nicht, uns zu kontaktieren.


______________________________________________________________________________

Autoren:

Roland Wiget, Embedded Systems Engineer
Burak Kizilkaya, Embedded Systems Engineer

Wir sind für Sie da – senden Sie uns Ihre Anfrage!

gemeinsames entwickeln! Wir setzen Ihre Ideen in die Tat um und begleiten Ihre Vorhaben bis zur Marktreife. Nehmen Sie jetzt Kontakt mit unseren Experten auf.