Timing Definition Language
Die Timing Definition Language (TDL) erlaubt die Beschreibung des Zeitverhaltens einer komponentenbasierten Echtzeitanwendung basierend auf dem Konzept der logischen Ausführungszeit (Logical Execution Time, LET). Die LET abstrahiert von der tatsächlichen (physischen) Ausführungszeit auf einer bestimmten Ausführungsplattform und erlaubt die Simulation solcher Anwendungen unter Beibehaltung des Echtzeitverhaltens ohne dass sämtliche Plattformdetails (CPU, Speicher, Topologie) bekannt sein müssen. Grundlage für die Ausführung einer TDL-Anwendung auf einer bestimmten Ausführungsplattform ist das Wissen über die im schlechtesten Fall zu erwartende Ausführungszeit (Wort Case Execution Time, WCET) der einzelnen Rechenaufgaben (Tasks). Die Ermittlung der WCET ist nicht Gegenstand von TDL.
Geschichtliche Entstehung von TDL
Die konzeptionellen Grundlagen für TDL stammen aus dem Giotto-Projekt der University of California, Berkeley, das in den späten 1990er Jahre begonnen wurde. Giotto führte das Konzept der LET (Logical Execution Time) ein und definierte ein Echtzeitprogramm als einen deterministischen endlichen Automaten (DFA), der in jedem seiner Zustände eine Menge von periodischen Aktivitäten durchführt (multi-mode), die jeweils eine eigene Ausführungsperiode besitzen können (multi-rate) und bedingt ausgeführt werden können (guarded activities). Die Aktivitäten sind (1) Task-Aufrufe, (2) Setzen von Aktuatoren und (3) Zustandswechsel.
TDL baut auf diesen Konzepten auf und führt einige Erweiterungen sowie leistungsfähige Werkzeuge ein, mit deren Hilfe TDL-Programme entwickelt werden können. Die Erweiterungen von TDL bestehen in einem Komponentenmodell und in der Integration von asynchronen Aktivitäten. Die Entwicklung von TDL begann im Jahr 2003 an der Universität Salzburg (Österreich) als Teil des MoDECS-Projektes (Model based Development of Embedded Control Systems). Ab dem Jahr 2007 erfolgte die Weiterentwicklung von TDL als Teil eines CD-Labors (Christian Doppler Laboratory for Embedded Software Systems) ebenfalls an der Universität Salzburg.
Das Komponentenmodell von TDL
TDL erlaubt die gleichzeitige Ausführung von mehreren Giotto-artigen Echtzeitprogrammen, die jeweils in einem benannten Programmkonstrukt, dem Modul, gekapselt sind. Durch die LET-Eigenschaft von Task-Aufrufen können einem System zusätzliche Module hinzugefügt werden ohne dass sich das Zeitverhalten der vorher schon existierenden Module ändert. Das gilt natürlich nur solange die CPU(s) in der Lage ist(sind) die zusätzlichen Module zu rechnen.
Im einfachsten Fall sind die Module unabhängig voneinander und dienen nur dazu mehrere Funktionen auf einem Knoten zu implementieren. Man spricht dann auch von ECU-Konsolidierung (ECU=Electronic Control Unit). Im allgemeinen Fall können Module aber auch voneinander abhängug sein, wa sin TDL durch eine import-Deklaration ausgedrückt wird. Der Datenfluss zwischen mehreren Modulen kann auch zyklisch sein.
TDL-Module dienen auch als Basis für die Verteilung einer Anwendung auf mehrere Knoten eines verteilten Systems. In diesem Fall kann ein Werkzeug die erforderliche Netzwerkkommunikation automatisch aus den beteiligten Modulen und dern Knotenzuordnung und Netzwerkeigenschaften ermitteln. Das beobachtbare (logische) Zeitverhalten der entstehenden verteilten Anwendung entspricht dem einer nicht-verteilten. Man spricht deswegen auch von transparenter Verteilung.
Die Integration von asynchronen Aktivitäten
TODO
Die TDL Werkzeugkette
TODO