Erstellen eines Modells zur einfachen und sicheren Beschreibung von Nebenläufigkeiten (Concurrency) für eingebettete Systeme.


Zusammenfassung

Um die Nebenläufigkeiten im Robotercode zu beschreiben nutzen wir Protothreads [1], Resumable Functions [2] und Activities [3]. Diese basieren auf sog. stackless cooperative scheduling, die simpelste Form der Nebenläufigkeit. Desweiteren ist das XPCC Protokoll als Event-Loop implementiert und ruft die Empfänger mittels diesen Mechanismen auf [4].

Diese Architektur ist sehr speichereffizient und funktioniert somit auch noch auf sehr speicherlimitierten Mikrocontrollern wie die AVRs. Für unsere Zwecke ist sie aber zu effizient, sodass es mühsam und teilweise unintuitiv ist, komplexere Nebenläufigkeiten abzubilden. Desweiteren nutzen wir keine AVRs mehr, sondern ARM Cortex-M Systeme, die genügend Speicher mitbringen.

Wir möchten mehrere Concurrency Modelle erforschen und bewerten, wie gut sie sich auf unser Problem anwenden lassen und wie man sie effizient auf AVR und ARM Cortex-M implementiert.

Das Resultat soll dann in modm.io [5] implementiert werden und der Prozess ordentlich dokumentiert werden, sodass es auch extern genutzt werden kann.

Tätigkeitsfelder und Technologien

  • C++17, C11, AVR/ARMv6/v7-M Assembly
  • Concurrency Modelle: Actors, Threading, Coroutines, Event-Loops
  • AVR und ARM Cortex-M Architektur
  • Low-level Programming in modm.io

Referenzen und Links

  • [1] https://xpcc.io/api/group__protothread.html
  • [2] https://xpcc.io/api/group__resumable.html
  • [5] https://modm.io
  • https://www.brianstorti.com/the-actor-model/