Automatisches Ausführen von Unit- und Integrationstests auf Arm Cortex-M Mikrocontrollern.


Zusammenfassung

modm [1] enthält eine große Anzahl an Unittests [2], die auch in unserem CI automatisch auf x86 ausgeführt werden. Diese Unittests können auch direkt auf dem Mikrocontroller ausgeführt werden, allerdings nur manuell und mit diversen Einschränkungen [3]. Dieser Prozess soll automatisiert werden, und die Ergebnisse als Teil des modm CIs für alle öffentlichen Pull Requests auf GitHub zur Verfügung gestellt werden. Dazu stellen wir eine große Anzahl an diversen STM32 Discovery und Nucleo Development Boards.

Da die modm Unittests recht begrenzt sind in ihrer Funktionalität, wäre es evtl. sinnvoll ein vollständigeres Unittest Framework wie Metal.Test zu nutzen [4]. Tracing und Performance könnte zusätzlich mit der Arm Cortex-M Debughardware erfasst werden [5].

Zusätzlich zu in sich geschlossenen Unittests sollen auch Hardware Integrationstests erforscht werden. Dazu gibt es Überlegungen, während eines Testes die Input/Output Werte des Mikrocontrollers mit Hilfe vom SigRok [6] zu erfassen und gegen diverse Eigenschaften und Testcases zu überprüfen. Hier sollen verschiedene komplexe Tests gefahren und ausgewertet werden können [7], evtl. mit FPGA als IO-Multiplexer und Logikanalyzer.

Tätigkeitsfelder und Technologien

  • Testing mit Hardware-in-Loop
  • Anzeige als GitHub Continuous Integration Service
  • Debugging mit GDB auf Arm Cortex-M
  • Arm Cortex-M Debug-Hardware
  • Erstellen von Logikwaveformtests
  • Automatisierte Auswertung von Logikprotokollanalysen
  • PCB Design mit FPGAs

Referenzen und Links

  • [1] https://modm.io
  • [2] https://github.com/modm-io/modm/tree/develop/test
  • [3] https://modm.io/guide/testing/#unit-tests
  • [4] https://github.com/klemens-morgenstern/metal.test
  • [5] https://github.com/orbcode/orbuculum
  • [6] https://sigrok.org
  • [7] https://github.com/salkinium/hwut