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.