Firmware

Free RTOS und lwIP unter Verwendung der Native-API

Aufgrund der Aufgabenstellung des Projektes wurde beschlossen ein Betriebssystem zu verwenden, um die Auswertung der unterschiedlichen Sensoren verwalten zu können. Da die gewonnen Daten nicht lokal abgespeichter werden sollten, sondern einer dritten Anwendung zu Verfügung stehen müssen, wurde beschlossen dies über eine Ethernet-Verbindung zu realisieren.
Free RTOS ist ein frei verfügbares Betriebssystem welches sowohl Round-Robin Scheduling als auch Non-Preemptive Scheduling unterstützt. Für unsere Anwendung wurde ein nicht unterbrechbares Zeitschlitzverfahren verwendet. Das verwendete Scheduling stellt sicher, dass die Sensoren mit gewählten Abtastrate ausgewertet werden können.
Lightweight IP (lwIP), ursprünglich von Adam Dunkels (unter anderem Contiki OS) entwickelt, ist eine unabhängige Implementierung von TCP/IP-Protokollen für den Einsatz in Embedded Systemen, weil es für den Programmcode lediglich 40 KB ROM benötigt. Es ist ein Open-Source-Projekt das weltweit von Entwicklern unterstützt wird.

Tasks

Nach dem Reset des Embedded Systems werden nur System-Tasks gestartet. Die Anwendungstasks, in welchen die Sensorwerte abgefragt werden, starten erst bei einer erfolgreichen Ethernet-Verbindung.

  • (System) Idle Task
  • (System) Ethernet Task
  • (Anwendung) Gyroscope Task_X
  • (Anwendung) Accelerometer Task_X
  • (Anwendung) Temperatur Task_X
  • (Anwendung) Drehzahl Task_X
  • (Anwendung) Vibration Task_X
Je nach Konfiguration der Sensorplattform können 1 bis 4 eigenständige Tasks je Sensortype aktiv sein. Die Zeitschlitze für die einzelnen Tasks wurden dabei so gewählt, dass bei maximaler Auslastung, entsprechend der aktuell verwendeten Sensorplattform, eine Auslastung von 60% nicht überschritten wird. Es besteht dadurch die Möglichkeit die Plattform zu erweitern und zusätzliche Sensoren auszuwerten, ohne die bisherige Funktion zu beeinträchtigen.

Abtastraten

Durch die unterschiedlichen Sensortypen war es sinnvoll unterschiedliche Abtastraten zu unterstützen. Durch das Betriebssystem wurde diese Aufgabe sehr einfach und gleichzeitig in hohem Maße skalierbar.

  • Gyroscope 1 mS
  • Accelerometer 1 mS
  • Temperatur 1000 mS
  • Drehzahl 100 mS
  • Vibration 1 mS
Die kleinste Abtastrate der verfügbaren Sensoren ist für das Scheduling relevant. Es musste sichergestellt werden, dass alle Tasks nur einen Bruchteil einer Milisekunde an aktiver Zeit benötigen, damit das System wie geplant arbeiten kann. Um dies sicherzustellen wurden HAL-Funktionen verwendet, welche ein Timeout unterstützen und somit ein beliebig langes blockieren nicht erlauben. Um das Timeout im Mikrosenkunden Bereich angeben zu können wurde ein eigener Zähler implementiert.

Zeitsynchronisation

Idee
Die Anwendungssoftware versendet über UDP einen Broadcast mit der einzustellenden Uhrzeit. Die Sensorplattform empfängt dieses Paket, aktualisiert die Echtzeituhr und Antwortet dem mit dem empfangenen Paket. Der Sender des Paketes nimmt die Antworten aller angeschlossenen Sensorplattformen entgegen und vergleicht die Pakete. Wurde von jeder Sensorplattform das gleiche Paket empfangenen, so wird angenommen das jede Plattform die selbe Zeit einstellen konnte. Konnte eine Sensorplattform auf den Broadcast des Senders nicht reagieren, so wird dies im Sender registriert und ein neuer Zeitstempel wird an alle Plattformen versendet. Das versenden des Zeitstempels wird beendet, sobald alle Plattformen mit dem gleichem Paket antworten konnten.

Nutzen
Die Uhrzeit welche zum Zuordnen der Abtastwerte benötigt lässt sich manuell durch erneutes kompilieren der Firmware einstellen, was bei jedem Neustart notwendig wäre. Durch die Verwendung eines Akkumulators könnte die Uhrzeit über längere Zeit gehalten werden, wodurch nicht bei jedem Neustart ein Einstellen notwendig wäre. Mit der von unsere verwendeten Methode ist ein manuelles Einstellen zu keinem Zeitpunkt notwendig und der Akkumulator kann eingespart werden. Unter der Annahme, dass die zeitliche Abweichung, in welcher verschiedene Sensorplattformen das Paket empfangen, vernachlässigbar klein bleibt, können auf diese Weise die Uhren mehrerer Plattformen synchronisiert werden.


Verhalten des Systems