Transcript Titel
von David Brucholder
Giotto und TDL
im Seminar
Softwareengineering für softwareintensive
Systeme
von David Brucholder
Seminar Softwareengineering für softwareintensive Systeme
Motivation
20.07.2015
2/25
Seminar Softwareengineering für softwareintensive Systeme
Was ist Echtzeit?
Berechnung eines Ergebnisses innerhalb eines fest
definierten Zeitintervalls
korrektes Ergebnis innerhalb Deadlines
Unterscheidung nach Echtzeitanforderungen
Je nach möglichen Folgen Unterscheidung zwischen „weichen“
und „harten“ Echtzeitsystemen
20.07.2015
3/25
Seminar Softwareengineering für softwareintensive Systeme
Software + Echtzeit = Problem?
SW hat generell kein deterministisches (Zeit-)
Verhalten
in Abhängigkeit von {Prozessor, Speicher, anderer Software,
Threads, … }
timing muss manuell abgestimmt werden
fehleranfällig
Parallelismus und Mehrprozessorkoordination
Plattformabhängigkeit
20.07.2015
4/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
TDL
Fazit
20.07.2015
5/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Giotto
TDL
Fazit
Giotto ist
eine domänenspezifische high-level Programmiersprache,
um Applikationen zu kontrollieren
Plattformunabhängig
Ein Giotto-Programm
spezifiziert die exakte Realzeitinteraktion zwischen der
Software und der realen Welt
20.07.2015
6/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Programmgenerierung
Fazit
Kontrollproblem
Modellierungswerkzeuge
Implementierungswerkzeuge
Kontrollproblem
Modellierungswerkzeuge
Modell (Simulink)
Programmgenerierung
Modell (Simulink)
S/G Translator
RTW Embedded Encoder
Implementierungwerkzeuge
Eingebettetes Software-Modell
Optimierung/Debugging
Programm
(Giotto)
Compilierung/Verlinkung C Compiler
20.07.2015
RTW Embedded Encoder
Programmgenerierung
Kombiniertes Programm
(Timing und Funktionalität)
Timing
Eingebettetes
System
S/G Simulator
Applikation
Simulation/Validation
Applikation
TDL
Funktonalitäts
Programm
(C)
Giotto-Compiler
Compilierung/
Verlinkung
C-Compiler
Eingebettetes System
Echtzeit-Code
Echtzeit-Code
7/25
Seminar Softwareengineering für softwareintensive Systeme
Was enthält Giotto?
Giotto
TDL
Fazit
Giotto-Code enthält Beschreibung der
Sensoren
Aktuatoren
Modi
Tasks ( Zeitanforderungen)
20.07.2015
8/25
Seminar Softwareengineering für softwareintensive Systeme
Modus I
Giotto
TDL
Fazit
Ein Modus definiert
Task-Aufrufe
Aktualisierungen von Aktuatoren
Wechsel zwischen Modi
Zu jedem Zeitpunkt kann genau ein Modus aktiv sein
Wechselbedingungen werden periodisch geprüft
Prüffrequenz kann geändert werden
20.07.2015
9/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Task I
TDL
Fazit
Task
release event
logische
Ausführungszeit
{
tatsächliche
Ausführungszeit
{
release
20.07.2015
termination event
running
start
suspend
running
resume complete
time
terminate
10/25
Seminar Softwareengineering für softwareintensive Systeme
Task II
Giotto
TDL
Fazit
Grundsätzliche Funktionsweise
Ein Task ist ein Software-Prozess, der periodisch
immer dasselbe sequentielle Programm, das die TaskFunktion berechnet, ausführt
Für die Berechnungsdauer der Taskfunktion wird eine
sog. logical execution time statt der tatsächlichen
Ausführungszeit angenommen
20.07.2015
11/25
Seminar Softwareengineering für softwareintensive Systeme
Task III
Giotto
TDL
Fazit
Ein Task
stellt die Funktionalität bereit
wird periodisch je nach Betriebszustand aufgerufen
gibt Ergebnis der berechnenden Funktionen an
Aktuatoren oder andere Tasks über Output-Ports
weiter
erhält Eingaben von Sensor oder Output-Ports anderer
Tasks
Die Funktionalität eines Tasks kann mit jeder beliebigen
Programmiersprache implementiert werden
20.07.2015
12/25
Seminar Softwareengineering für softwareintensive Systeme
Task IV
Giotto
TDL
Fazit
Giotto bietet über die Architektur eine Garantie für die
Einhaltung von Deadlines „Time-Safe“-nes
Diese Eigenschaft wird über die Berechnung der
WorstCaseExecutionTime (wcet) geprüft
Wenn die wcet die Bedingungen nicht erfüllt, wird das
Programm nicht übersetzt
20.07.2015
13/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Kommunikation
TDL
Fazit
Komplettierungsports
Freigabeports
Treiberports
Treiberports
E-Code
Instruktionen
Task
ports
Tasks
Funkionalitätscode
Hardwareports
Scheduling
Maschine
Treiberports
interpretiert
Eingebettete
Maschine
interpretiert
Umgebung
Taskports
führt aus
Umgebungsports
Hardware
Treiberports
S-Code
Instruktionen
compiliert
Giotto
20.07.2015
14/25
Seminar Softwareengineering für softwareintensive Systeme
Resümee Giotto
Giotto
TDL
Fazit
Giotto trennt plattformunabhängige Funktionsweise
von plattformabhängigen Schedule- und
Kommunikationsfragen auf einem hohen
Abstraktionsgrad
G
20.07.2015
15/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
TDL
Fazit
20.07.2015
16/25
Seminar Softwareengineering für softwareintensive Systeme
Was ist TDL?
Giotto
TDL
Fazit
TDL bedeutet
Timing Description Language
TDL basiert
konzeptuell auf GIOTTO
TDL bietet
erweiterte Features und eine einfachere Syntax als
GIOTTO
Modellierung über UML-Diagramme mit dem
TDL:VisualCreator (integriert in MatLab)
20.07.2015
17/25
Seminar Softwareengineering für softwareintensive Systeme
Ein Beispiel
20.07.2015
Giotto
TDL
Fazit
18/25
Seminar Softwareengineering für softwareintensive Systeme
Ein Beispiel
20.07.2015
Giotto
TDL
Fazit
19/25
Seminar Softwareengineering für softwareintensive Systeme
Beispiel I
20.07.2015
Giotto
TDL
Fazit
20/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Beispiel II
TDL
Fazit
Mode 1: Init
isStartMotor
Mode 2: Idle
ADFilter
200 Hz
NavInit
40 Hz
isInitDone
ADFilter
200 Hz
NavPilot
40 Hz
isStopMotor
Mode 3: Motor
ADFilter
NavRotorUp 40 Hz
isRotorUp &
TakeOff
isStopMotor
Mode 6: ControlOn
ADFilter
200 Hz
NavControl 40 Hz
20.07.2015
isControlOn
isControlOff
Mode 4: TakeOff
Mode 5: ControlOff
ADFilter
200 Hz
NavPilot
40 Hz
200 Hz
isEndTakeOff
ADFilter
200 Hz
NavTakeOff 40 Hz
21/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
TDL
Fazit
20.07.2015
22/25
Seminar Softwareengineering für softwareintensive Systeme
Fazit I
Giotto
TDL
Fazit
Vorteile von Giotto/TDL:
Deterministisches Verhalten durch „time-safe“
parallele Ausführung mehrerer Programme sofern „timesafe“-nes in der Komposition besteht
Modularität und Wiederverwendbarkeit von Programmen
Unabhängigkeit bzgl. der Programmiersprache
geringer Jitter
Nachteile von Giotto/TDL:
Overhead durch Tasks
20.07.2015
23/25
Seminar Softwareengineering für softwareintensive Systeme
Fazit II
Giotto
TDL
Fazit
Aufgrund des hohen Abstraktionsgrads ist ein
Realzeitverhalten mit relativ geringem Aufwand und
niedriger Fehlerrate zu erreichen
TDL ermöglicht darüberhinaus graphische
Modellierung und optische Prüfbarkeit bei der
Implementierung
20.07.2015
24/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Vielen Dank für
Eure
TDL
Aufmerksamkeit!
Fazit
20.07.2015
25/25