Ein futuristischer Kontrollraum mit leuchtenden Computerbildschirmen und elektronischen Geräten.

HIL-F&E (aka. HILFE)

Hardware-In-The-Loop tests for everyone
BMW Group Logo
DeutscheBahn_logo-2
Creditreform Logo
DERTOUR
jochen-schweizer
Dräger Logo
kuka
BMW Group Logo
DeutscheBahn_logo-2
Creditreform Logo
DERTOUR
jochen-schweizer
Dräger Logo
kuka
ProSieben_Logo_2015-2
Mercedes
Miele Logo
Volkswagen Logo
DEKRA
stihl
Sonax_logo
Weidmüller logo
ProSieben_Logo_2015-2
Mercedes
Miele Logo
Volkswagen Logo
DEKRA
stihl
Sonax_logo
Weidmüller logo
HomeForschung & EntwicklungHILFE - Hardware-In-The-Loop tests for everyone

Aufwendige Hardwaretests vereinfachen

Die Entwicklung sinnvoller Hardwaretests und entsprechender Testumgebungen für eingebettete Boards stellt unsere Kunden immer wieder vor erhebliche Herausforderungen. Teilweise scheinen einige Unternehmen diese Hürde durch den kompletten Verzicht auf Hardwaretests zu umgehen. Aus dieser Beobachtung heraus entstand unsere ursprüngliche Idee, Hardwaretestsetups als Dienstleistung für Projektkunden anzubieten – mit dem Ziel, deren Entwicklungsprozesse zu beschleunigen und die Ergebnisqualität zu verbessern. Diese Dienstleistung würde unser Portfolio als Bereich „Smart Devices“ um einen wertvollen Baustein erweitern.

Futuristische Glühbirne mit digitalen Netzwerken, repräsentiert innovative Lösungen in Data Analytics Consulting.

Was zunächst im F&E-Projekt „Wirewolf" seinen Anfang nahm, entwickelte sich kontinuierlich weiter zum Konzept „HIL-F&E" (Hardware-In-The-Loop-Tests for everyone). Das Ziel: die Entwicklung eines generischen Software-Tools, das die Erstellung von Tests ermöglicht, die sowohl mit als auch auf echter Hardware funktionieren.

Labgrid

Bei der Recherche nach schon existenten Projekten identifizierten wir das Open-Source-Projekt "Labgrid" als vielversprechendstes Python-basiertes Werkzeug in diesem Bereich und entschieden uns für eine praktische Erprobung. Bei der Analyse der Funktionalitäten stellten wir jedoch fest, dass Labgrid keine Netzwerkabstraktionen bietet. Dies ist von entscheidender Bedeutung, um DUTs (Devices Under Test) über verschiedene Netzwerktypen – wie drahtlose Verbindungen, Internet oder LoRa – zu isolieren. Dadurch lassen sich externe Störeinflüsse vermeiden und die Testumgebung durch definierte Testnetzwerke deterministisch gestalten. Dennoch bietet Labgrid andere, wertvolle Funktionen, die wir für unser Vorhaben benötigen: Der Fernzugriff auf konfigurierbare DUT-Ressourcen über Test-Hosts ist ebenso möglich wie eine koordinierte Ressourcenverwaltung. Ein zentraler Koordinator übernimmt dabei sowohl die Ressourcenregistrierung als auch die automatische Verteilung der DUT-Ressourcen auf verschiedene Testszenarien. Gleichzeitig ermöglicht er Entwicklern den direkten Fernzugriff auf die Hardware, wodurch Live-Tests auf realen Systemen durchgeführt werden können.

Eines unserer ersten Implementierungsprojekte umfasste den Einsatz von Labgrid zur Durchführung von Tests an einer Yocto-basierten "Blinky"-Anwendung. Dabei sollte überprüft werden, ob die LED-Frequenz der Erwartung entspricht. Dieser Tests lässt sich auf verschiedene Weise realisieren: direkt über Verkabelung, optisch oder mittels Logic Analyzer.

Ein Diagramm zeigt die Verbindung zwischen einem Testhost und einem DUT über Relais und Pins, zur Messung und Steuerung.

In unserem ersten Beispiel nutzen wir Raspberry Pi's als Test-Hosts. Diese sind direkt mit einem Raspberry Pi Compute Module – unserem Device Under Test (DUT) – verbunden, um die blinkende LED zu messen. Auf dem DUT läuft eine Anwendung, die mit Yocto erstellt wurde und nicht nur die LED steuert, sondern uns auch eine Konsole über eine serielle Schnittstelle zur Verfügung stellt.

Zur vollständigen Stromabschaltung des DUT sowie zur Aktivierung des flashbaren Zustands vor dem Flashen eines neuen Yocto-Images werden zwei vom Test-Host gesteuerte Relais eingesetzt. Anders als bei einem herkömmlichen Raspberry Pi, der zum Flashen auf eine SD-Karte angewiesen ist – deren physische Entfernung eine automatisierte Aktualisierung erschwert – bietet das Compute Module den Vorteil, dass Images direkt auf seine integrierte eMMC geflasht werden können. Dank der über USB möglichen Flash-Option ist dieser Prozess leicht automatisierbar und ermöglicht eine nahtlose und effiziente Aktualisierung der Firmware.

Von lokalen Tests zur CI/CD

Der erste Ansatz erwies sich als unkompliziert und gut handhabbar. Doch auch die optische Überprüfung sowie die Integration eines Logic Analyzers lassen sich mit Labgrid problemlos realisieren. Dies ist der hohen Erweiterbarkeit des Systems zu verdanken, unterstützt natürlich durch die Vielzahl nützlicher Python-Bibliotheken, die für derartige Anwendungen zur Verfügung stehen.

Die durchgehende Integration von einer Azure DevOps Pipeline bis hin zum Test des DUT konnte ebenfalls schnell und effizient umgesetzt werden. Auch remote funktionieren die Testdurchläufe zuverlässig: Test-Hosts, die über Ansible verwaltet werden, hosten sowohl Azure Agents als auch Labgrid Exporter – jene Instanzen, die Ressourcen bereitstellen und mit dem zentralen Koordinator kommunizieren.

Die Test-Hosts sind wie in dem obigen Beispiel über jeweils passende Schnittstellen mit ihren entsprechenden DUTs verbunden. In unserem konkreten Fall erfolgt dies über GPIO-Pins, die an die blinkende LED und den Jumper zum Setzten des Boot-Modes angeschlossen werden, sowie zusätzlich über eine Webcam, einen USB-zu-UART-Adapter für den Konsolenzugriff auf den DUT und einem USB-zu-MicroUSB zum Flashen desselben. Über die Pipeline kann nun ein Testdurchlauf gestartet werden, der sich das neueste Image für den DUT herunterlädt (je nach Anwendungsfall kann das auch jedes Mal neu gebaut werden – etwa auf einem extra dafür bereitgestellten Build-Host), den Flashvorgang durchführt, alle definierten Tests auf und mit dem DUT ausführt und das Ergebnis zurück in Azure DevOps lädt.

Über eine Webcam haben Entwickler gleichzeitig die Möglichkeit mitzuverfolgen, wie sich der DUT derzeit verhält indem man etwa Status LEDs oder Displays beobachtet. Durch die Möglichkeit, beliebig viele Test-Hosts in das System zu integrieren, entsteht mit Labgrid automatisch eine flexible und skalierbare Testinfrastruktur.

Eine elektronische Schaltung mit Raspberry Pi-Modulen, einem Breadboard und einem Relaismodul.

So sieht ein konkreter Aufbau des Test-Setups aus: Oben der Test-Host, unten der DUT und dazwischen die Verbindungen über Relays und die LED.

Der Ausblick

Nachdem wir bereits diese solide Grundlage geschaffen hatten, entstand parallel ein größeres, weiteres Ziel: die Konzeption eines Test-Racks, das mit minimalem Aufwand das Hinzufügen neuer DUTs – also der Geräte unserer Kunden – sowie der dazugehörigen Test-Hosts ermöglicht. Dieses soll in einem separaten Testnetzwerk betrieben werden, das vom hauseigenen Lab-WIFI von MaibornWolff getrennt ist. Nur so können wir auf sichere Art und Weise unterschiedlichen Kunden über VPN-Zugang externe Zugriffsmöglichkeiten bieten. Dadurch wäre SMD in der Lage, innerhalb weniger Stunden oder Tage einen oder mehrere sinnvolle Testaufbauten für Kunden zu hosten – mit Zugriffsmöglichkeiten sowohl für die eigenen Entwickler als auch für unsere Teams und die Test-Pipelines. So können wir für unsere Kunden sowohl Entwicklungsprozesse beschleunigen und gleichzeitig die Ergebnisqualität verbessern.

Finden Sie, was zu Ihnen passt
Verfeinern Sie Ihre Suche
Filter zurücksetzen