Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Parsifal Wolper Geändert vor über 9 Jahren
1
Modellbasierte Software-Entwicklung eingebetteter Systeme
Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer Institut für offene Kommunikationssysteme FOKUS
2
Noch Fragen? Schema für Controller in C? Was ist ein Codegenerator?
Prinzip der Übersetzung Scicos – C? Behandlung von Schleifen? Unterschied Gleitkomma-Festkomma? Codeoptimierungen – welche? Absicherung der Codegenerierung? X-in-the-Loop: Was ist X?
3
Codegenerierung Codegenerierung aus SysML/UML Codegenerierung aus State Machines Codegenerator ist „Compiler für Modelle“ Wiederverwendung schnelle Prototyp- und Produkterstellung erhöhte Zuverlässigkeit gegen Programmierfehler automatische Optimierung des generierten Codes Ziel: automatische Übersetzung von Modellen in ausführbaren (C-) Code
4
Codegenerierung aus SysML
Requirement Diagramme (noch) nicht wirklich für Code verwendbar Blockdiagramme (BDD/IBD) VHDL-Code experimentelle Tools (RTaW, c-Lab U Paderborn) SysML to SystemC Aktivitätsdiagramme zur Spezifikation des Kontrollflusses Zustandsdiagramme
5
Example Source: Mura, Panda, Prevostini: Executable models and Verifivation from MARTE and SysML
8
UML Codegenerierung (Fast) jedes UML Tool behauptet, Code generieren zu können Wiki listet ca. 100 Tools auf (“Comparison of code generation tools”) Unterschiedliche Fähigkeiten Meist: Erzeugung von Schablonen Hohe Schule: Round-trip Engineering Für Eclipse-UML: Acceleo, Modelio (Softeam)
9
Modelio – Demo vertagt
10
UML Zustandsmaschinen
neben Klassendiagrammen die am häufigsten zur Codegenerierung verwendete Diagrammart Übertragung der operationellen Semantik in die Zielsprache Beispiel: Hugo-RT, U Augsburg nimmt beliebiges (Papyrus-) Modell erzeugt Java und Promela (für Model-Checking)
11
Schema Paradigma für funktionale Systeme input-process-output
Paradigma für eingebettete Systeme loop{sense-think-act} Hauptschleife, endlos wiederholt: - lies Sensorwerte - berechne Abweichung oder Aktion - schreibe Aktuatorwerte Innerhalb der Berechnung können verschiedenen Modi (Zustände) angenommen werden Codegeneratoren folgen diesem Paradigma
12
Beispiel Pacemaker
13
Example: VDI-Pacemaker
Verhalten (vereinfacht) wait for an atrial pulse to be sensed wait for at most the AV delay if within this time a ventricular pulse is detected, goto step 1. otherwise, generate a ventricular pulse and goto step 1.
14
Allgemeines Übersetzungsschema
s = off; while (true) { dequeue i from input stack; case s of off: case i of dn: s = tape; end; tape: case i of dn: s = memory; up: s = off; end; memory: case i of dn: s = play; play: case i of dn: s = tape; up: s = off; end; end; } off memory tape play dn up Variable s ist der aktuelle Zustand; Variable i ist der aktuelle Input
15
Sprungtabellentechnik
table=[state]x[input][state]: table=[[off,dn,tape],[tape,up,off], [tape,dn,memory],...] s=off; while (true){ dequeue i from input stack; s=table[s,i]; } off memory tape play dn up Variable s ist der aktuelle Zustand; Variable i ist der aktuelle Input
16
Codegenerierung für Zustandsmaschinen
Behandlung des Event-Pools Behandlung von Parallelität Hierarchisierung Completion Events History-States Übersetzungsschema s = s0; while (true) { dequeue (trigger); let Enabled = {tT | t=(s,(e,c,a),s´), c = true, e=0 or trigger e} if (Enabled not empty) { choose some t=(s,(e,c,a),s´) from Enabled; execute a; //potentially enqueing other triggers s = s´; }
17
Beispiel: VisualState Codegenerierung
18
Menschen- vs. maschinenlesbarer Code
19
Verifikation und Reportgenerierung
Schlüsselwort: Modellprüfung (model checking)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.