<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Timing_Definition_Language</id>
	<title>Timing Definition Language - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Timing_Definition_Language"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Timing_Definition_Language&amp;action=history"/>
	<updated>2026-05-19T13:27:31Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Timing_Definition_Language&amp;diff=1587996&amp;oldid=prev</id>
		<title>imported&gt;Thoken: /* Weblinks */ 1 externer Link geändert laser.inf.ethz.ch no host archive; 1 externer Link geändert softwareresearch.net 404 anderer Ort</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Timing_Definition_Language&amp;diff=1587996&amp;oldid=prev"/>
		<updated>2025-11-10T16:35:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Weblinks: &lt;/span&gt; 1 externer Link geändert laser.inf.ethz.ch no host archive; 1 externer Link geändert softwareresearch.net 404 anderer Ort&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Timing Definition Language&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;TDL&amp;#039;&amp;#039;&amp;#039;) ist eine [[deklarative Programmiersprache]] zur Beschreibung des Zeitverhaltens einer komponentenbasierten [[Echtzeitsystem|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 ([[Worst Case Execution Time]], WCET) der einzelnen Rechenaufgaben (Tasks). Die Ermittlung der WCET ist nicht Gegenstand von TDL.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
&lt;br /&gt;
Die konzeptionellen Grundlagen für TDL stammen aus dem Giotto-Projekt der [[University of California, Berkeley]], das in den späten 1990er Jahren begonnen wurde. Giotto führte das Konzept der LET (Logical Execution Time) ein und definierte ein Echtzeitprogramm als einen [[deterministischer endlicher Automat|deterministischen endlichen Automaten]] (DFA), der in jedem seiner Zustände eine Menge von periodischen Aktivitäten durchführt (&amp;#039;&amp;#039;multi-mode&amp;#039;&amp;#039;), die jeweils eine eigene Ausführungsperiode besitzen können (multi-rate) und bedingt ausgeführt werden können (&amp;#039;&amp;#039;guarded activities&amp;#039;&amp;#039;). Die Aktivitäten sind Task-Aufrufe, Setzen von [[Aktor|Aktuatoren]] und Zustandswechsel.&lt;br /&gt;
&lt;br /&gt;
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 [[Christian-Doppler-Laboratorien|CD-Labors]] (Christian Doppler Laboratory for Embedded Software Systems) ebenfalls an der Universität Salzburg.&lt;br /&gt;
&lt;br /&gt;
== Komponentenmodell ==&lt;br /&gt;
&lt;br /&gt;
TDL erlaubt die gleichzeitige Ausführung von mehreren Giotto-artigen Echtzeitprogrammen, die jeweils in einem benannten Programmkonstrukt, dem &amp;#039;&amp;#039;[[Modul (Software)|Modul]]&amp;#039;&amp;#039;, 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 oder CPUs in der Lage ist bzw. sind, die zusätzlichen Module zu rechnen.&lt;br /&gt;
&lt;br /&gt;
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 [[Steuergerät|ECU]]-Konsolidierung. Im allgemeinen Fall können Module aber auch voneinander abhängig sein, was in TDL durch eine &amp;#039;&amp;#039;import&amp;#039;&amp;#039;-Deklaration ausgedrückt wird. Der Datenfluss zwischen mehreren Modulen kann auch zyklisch sein.&lt;br /&gt;
&lt;br /&gt;
TDL-Module dienen auch als Basis für die Verteilung einer Anwendung auf mehrere Knoten eines [[Verteiltes System|verteilten Systems]]. In diesem Fall kann ein Werkzeug die erforderliche Netzwerkkommunikation automatisch aus den beteiligten Modulen und deren Knotenzuordnung und Netzwerkeigenschaften ermitteln. Das beobachtbare (logische) Zeitverhalten der entstehenden verteilten Anwendung entspricht dem einer nicht-verteilten. Man spricht deswegen auch von &amp;#039;&amp;#039;transparenter Verteilung&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Integration von asynchronen Aktivitäten ==&lt;br /&gt;
&lt;br /&gt;
TDL erlaubt neben den zeitgesteuerten (synchronen) Aktivitäten auch die Spezifikation von ereignisabhängigen (asynchronen) Aktivitäten wie Task-Aufruf und Aktuator-Setzen. Diese können mit einem Hardware-[[Interrupt]], einem periodischen asynchronen Zeitgeber oder mit einem Update auf einem Ausgabe-Port angestoßen werden. Synchrone und asynchrone Aktivitäten können untereinander auch Daten austauschen, wobei das Schreiben von Ergebniswerten bzw. das Lesen von Eingabewerten so synchronisiert sind, dass sie jeweils eine untrennbare Einheit darstellen. &lt;br /&gt;
&lt;br /&gt;
Generell gilt, dass asynchrone Aktivitäten nicht sofort ausgeführt werden, sondern zuerst in eine [[Vorrangwarteschlange|Prioritätswarteschlange]] eingetragen werden, aus der sie durch einen Hintergrundprozess, der mit niedrigster Priorität läuft, ausgelesen und ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== TDL-Werkzeugkette ==&lt;br /&gt;
&lt;br /&gt;
Im Zentrum der TDL-Werkzeugkette steht der &amp;#039;&amp;#039;TDL:Compiler&amp;#039;&amp;#039;, der eine Menge von TDL-Modulen in sogenannten &amp;#039;&amp;#039;E-Code&amp;#039;&amp;#039;  (embedded code) transformiert. Der E-Code wird für jeden Mode jedes Moduls berechnet und beschreibt die Folge von Aktivitäten für die Dauer einer Mode-Periode. Anschließend wiederholen sich die Aktivitäten. Die E-Code-Befehle stellen Instruktionen einer [[Virtuelle Maschine|virtuellen Maschine]] dar, der sogenannten &amp;#039;&amp;#039;E-Maschine&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Neben der Erstellung des E-Codes erlaubt der TDL-Compiler auch die Erzeugung von plattformspezifischen Ausgaben durch Verwendung von Erweiterungen ([[Plug-in]]s), die für eine bestimmte Zielplattform erstellt werden können.&lt;br /&gt;
&lt;br /&gt;
Die Organisation des [[Compiler]]aufrufes mit allfälligen Parametern wie der Angabe der WCET für die einzelnen Tasks und der Zuordnung der Module zu Knoten eines verteilten Systems erledigt ein Werkzeug namens &amp;#039;&amp;#039;TDL:VisualDistributor&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Als Alternative für die Beschreibung eines TDL-Moduls in Textform kann mit dem Werkzeug &amp;#039;&amp;#039;TDL:VisualCreator&amp;#039;&amp;#039; ein graphisches [[Frontend]] verwendet werden. &lt;br /&gt;
&lt;br /&gt;
Zur Überwachung, Protokollierung und Analyse der Netzwerkaktivitäten auf einem [[FlexRay]]-Netzwerk kann das Werkzeug &amp;#039;&amp;#039;TDL:VisualAnalyzer&amp;#039;&amp;#039; eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Für die Simulation von TDL-Anwendungen existiert eine Version von &amp;#039;&amp;#039;TDL:VisualCreator&amp;#039;&amp;#039;, die in das Simulationswerkzeug [[Matlab]]/[[Simulink]] integriert ist. Für die Erzeugung von plattformspezifischem Code steht eine in Simulink integrierte Version von &amp;#039;&amp;#039;TDL:VisualDistributor&amp;#039;&amp;#039; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Webarchiv | url=http://laser.inf.ethz.ch/2005/slides/pree/02a_TDL.pdf | wayback=20160304035704 | text=The Timing Definition Language (TDL)}} (PDF, englisch; 614&amp;amp;nbsp;kB)&lt;br /&gt;
* [http://www.chrona.com/fileadmin/user_upload/downloads/TDL_Report_June_2011.pdf TDL - Timing Definition Language Specification Version 1,6] (PDF, englisch)&lt;br /&gt;
* [https://softwareresearch.net/fileadmin/user_upload/Documents/publications/technical_reports/T024.pdf Timing Definition Language (TDL) Specification 1.5] (PDF, englisch; 385 kB)&lt;br /&gt;
* [http://preetec.com/index.php?id=2 TDL-Produkte] (englisch)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Deklarative Programmiersprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Thoken</name></author>
	</entry>
</feed>