Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Java für eingebettete Systeme
1. Eine Architektur zur dynamischen Rekonfiguration
eingebetteter signalverarbeitender Systeme
Dipl.-Inf. Reinhard Meyer
22.07.10
2. Motivation
● Eingebettete Systeme:
● Anwendung im sicherheitsrelevanten
Umfeld Automotive, Luft- und Raumfahrt,
Medizin, ...
● Fortschreitende Miniaturisierung
● Zunahme der Leistungsfähigkeit der
Hardware
● Implementierung von Funktionalität mit
steigender Komplexität in Software
● Verwendung von Hochsprachen zur
Implementierung
Historie softwarebasierter
● Anpassung des Funktionen im Automobil
Softwareentwicklungsprozesses [IMMOS04]
22.07.10 2
3. Übersicht
● Softwareentwicklung für eingebettete Systeme
● Anforderungen an Entwicklung und Betrieb
● Maßnahmen zur Verbesserung der Softwarequalität
● Warum Java und FPGA ?
● Android-Plattform
● OSGI – Dynamische Rekonfiguration von Software
● Modellierung von verteilten Systemen für die Signalverarbeitung
● Eigenschaften von Werkzeugen der Signalverarbeitung
● Modellierung von Algorithmen
● Konzeptvorschlag
● Zusammenfassung
22.07.10 3
4. Softwareentwicklung für
eingebettete Systeme
●
Anforderungen:
● Entwicklung:
– Verteiltheit und Nebenläufigkeit: Aufgaben werden auf verschiedenen
Plattformen parallel ausgeführt:
● x86, PPC, DSP, ASIC, FPGA
● Neuer Trend: Multicore
– Echtzeitfähigkeit und Vorhersagbarkeit: Einhaltung von Zeitschranken,
deterministisches Verhalten
– Weitere Eigenschaften: Performance, Datensicherheit, Fehlertoleranz
– Variantenmanagement
● Betrieb (Wartung):
– Änderung der Funktionalität
– Fehlerbeseitigung
22.07.10 4
5. Softwareentwicklung für
eingebettete Systeme
● Konzepte zur Erhöhung der Modelling Space
Softwarequalität Platform-independent Platform-specific
Model (PIM) Constraints
● Modellgetriebene Entwicklung
– Modellbildung und Simulation Automated Transformation
– Automatisierte Transformation
– Plattform-Codegenerierung Platform 1 Platform N
● Verwendung einer interpretierten Platform-specific Platform-specific
Sprache Model (PSM) Model (PSM)
– Plattformunabhängig
Code ... Code
– Verlagerung der sicherheits- Generation Generation
relevanten Konzepte vom
Programmcode auf den Interpreter Platform-specific Platform-specific
Code Code
Modellgetriebene Entwicklung
22.07.10 5
6. Softwareentwicklung für
eingebettete Systeme
● Charakterisierung
● Modellbasierte Entwicklung
+ Höhere Codequalität durch automatische Codegenerierung
+ Änderbarkeit der Funktionalität im Modell (virtuell)
+ Einheitliches Datenmodell, vereinfachtes Variantenmanagement
– Erhöhter Verwaltungsaufwand bei heterogenen, komplexen Strukturen
– Informelle Auf- und Nachbereitung der Daten
● Interpretierte Sprache
+ Zuverlässigkeit: Automatische Speicherverwaltung
+ Sicherheit: Mechanismen vor der Programmausführung
– Deterministisches Verhalten und Zugriff auf Systemressourcen
22.07.10 6
7. Softwareentwicklung für
eingebettete Systeme
● Java als Sprache der Wahl:
● Entstehung: Green Hill Projekt, Sun Microsystems,
1992: Touchscreen-basiertes Steuergerät
(StarSeven)
● Konzentration auf den Desktop- und Servermarkt,
aktuelle Version ist Java 6
● Laufzeitumgebung: Virtuelle Maschine (VM) +
Laufzeitbibliothek mit API, Programmcode wird im
Allgemeinen interpretiert
● Plattformunabhängigkeit: Bytecode ist universell,
für eine Architektur gibt es die jeweils passende
VM, inzwischen Vielzahl an verschiedenen VM Sun Trademark Logo
für Java
verfügbar
22.07.10 7
8. Softwareentwicklung für
eingebettete Systeme
● Warum Java ?
● Vorurteil: „Java ist langsam, speicherintensiv
und nicht echtzeitfähig“
– Kompilation von Code statt Interpretation:
Hotspot-Compiler, AOT-Compiler mit Early-
Binding ermöglichen beschleunigtes
Abarbeiten von Programmen
– Garbage Collection: Speicherbereinigung
als niedrig priorisierter Thread
– Verwendung einer reduzierten
Laufzeitbibliothek
– 2000: Realtime Specification for Java SciMark 2.0 Java
(RTSJ) Benchmark Suite
22.07.10 8
9. Softwareentwicklung für
eingebettete Systeme
● Android Plattform
● Softwarestack der Open Handset
Alliance für mobile Geräte
● Betriebssystem, Middleware und
elementare Anwendungen
zusammengefasst in einem
Framework
● Dalvik VM mit eigenem Bytecode
(dex) zur Ausführung von
Anwendungen, java-basiert
● Linux-Kernel und native
Codebibliotheken für zeitkritische
Anwendungen Android Platform,
Quelle: http://developer.android.com
22.07.10 9
10. Softwareentwicklung für
eingebettete Systeme
● OSGI
● Standard zur dynamischen
Rekonfiguration von Software
● Modularisierung von Anwendungen
und Dienste (Bundles) in einem
Komponentenmodell
● Austausch von Code zur Laufzeit
● Hardware- und Sprachunabhängig
● Implementiert für Java, .Net geplant
● Anwendungen im Automotive-Bereich
(BMW), Desktop-Bereich (Eclipse),
Heimautomatisierung OSGI Architecture
Quelle: http://en.wikipedia.org/wiki/OSGi
22.07.10 10
11. Softwareentwicklung für
eingebetteter Systeme
● Warum Java i.V. mit FPGA ?
● Vorteile von Java bei der
Softwareentwicklung
● Einheitliches HW/SW-Designmodell
● FPGA: Erhöhung der Rechenleistung
durch Ausnutzen der Parallelisierung
– Bsp.: Damenproblem (diskrete
Optimierung)
● NQueens@home: 25-Damen-
Problem – 260 PC in 9 Monaten
● FPGA-Lösung: 26-Damen-
Problem – 18 FPGA in 6 Monaten
[Preußer09]
22.07.10 11
12. Softwareentwicklung für
eingebettete Systeme
● Warum Java i.V. mit FPGA
● JBits SDK
– Bitstream-API für Xilinx FPGA
– Erzeugung und dynamische
Rekonfiguration von Schaltkreisen
über das XHWIF
● JHDL
– Hardware-Beschreibungssprache
– Ziel: Konsistenz von
Objektdatenflüssen SW/HW
Quelle: JBits
22.07.10 12
13. Werkzeuge der Signalverarbeitung
● Werkzeugeigenschaften
● Homogenität:
– Überschaubare Anzahl an verschiedenen
Werkzeugarten (Algorithmen)
– Hoher Grad an mathematischer Strukturierung
● Optimierung:
– Manuelles Tuning (plattformabhängig)
– Auto-Tuning: Computer optimiert Algorithmen
● Verteiltheit:
The Mathworks
– Algorithmen für PC, DSP, ASIC und FPGA Matlab / Simulink
22.07.10 13
15. Modellierung von Algorithmen in der
Signalverarbeitung
● SPIRAL
● Automatische Codegenerierung für
schnelle Algorithmen in der
Signalverarbeitung
● Heuristische Suchverfahren für
den optimalen Algorithmus
hinsichtlich der Laufzeit auf einer
PC-Architektur
● Beschreibung der Algorithmen
(math. Matrix-Faktorisierung)
mittels einer Signal Processing
Language (SPL)
● Implementation der Algorithmen in
C/FORTRAN
Architektur von SPIRAL [Püsch05]
22.07.10 15
16. Modellierung von Algorithmen in der
Signalverarbeitung
● freeSP
● Ganzheitlicher Ansatz zur
Modellierung von verteilten
Systemen
● Deskriptive, plattformunabhängige
Beschreibung des Systems (XML)
● Zerlegung des Gesamtsystems
und Zuordnung zu einzelnen
Prozessen
● Implementierung der Algorithmen
aus vorgehaltenen Bibliotheken
● Modellierung und Simulation von
Nebenläufigkeit mittels Petri-
Netzen
FreeSP – Grobstruktur [Weiss07]
22.07.10 16
17. Projektvorschlag
● Konzept
● Verteiltes Rechnen auf eingebetteten signalverarbeitenden Systemen
● Workflow
1. Modellierung eines signalverarbeitenden Systems
2. Simulation des Modells
3. Partitionierung in Hard- und Software
4. Transformation auf die Zielplattform
● Modelltransformationen
– Erzeugen von Java-Programmcode zur Ausführung auf dem PPC
– Übersetzung von parallelisierbaren Teilen der Rechenaufgabe in
programmierbare Logik auf einem FPGA
22.07.10 17
18. Projektvorschlag
● Plattform:
● Modellierung:
Standard-PC, IDE (Eclipse)
● Ausführung:
Virtex-II-FPGA mit Dual-
Core-PPC
– (Echtzeit-)Betriebssystem
– Java VM – eingebettete
Laufzeitumgebung
– RTR Soft- und Hardware
– Onboard-System zur
Bildverarbeitung
Architektur für FPGA (Ausführung, linke Seite) und PC
(Modellierung, rechte Seite)
22.07.10 18
19. Zusammenfassung
● Signalverarbeitende Systeme
● Neue Herausforderung an die Softwareentwicklung in Bezug auf
– Verteiltheit und Nebenläufigkeit
– Verlässlichkeit (Verfügbarkeit, Sicherheit, Wartbarkeit)
– Echtzeitfähigkeit und deterministisches Verhalten
– Variantenmanagement
● Modellbasierte Entwicklung und interpretierte Sprachen als
Designansatz
● Implementierung dieses Ansatzes anhand einer Bildverarbeitungslösung
● Quantifizierung des Gesamtsystems hinsichtlich Wartbarkeit und
Performance
22.07.10 19
20. Quellen
● [IMMOS04] T. Klein, M. Conrad, I. Fey, M. Grochtmann: Modellbasierte
Entwicklung eingebetteter Fahrzeugsoftware bei DaimlerChrysler, Proc.
Modelling LNI, 2004.
● [JBits] S. Guccione et. Al.: Jbits – A Java Interface for Reconfigurable
Computing, Xilinx Inc.
● [Püsch05] M. Püschel et. Al.: SPIRAL: „Code Generation for DSP
Transforms“, Proc. IEEE special issue on „Program Generation,
Optimization, and Adaptation'', 2005.
● [Preußer09] T. Preußer et. Al.: Putting Queens in Carry-Chains, In: 3rd
HiPEAC Workshop on Reconfigurable Computing, Paphos, Cyprus, 2009.
● [Weiss05] A. Weiss: „Deklarative Beschreibung verteilter
signalverarbeitender Systeme“, Linux Automation Konferenz, 2005.
22.07.10 20