Blog:
Embedded-Lösungen mit modernen Software-Tools entwickeln - Case Study von RND Group

Donnerstag, 17. Februar 2022
RND Group

Diese Case Study der RND Group wurde in Zusammenarbeit mit Dr. Hal Holmes von den Conservation X Labs in Verbindung mit dem Produkt The NABIT verfasst. The NABIT ist ein "kostengünstiges, feldtaugliches, automatisiertes Handheld-Werkzeug zur Validierung der Identität eines Wildtieres oder eines Lebensmittelprodukts, überall auf der Welt, ohne spezielle Ausbildung, Ausrüstung, Reagenzien oder sogar ständige Stromversorgung."

Dieses spezielle Projekt wurde durch den Einsatz von Docker-Containern ermöglicht, die auf der eingebetteten Linux-Distribution Torizon von Toradex laufen.


Entwicklung eingebetteter Software - ein Container nach dem anderen

RND Group
Linux | Docker Container

Wenn Projektmanager hören, dass bei einem Projekt eingebettete Software entwickelt werden soll, geht man davon aus, dass hierfür ein Softwareentwickler mit sehr speziellen Qualifikationen gebraucht wird. Die Entwicklung eingebetteter Software erfordert in der Regel einen Entwickler mit elektrotechnischem und computerwissenschaftlichem Hintergrund, der Software und Firmware in einer Low-Level-Sprache wie C oder C++ schreiben kann, teure Entwicklungs-Tools und in der Regel ist die entwickelte Benutzeroberfläche nach modernen GUI-Standards wohl eher rudimentär.

Obwohl das für viele Projekte für Embedded-Software immer noch der Fall ist, sind inzwischen neue Technologien entstanden, die es ermöglichen, Embedded-Software mit modernen Software-Entwicklungstools zu entwickeln und die Produktivität der Embedded-Entwicklung exponentiell zu verbessern. Diese Case Study beschreibt die Erfahrungen der RND Group bei der Erstellung von Software für Embedded-Geräte unter Verwendung von Open-Source-Tools, High-Level-Programmiersprachen, modernen UI-Toolkits und Containerisierungstechnologie, die die Entwicklung und das Testen eines Grossteils der Software ermöglicht, noch bevor die Hardware verfügbar ist.

Was ist ein Embedded-System?

Ein Embedded-System weist viele der gleichen architektonischen Merkmale auf wie ein Allzwecksystem - es gibt ein Betriebssystem, Geräteschnittstellen/Gerätetreiber, Geschäftslogik und eine Benutzeroberfläche. Der Hauptunterschied zwischen einem Embedded-System und einem Allzwecksystem besteht darin, dass es für einen bestimmten Zweck entwickelt und gebaut wurde und viele der Funktionen, die in einem Allzwecksystem zu finden sind, wie z. B. Vernetzung, Sicherheit, Konfiguration und verschiedene Anwendungen, entfernt oder reduziert wurden. Durch die Beschränkung der Funktionen in einem Embedded-System kann die Software auf weniger leistungsfähigen Prozessoren mit kleinerem Arbeitsspeicher und mit geringerem Speicher- und Stromverbrauch ausgeführt werden. Embedded-Systeme sind sehr häufig in kleineren Geräten wie Handhelds oder tragbaren Geräten zu finden, insbesondere in Geräten, die im Batteriebetrieb laufen müssen.

Es gibt viele Betriebssysteme, die für die Entwicklung von Embedded-Systemen verwendet werden können, doch Linux ist heute meist die erste Wahl. Linux ist ein Open-Source-Betriebssystem und es existieren mehrere Versionen von Linux, die so angepasst wurden, dass sie gut als Betriebssystem für Embedded-Systeme funktionieren, darunter Android, Maemo, BusyBox, Yocto / Open Embedded, Buildroot und Mobilinux.

Docker + Embedded Linux

Docker ist eine Technologie zur Software-Containerisierung, die die Virtualisierungsfunktionen von Betriebssystemen wie Linux und Windows nutzt, um Softwarepakete zu erstellen. Diese Softwarepakete bündeln einen kompletten Software-Stack - Anwendung, Systemdienste, Dateisystem und Gerätedienste - der in einer eigenen, separaten virtuellen Umgebung läuft. Docker-Container bieten zahlreiche Vorteile, u. a. sind sie wesentlich schlanker als herkömmliche Virtualisierungstechnologien, sie können einen Docker-Container aus anderen, bereits vorhandenen Docker-Containern aufbauen und erweitern und sie garantieren, dass das Softwarepaket im Docker-Container unabhängig von der Hardware, auf der es eingesetzt wird, die gleiche Leistung erbringt.

Container

Die Akzeptanz und Nutzung von Docker hat in den 8 Jahren seit der ersten Veröffentlichung exponentiell zugenommen - auch im Bereich der Software für medizinische Geräte. RND hat Docker in den letzten 2-3 Jahren für mehrere seiner Kundenprojekte verwendet.

Im Rahmen einer natürlichen Entwicklung und Konvergenz von Technologien gibt es mittlerweile Versionen von Embedded Linux, die die Docker-Infrastruktur unterstützen, darunter Linux microPlatform von Foundries.io, TorizonCore von Toradex und balenaOS von balena. Diese Produkte bieten eine Linux-Distribution und befreien Embedded-Software-Entwickler von der Notwendigkeit, angepasste Linux-Images zu erstellen und sich stattdessen auf die Entwicklung von Anwendungen zu konzentrieren, die in Containern laufen. Wie unten dargestellt, können mehrere Container erstellt werden, die auf Wunsch mit anderen Containern über bekannte Kanäle wie File-Sharing, TCP und HTTP kommunizieren.

Beispiel für eine Projektarchitektur

RND hat vor kurzem zwei verschiedene Softwaresysteme für medizinische Geräte unter Verwendung von Docker-Containern geliefert, die auf der eingebetteten Linux-Distribution TorizonCore laufen. Zu diesen Systemen gehören ein Handheld-Gerät für PCR-Tests und ein Desktop-Gerät für Bluttests. Beide Geräte sind tragbar und laufen über acht Stunden im Akkubetrieb.

Handheld PCR Testing Device, Conservation X Labs

Handheld PCR-Testgerät, Conservation X Labs

Die Container in dieser Architektur beinhalten:

Software Architecture
Die für diese beiden Projekte (PCR-Testgerät, Desktop-Bluttestgerät) verwendeten Software-Architekturen sind ähnlich und werden oben dargestellt.

UI / Betriebslogik
Geschrieben in C# und .Net Core, handelt es sich um einen Webserver, der Funktionen wie die Verwaltung von Arbeitsabläufen, die Anzeige von Ergebnissen, das QC run-Management, die Benutzer-/Account-Verwaltung, den Audit Trail und das Reporting umfasst. Die Benutzeroberfläche ist in React, Angular oder Razor geschrieben und wird durch den Kiosk-Browser-Container gerendert.

Ergebnis-Prozessor
Dieser in C# oder Python geschriebene Container isoliert die testspezifische Ergebnis-Berechnungslogik und wird vom UI / Business Logic-Container aufgerufen.

Weston
Dieser von Toradex zur Verfügung gestellte Container ist ein Windows-Manager, der das Starten von Anzeigefenstern, wie z.B. das vom Kiosk-Browser-Container, orchestriert.

Kiosk-Browser
Dieser von Toradex bereitgestellte Container ist ein HTML-Webbrowser, der sich mit dem vom UI/Business Logic-Container bereitgestellten Webserver verbindet.

Hardware-Steuerung
Dieser in C# und .Net Core geschriebene Container stellt Hardware-Dienste bereit und interagiert mit dem Linux-Kernel und benutzerdefinierten Gerätelaufwerken zur Hardwaresteuerung. Der UI/Business Logic-Container verfügt über eine Befehls/Antwort-Schnittstelle zur Kommunikation mit diesem Container.

Die Verwendung einer Software-Architektur wie der oben beschriebenen bietet eine Reihe von Vorteilen, darunter:

  1. Die kostengünstigen Open-Source-Sprachen, Frameworks und Betriebssysteme ermöglichen die Entwicklung und den Betrieb ohne laufende Lizenzgebühren.
  2. Die Verwendung einer allgemein bekannten High-Level-Sprache wie C#, ermöglicht es den Entwicklern, sich auf das Schreiben der Anwendungslogik zu konzentrieren und bietet den Unternehmen Zugang zu einem grösseren Pool von Entwicklungstalenten, die C# beherrschen.
  3. Durch die modulare Aufteilung der Software in separate Container können verschiedene Teile der Anwendung unabhängig voneinander entwickelt werden und jede Komponente/jeder Container kann sich auf einen genau definierten Satz von Aufgaben konzentrieren.
  4. Simulationssupport wird durch die klar definierten Schnittstellen zwischen den Containern erleichtert. Zum Beispiel kann der Hardware-Controller-Container ersetzt werden, um das Hardware-Verhalten zu simulieren und die Entwicklung der anderen Container kann parallel zur Hardware-Entwicklung erfolgen.
  5. Der plattformübergreifende Support wird auf zwei Arten erleichtert. Die Verwendung von .Net Core ermöglicht das Schreiben und Testen von Code auf Linux oder Windows ausserhalb eines Docker-Containers. Und wenn sie innerhalb eines betriebssystemspezifischen Docker-Containers bereitgestellt werden, können die Docker-Container auf einer Vielzahl von Betriebssystemen, einschliesslich Linux und Windows, gehostet und getestet werden.
Statement unseres Kunden

"Die Software-Architektur, die RND für unser medizinisches Handheld-Gerät entwickelt hat, bot uns eine grosse Flexibilität bei der Entwicklung. Wir waren in der Lage, eine anspruchsvolle Benutzeroberfläche schnell zu implementieren und die Architektur ermöglichte es uns, unsere Benutzeroberfläche und wichtige Funktionen schnell zu iterieren und zu modifizieren und neue Funktionen während unserer Entwicklung und der Benutzertests zu implementieren. Dieses Softwareformat ermöglichte es uns auch, Aktualisierungen zunächst auf dem Desktop und mit Trägerkarten zu testen, während wir noch an unserer Hardware arbeiteten und vollständige Geräte nur selten oder gar nicht verfügbar waren. Die Kombination dieser Architektur mit dem geschickten und agilen Projektmanagement von RND ermöglichte es uns, unsere Embedded-Software effizienter von den Anforderungen zur Realität zu bringen, als ich es für möglich gehalten hätte."

Dr. Hal Holmes,
Chefingenieur, Conservation X Labs,
Thylacine BioSciences
Abschliessende Gedanken

RND ist mit der Stabilität und Zuverlässigkeit von Docker und der TorizonCore Linux distribution sehr zufrieden. Toradex bietet eine grössere Anzahl von vorgefertigten Containern und vorgefertigten Linux-Kernel-Images. Diese Werkzeuge und Bausteine haben den Zeitaufwand für die Erstellung von angepassten Linux-Distributionen mit Yocto oder ähnlichen Werkzeugen für Embedded-Projekte erheblich reduziert. RND verfügt über eine Reihe von Entwicklern mit Erfahrung in C# und in der Entwicklung von Web-Benutzeroberflächen. Die Möglichkeit, diese Tools bei der Erstellung von Software für ein eingebettetes Linux-System zu verwenden, ermöglicht es RND, diese Projekte problemlos zu besetzen.

Autor:
Brad Graves
, Principal Project Manager, RND Group, Inc.
Contributor:
Dr. Hal Holmes
, Chief Engineer, Conservation X Labs, Thylacine BioSciences

Kommentar hinterlassen

Please login to leave a comment!
Have a Question?