Download Efficient Time-Triggered Execution in an Interrupt-Driven Real

Transcript
Abstract
Traditional time-triggered real-time operating systems are usually implemented
by multiplexing the predefined schedule onto a single hardware timer. At each
hardware timer interrupt, the planned task is looked up in the static table, the timer
is reprogrammed to the subsequent activation point and the task is dispatched. The
overhead of this software effort leads to a considerable latency between interrupting
the CPU and executing the actual task function.
This thesis explores the possibility of minimizing the overhead by making
use of flexible timer cells as they are available in large arrays on modern 32-bit
microcontrollers. It is shown that these cells can be set up to autonomously maintain
a schedule and thereby eliminate most of the software overhead involved in timetriggered activations and other time-based mechanisms such as deadline monitoring
and execution budgeting. A reference implementation of this design on the Infineon
TriCore TC1796 is presented and evaluated along with two commercially available
solutions. The comparison shows that this novel concept significantly reduces the
overhead in time-triggered operating systems, with up to three-figure speed-ups.
Additionally, undesirable effects that could be observed in traditional designs such
as situations of priority inversion and unnecessary interrupts are avoided by this
new design.
Zusammenfassung
In Standardimplementierungen zeitgesteuerter Echtzeitbetriebssysteme wird der
statisch vorkonfigurierte Ablaufplan üblicherweise auf einen einzelnen HardwareZeitgeber abgebildet, welcher die CPU zum Zeitpunkt der nächsten geplanten
Einlastung unterbricht. In der entsprechenden Behandlungfunktion dieser Unterbrechnung wird der zu aktivierende Task aus der statischen Tabelle herausgesucht,
der Zeitgeber auf das darauffolgende Ereignis umprogrammiert, und schließlich der
Task eingelastet.
Im Rahmen dieser Arbeit wurde untersucht, inwiefern der damit verbundene
erhebliche Rechenaufwand durch den Einsatz von, auf modernen 32-Bit-Mikrocontrollerplatformen in großer Anzahl verfügbaren, Zeitgebereinheiten minimiert
werden kann. Es wird gezeigt, wie es durch die geschickte Konfiguration dieser
Einheiten möglich ist, die Aufgabe des Abarbeitens eines Zeitplans an das Zeitgebermodul auszulagern, und dadurch die Latenzen zeitgesteuerter Einlastung stark
zu reduzieren. Eine Referenzimplementierung für die Plattform Infineon TriCore
TC1796 wird vorgestellt, die neben dem zeitgesteuertem sowie gemischt zeit- und
ereignisgesteuertem Betrieb weitere zeitbasierte Mechanismen wie Überwachung von
Terminen und Zeitbudgets bietet. Eine Evaluation dieser Implementierung im Vergleich mit zwei kommerziell angebotenen Systemen zeigte neben einem vorteilhaftem
Laufzeitverhalten durch Vermeidung von Prioritätumkehr und unnötigen Unterbrechungen eine durchweg verbesserte Leistung gegenüber den Vergleichssystemen um
bis zu dreistellige Faktoren.