Modellbasierte Software-Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer Institut für Rechnerarchitektur und Softwaretechnik
Intel-Wettbewerb „Embedded“ http://www.intelchallenge.eu/embeddedcompetition/ http://newsroom.intel.com/community/en_eu/blog/2011/06/09/intel-s-european-search-for-tomorrow-s-embedded-computing-products-is-open-for-entries
Codegenerierung aus State Machines Codeoptimierung Visual State Coder andere Tools verfügbar Codeoptimierung Größe des generierten Codes
Codegenerierung für Simulink Drei kommerzielle Produkte verfügbar Embedded Coder (MathWorks) Real Time Workshop (MathWorks) TargetLink (dSPACE GmbH) Quelle: dSPACE GmbH
Thanks for the slides: Daniela Weinberg Prinzip Thanks for the slides: Daniela Weinberg
Beispiel Schaltsystem mit Schwellwert 0.5 physikalisches Modell (SimuLink) Implementierungsmodell (TargetLink) Äquivalenz?
generierter Code Zweierpotenz-Skalierung; 128 * 2-8 = 0.5 Void switch_system(Void) { /* Switchswitch_system/switch_primitive */ if (Sa1_Input2_ >= 128 /* 0.5 */) { /* # combined # Outport: switch_system/OutputPort */ Sa1_OutputPort_ = Sa1_Input1_; } else {
Codeabsicherung Wie kann man sicherstellen, dass der generierte Code das Erwartete leistet? (c) generierter Code (a) Modell (b) Code- Generator (d) Code Ausführung Physical Model (floating - point) Compiler (Linker) Host PC Code generator C Code Target Implementation Model (fixed - point) Cross - compiler (Linker / Loader ) Qualitätssicherung auf jeder Ebene notwendig!
Modelltransformation Codegenerator = Compiler Grammatik Metamodell Abstrakter Syntaxbaum XML-Repräsentation Attributgrammatik Graphtransformation Realisierung von Modell-Codegeneratoren durch Modelltransformationen verschiedene Standards verfügbar: QVT/M2M, ATL, MOF2Text, Tefkat, XSLT, ...
QVT Beispiel Geg. Metamodell für Quell- und Zielmodelle A Model-Driven Development Approach to Mapping UML State Diagrams to Synthesizable VHDL Stephen K. Wood, David H. Akehurst, Oleg Uzenkov, W. Gareth J. Howells, and Klaus D. McDonald-Maier
VHDL Metamodell
QVT Regel
Beispiel: Elimination von „deep transitions“ Graphical Composition of State-Dependent Use Case Behavioral Models Jon Whittle, João Araújo, Ana Moreira, Rasheed Rabbi
Deployment Wie realisiert man elektrische / elektronische / elektronisch programmierbare Regler? welche Hardware, Software? welche Peripherie (Sensorik, Aktuatorik?) wie kommt die SW auf die HW? Übung mit Lego- und anderen Systemen
Eingebettete Systeme: Hardware Spezielle Prozessoren 4-bitter, minimale Kosten, energieoptimiert keine MMU, Coprozessoren, FloatingPoint Microcontroller mit zusätzlichen Steuerungsleitungen Spezialprozessoren (DSP, SoC, Krypto) Trend: FPGAs Spezielle Speicher meist bewegungslos (keine magnetischen/optischen Medien) ROM, PROM, EEPROM; zunehmend: Flash Disks minimaler RAM, auch; dual ported RAM Zusatzhardware Spezielle Platinen, AD/DA-Wandler, ASICs einsatzspezifische Sensoren und Aktuatoren Einfache Kommunikationsbusse und –netze CAN, Feldbusse; zunehmend auch Ethernet, Bluetooth etc.
Eingebettete Systeme: Aufbau Applikationsschicht Steuerungsalgorithmus Benutzungsschnittstelle Realzeit-Betriebssystem Middleware Hardware Sensorik, Aktuatorik Netzverbindung Prozessankopplung (Funk-) Netzwerk
Beispiel: Lego RCX Robotic Command Explorer (1998) „Programmable Brick“ ursprüngliches Design: S. Papert, MIT Media Lab Vorläufer: Code Pilot, Cybermaster, Scout wie programmieren? Nachfolger: NXT (2006) Hitachi Single-Chip-Mikrocontroller Display, 4 Knöpfe, Batteriefach 3 analoge Eingänge, 3 analoge Ausgänge IR-Kommunikation (seriell)
Renesas H8/3297-3292 Microcontroller H8/300-CPU 16 KB ROM 0,5 KB (!) RAM 8 E/A-ports (8-Bit), SCI 16 Register (8-Bit) max. 16 MHz Takt Timer, A/D-Wandler etc. “disencouraged” http://eu.renesas.com/fmwk.jsp?cnt=product_folder.jsp&fp=/products/mpumcu/h8_family/h8300_series/h83297_group
EA-Ports Sensoreingänge Motorausgänge Spannungsmessung, 100=Kurzschluss, 0=kein Kontakt Über U=R.I lässt sich Widerstand messen Schalter, Temperatursensor (passiv) Lichtsensor, Drehsensor (aktiv) 3 ms Batteriespannung, 0.1 ms Sensorwert Motorausgänge Leistungssteuerung über Pulsweitenmodulation Verschaltungssicher Motoren, Lämpchen
NXT Lego „Technik“ Serie Atmel 32-Bit-ARM-Prozessor AT91SAM7S256; 256 kB Flash-Speicher, 64 KB RAM, 48 MHz Koprozessor: Atmel 8-Bit AVR, ATmega48; 4 KB Flash-Speicher, 512 Byte RAM, 8 MHz digitale Sensoren (Ultraschall, Spezialsensoren), 4 Stecker I2C-Bus digital/analog-Kabel mit Spezialstecker Motoren mit Drehwinkelsensor Bluetooth-Kommunikation, USB-Anschluss Punktmatrix-Display, 8-bit Sound Firmware mit Dateisystem
SILabs MCUniversity C8051F020 mixed-signal MCU 25 MIPS, 64 kB Flash, 12-Bit ADC, 100-Pin
Atmel RN-mega 2560 ATmega AVR® 8-Bit Microcontroller RISC Architecture, up to 16 MIPS Throughput at 16 MHz, On-Chip 2-cycle Multiplier 100 pin 256 K Flash 8K RAM, 4K EEPROM Timer, PWM-Kanäle 16 analoge Eingänge, 86 programmierbare I/O Leitungen vier TTL UARTS (RX/TX) RS232, USB, I2C, SPI-Bus …
Aufgabe generierte SW „zum Laufen bringen“