09.08.2013 Aufrufe

download - SPES 2020

download - SPES 2020

download - SPES 2020

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>SPES</strong><br />

Software Plattform Embedded Systems <strong>2020</strong><br />

Zentralprojekt<br />

<strong>SPES</strong>-Aut / Embedded4You e.V.<br />

Domänenübergreifende Gegenüberstellung<br />

von<br />

Hardware-Abstraktionskonzepten<br />

Beginn 17.10.2011<br />

Stand 17.10.2011


Dokumentenüberblick<br />

Förderkennzeichen 01IS08045A<br />

Deliverable N/A<br />

Author (<strong>SPES</strong>-<br />

Partner)<br />

Author (<strong>SPES</strong>-<br />

Partner)<br />

Kurzdarstellung<br />

Urs Gleim<br />

E-Mail: urs.gleim@siemens.com<br />

Telefon: +49 89 636-45117<br />

Robert Schachner<br />

E-Mail: rschachner@rst-automation.de<br />

Telefon: +49 89 9616018-14<br />

Dieses Dokument dient als Arbeitspapier zur Diskussion von Hardware-Abstraktionskonzepten, wie sie in Embedded-<br />

Systemen verschiedener Domänen zu finden sind.<br />

Die verschiedenen Konzepte sollen auf Basis der Anforderungen in Verschienen Domänen bewertet und miteinander<br />

verglichen werden.<br />

Diese vorliegende Version des Dokuments enthält zunächst einige grundsätzlichen Überlegungen und eine erste<br />

Sammlung existierende Abstraktionsmodelle.<br />

- 2 -


Inhaltsverzeichnis<br />

Dokumentenüberblick ...................................................................................................................................................... - 2 -<br />

Kurzdarstellung ................................................................................................................................................................ - 2 -<br />

1 Motivation ....................................................................................................................................................................... 4<br />

2 Wer braucht Abstraktion? ............................................................................................................................................... 4<br />

3 Was wird abstrahiert? ..................................................................................................................................................... 5<br />

4 Wie wird Abstrahiert? ..................................................................................................................................................... 6<br />

4.1 Datenzentrisches Modell ....................................................................................................................................... 6<br />

4.2 Logische Pfade ..................................................................................................................................................... 6<br />

4.3 Service-orientierte Ansätze ................................................................................................................................... 6<br />

5 Vorteile dieser Herangehensweise ................................................................................................................................ 7<br />

5.1 Wiederverwendbarkeit der Komponenten innerhalb des Abstraktion Layers (Blick von unten) ........................... 7<br />

5.2 Plattform Unabhängigkeit der Applikation (Blick von Oben) ................................................................................. 7<br />

5.3 Verwendung von Domänenspezifischen Werkzeugen auf einer Abstraktionsschicht .......................................... 7<br />

6 Beispiele ......................................................................................................................................................................... 7<br />

6.1 GAMMA ................................................................................................................................................................. 7<br />

6.1.1 Allgemein .......................................................................................................................................................... 7<br />

6.1.2 Funktionsweise ................................................................................................................................................. 7<br />

6.2 ACE ....................................................................................................................................................................... 9<br />

6.3 Corba .................................................................................................................................................................. 10<br />

6.4 ICE ...................................................................................................................................................................... 10<br />

6.5 Epics ................................................................................................................................................................... 11<br />

6.5.1 Allgemein ........................................................................................................................................................ 11<br />

6.5.2 Input/Output-Controller ................................................................................................................................... 11<br />

7 Referenzen ................................................................................................................................................................... 12<br />

- 3 -


1 Motivation<br />

Bei der Entwicklung komplexer Systeme, die über viele Jahre im Einsatz sind und gepflegt werden müssen, liegt das<br />

Know-How – auch im Embedded-Bereich – mehr und mehr in der Applikationssoftware. Die darunterliegende Hardware<br />

wird von Generation zu Generation leistungsfähiger und kostengünstiger. Damit die Anwendungen nicht für jede Hardware-Generation<br />

neu angepasst werden müssen, sind geeignete Abstraktionskonzepte notwendig. Bei Neuentwicklung<br />

von Systemen kann durch Standardkomponenten auf Software-Seite, unterstützt durch Werkzeuge, Entwicklungszeit<br />

und damit Kosten gespart werden. Darüber hinaus erhält man bessere Qualität durch Wiederverwendung getesteter<br />

Komponenten. Um Standardkomponenten in der Breite einsetzen zu können, müssen sie gegen einen Hardwareunabhängigen<br />

Abstraktionslayer entwickelt werden, der auf aktuelle und zukünftige Hardware-Plattformen anpassbar ist.<br />

2 Wer braucht Abstraktion?<br />

Betrachtet man ein System aus dem Blickwinkel der beteiligten Software-Entwickler (Abbildung 1) haben wir auf unterster<br />

Ebene die System-Entwicklung. Diese beinhaltet Betriebssystem, Treiber und Basisdienste wie Persistenz, Diagnose,<br />

Logging, Tracing, Debugging-Support, Software-Updates, usw.. Auf dieser Ebene wird typerscherweise in C, seltener<br />

in C++, programmiert. Die Implementierungen sind in Teilen hardwareabhängig. Der Systemlayer stellt die unterste<br />

Ebene der Abstraktion dar (einmal abgesehen davon, dass wir einen Compiler verwenden…). Typische Schnittstellen<br />

sind die System-API des Betriebsysstems mit systemnahen Bibliotheken (Win32, POSIX) sowie nicht selten proprietäre<br />

Schnittstellen für domänenspezifische Basisdienste.<br />

Der nächste Layer implementiert die Produkt-Software bzw. die Software-Plattform, je nachdem in welcher Domäne<br />

wir uns befinden und ob es um Produkt- oder Lösungsgeschäft geht. In der Industrie-Automatisierung wäre hier z.B. die<br />

SIMATIC S7 Firmware angesiedelt, im Lösungsgeschäft eher eine Software-Plattform, die applikationsübergreifend<br />

notwendige Komponenten implementiert, wie z.B. eine generische Business-Logik, ein HMI-Framework, ein Bilderkennungsframework<br />

mit den entsprechenden Algorithmen, usw..<br />

Den Applikationslayer implementieren OEMs, Maschinenbauer und teilweise auch Endkunden. Im Lösungsgeschäft ist<br />

das die Kundenspezifische Software. Im Produktgeschäft enthält der Applikationslayer die Ausprägungen verschiedener<br />

Produkte einer Produktlinie.<br />

Darüber finden sich aus Entwicklersicht weitere Abstraktionslayer, die in der Software-Architektur allerdings vorwiegend<br />

im Rahmen des Produkt-Software / Plattform Layers implementiert sein sollten. Zum einen kann das eine Schnittstelle<br />

zur Erweiterung um einzelne Komponenten (Plug-Ins, Skripts) sein, zum anderen werden generische Komponenten<br />

applikationsspezifisch parametrisiert.<br />

Parametrisierung<br />

Erweiterungen<br />

(Plug-Ins, Skripts)<br />

Applikationen<br />

Produkt / Software-Plattform<br />

(Firmware+Standardapps.)<br />

System<br />

(OS, Hardwareanbindung)<br />

- 4 -<br />

Komponentenentwickler,<br />

Zulieferer<br />

Abbildung 1: Systemsichten<br />

OEM<br />

Endanwender


3 Was wird abstrahiert?<br />

Entwickler auf jedem der genannten Layer erwarten ein anderes Abstraktionsniveau. In den unteren Schichten ist es<br />

noch relativ einfach. Der Systementwickler kennt noch die HW/SW-Schnittstelle der Hardware. Der Produkt- und Plattformentwickler<br />

arbeitet gegen die bekannten Betriebssystem-APIs, kennt aber noch die Struktur der darunterliegenden<br />

Hardware: mit welchen Geräten kommuniziere ich, über welche Netzwerke/Busse, welche Speichermedien habe ich zur<br />

Verfügung, usw..<br />

Interessant wird es an der Schnittstelle zur Applikation. Wie kann ich dem Applikationsentwicker eine genaue Kenntnis<br />

der Hardware ersparen. Und genau hier setzten viele Abstraktionslayer an.<br />

Anknüpfend an [1] könnte man die Schnittstelle der Applikation nach unten aus Sicht der Modellierung als Schnittstelle<br />

zwischen Technical Layer und Logical Layer sehen (Abbildung 2). Allerdings lassen sich die anderen Layer nicht 1:1<br />

zuordnen. Der Functional Layer ist eine Black-Box-Sicht auf das System und hilft bei der Modellierung der Applikation<br />

sowie bei der Erstellung der Tests. Functional Layer und Logical Layer können somit bei der Modellierung aller Layer –<br />

außer vielleicht der Parametrisierung – zum Einsatz kommen.<br />

Abbildung 2: Abstraktionslayer aus [1].<br />

Bleiben wir bei der Schnittstelle Plattform/Applikation. Der Abstraktionsentwickler wünscht sich eine Abstraktion der<br />

folgenden Themen, d.h. er möchte sich nach Möglichkeit nicht beschäftigen mit:<br />

Persistenz:<br />

was wird wo gespeichert.<br />

Wie erfolgt die Kommunikation zwischen Applikation und Abstractionlayer (serialisiert oder objektrelational)<br />

I/O:<br />

über welche Hardware-Schnittstellen ist I/O realisiert.<br />

Netzwerk:<br />

über welche Netzwerke sind Systemkomponenten gekoppelt.<br />

Parallele Hardware:<br />

Verteilung der Ausführung über mehrere CPUs oder mehrere Prozessor-Kerne.<br />

Datenformat:<br />

Marshalling zw. versch. Datentypen; Endianess, …<br />

Betriebssystem Abstraktion Versionierung<br />

5


4 Wie wird Abstrahiert?<br />

4.1 Datenzentrisches Modell<br />

Das datenzentrische Modell entspricht einem Abstraction Layer, der sich zwischen der Anwendung und der darunter<br />

Hardware befindet.<br />

Damit entspricht es in etwa dem Interface zwischen dem logical- und technical Layer. Zur Applikation hin werden folgende<br />

Funktionen abstrahiert.<br />

- Prozessvariablen mit entsprechenden Zugriffsrechten im lokalen System<br />

- Prozessvariablen verteilt in einem Multicore- Multiprozessing und vernetzten Betrieb<br />

- I/O Funktionen über lokale I/O Karten und Feldbusse<br />

- Betriebssystem Funktionen<br />

All diese Funktionen werden über einheitliche Methoden erreichbar:<br />

- Zugriffsfunktionen auf Prozessvariablen<br />

- Message Kommunikation über Ports<br />

- Synchronisationsmechanismen<br />

- Subscribe Funktionen (Signale, Semaphoren)<br />

Unterstützt wird die Applikationsentwicklung durch eine Simulationsschnittstelle, und Datenlogging. Sie dient bereits<br />

einigen Testsystem Umgebungen als Basis Schnittstelle.<br />

Anwendung findet Gamma vorwiegend im Echtzeit Umfeld. Damit eignet sich die Software für Leistungsfähige Automatisierungsaufgaben<br />

auch im sicherheitskritischen Umfeld.<br />

4.2 Logische Pfade<br />

Ressourcenzugriff über URLs: Dateien, Netzwerke, etc.<br />

Über eine separate Konfiguration (z.B. Konfigurationsdateien oder explizite Anmeldung einzelner Komponenten) werden<br />

die logischen Pfade auf physikalische abgebildet.<br />

Beispiele:<br />

POSIX<br />

J2ME Generic Connection Framework<br />

Persistenzmechanismen mit Baumstruktur bei den Teilbäume an verschiedenen Stellen abgelegt werden<br />

(z.B. eine Registry mit Teilbereichen in RAM, NAND Flash, oder NOR Flash)<br />

4.3 Service-orientierte Ansätze<br />

Kapselung von Funktionalität in Diensten. Dienste werden nicht absolut adressiert, sondern anhand ihrer Eigenschaften<br />

bei einer Service-Registry angefragt, die dann eine direkte Referenz auf den konkreten Dienst zurückgibt.<br />

Abstrahiert wird hier …<br />

Beispiele:<br />

Web-Services<br />

UPnP<br />

CORBA<br />

Epics<br />

6


5 Vorteile dieser Herangehensweise<br />

5.1 Wiederverwendbarkeit der Komponenten innerhalb des Abstraktion Layers (Blick von<br />

unten)<br />

Bei einer konsequenten Umsetzung der gesamten Applikation mit Hilfe eines Abstraction layers befinden sich im<br />

technical Layer keine applikationsspezifischen Software Funktionen mehr. Damit wird dieser Layer universal für<br />

unterschiedlichste Anwendungen wieder verwertbar.<br />

5.2 Plattform Unabhängigkeit der Applikation (Blick von Oben)<br />

Die Abstraktionsschicht reduziert Aufrufe an den technical Layer mit einheitlichen Funktionen, die sich nicht mehr<br />

auf die Hardware Gegebenheiten abstützen müssen. Die Applikation reduziert sich auf den reinen logischen<br />

Code. Dies bietet folgende Vorteile:<br />

- Der Code wird wesentlich einfacher und damit verständlicher, kürzer und billiger<br />

- Die Portierung auf neue Hardware kann ohne Änderungen erfolgen<br />

- Die Anforderungen an das Know How des Entwicklers reduziert sich dramatisch<br />

5.3 Verwendung von Domänenspezifischen Werkzeugen auf einer Abstraktionsschicht<br />

Gerade bei Modellbasierter Entwicklung war es notwendig die Abstraktionsschicht manuell in das Tool zu implementieren.<br />

Dies kann jetzt entfallen. Durch die Verwendung von Application Layern wird die modellbasierte Entwicklung<br />

durchgängig.<br />

Geht man noch einen Schritt weiter und passt domänenübergreifend die Werkzeuge auf den Abstraction Layer<br />

an. So können unterschiedlichste Werkzeuge (Applikationsentwicklung und Test) ohne spezifische Anpassung<br />

auf einer Hardware arbeiten ohne sich zu behindern, Einheitliche Tools wären dann nicht mehr nötig. Je nach Anforderung<br />

werden die Tools kombiniert. Damit wäre das vorrangige Entwicklungsziel von <strong>SPES</strong><strong>2020</strong> erfüllt.<br />

6 Beispiele<br />

In diesem Abschnitt werden beispielhaft einige konkrete Implementierung von Abstraktionslayern gelistet. Die Aufzählung<br />

erhebt (in dieser Fassung des Dokuments) keinen Anspruch auf Vollständigkeit und stellt eine erste Sammlung dar,<br />

auf deren Basis zu einem späteren Zeitpunkt ein detaillierter Vergleich folgen soll.<br />

6.1 GAMMA<br />

6.1.1 Allgemein<br />

GAMMA ist ein Framework der RST-Automation GmbH, das es ermöglicht, plattformübergreifende Applikationen für<br />

Test- und Steuersysteme in einer Entwicklungsumgebung zu erstellen und auf verschiedensten Zielsystemen – auch<br />

über Architekturgrenzen hinweg – einzusetzen. Im Gegensatz zu allen anderen Methoden erfolgt bei Gamma nur teilweise<br />

die Kommunikation über eine Client Server Architektur. Dadurch ist die Software extrem schnell (


Betriebssystem<br />

Simulation von Variablen<br />

Logging<br />

6.1.2.1 Das Datenmodell<br />

Im Zentrum der Betrachtung steht das datenzentrische Modell. Es ist hierarchisch organisiert und verfügt über eine<br />

symbolische Adressierungsmethode. Die Variable selbst kann mit verschiedenen Methoden angesprochen werden und<br />

verfügt über konfigurierbare Eigenschaften:<br />

- Unterschiedliche Datentypen<br />

- Grenzbetrachtung<br />

- Simulation<br />

- Logging<br />

6.1.2.2 I/O<br />

- Verlinkung mit Hardware<br />

- Metadaten (Beschreibungstexte)<br />

- Versionierung<br />

Bereits vorgefertigte Hardware kann grafische zusammengesteckt und verlinkt werden. Fehlende Hardware wird einfach<br />

über die Hardware Integrationsschnittstelle erweitert. I/O Bibliotheken können einfach Firmenübergreifend gemeinsam<br />

verwendet werden. Durch die Verlinkung mit einer Variable erhält diese die zusätzliche Hardware Funktionalität. Dies<br />

ermöglicht den Aufbau von Bibliotheken, die Firmenübergreifend genutzt werden können.<br />

6.1.2.2.1 Betriebssystem Abstraktion<br />

Zur Vereinheitlichung der Software können (nicht müssen) die wichtigsten Funktionen der jeweiligen Betriebssysteme<br />

abstrahiert werden. Das erleichtert die Software Pflege in heterogenen Rechner Architekturen.<br />

6.1.2.3 Multitasking, Multiprozessing, Vernetzung<br />

Datenmodelle können so gebaut werden, dass für die Applikation eine einheitliche Zugriffsmethodik entsteht. Das Datenmodell<br />

wählt intern je nach Hardware Struktur die optimale Zugriffsmethode. Multiprozessing, Multicore, Vernetzte<br />

Systeme mit unterschiedlichen Betriebssystemen werden dabei berücksichtigt.<br />

6.1.2.4 Applikationsentwicklung und Test<br />

Gamma eignet sich hervorragend für Applikationsentwicklung und Test. Damit wird es möglich eine Applikation, die mit<br />

einem beliebigen Werkzeug erstellt wurde, durch ein anderes Werkzeug zu testen. Austauschformate entfallen. Tests<br />

können im laufenden Betrieb statt finden.<br />

8


6.2 ACE<br />

ACE besitzt eine Client Server Architektur. Das bietet hohe Sicherheit aber relativ langsame Reaktionszeiten.<br />

ACE bietet folgende APIs (siehe auch Abbildung 3):<br />

OS Adaption Layer<br />

Nebenläufigkeit und Synchronisation<br />

Interprozess Kommunikation, Shared Memory<br />

Synchrone und Asynchrone Ereignis Handler<br />

Dateisystem Zugriffe<br />

OS Adaption Layer<br />

C++ Wrapper Fassaden<br />

Framework zu Netzwerkprogrammierung<br />

Distributed Services and Components<br />

Higher-level Distributed Computing Middleware Components<br />

9


6.3 Corba<br />

Abbildung 3 – ACE Schlüsselkomponenten<br />

Laut Wikipedia ist Corba ist ein relativ abstraktes Konzept, was den intuitiven Zugang erschwert. Das Konzept selbst ist<br />

innovativ und hat großes Potential. Von den konzipierten Methoden wurde leider nur wenig umgesetzt. Deshalb bleibt<br />

man häufig an die Programmiersprachen Java und C# gebunden. Ebenso wie ACE und ICE funktioniert Corba nur über<br />

ein Client Server Modell, was die Zugriffsgeschwindigkeit erheblich reduziert. Die Reaktionszeiten von Zugriffsmethoden<br />

bewegen sich im Bereich von mehr als 200µs.<br />

Corba abstrahiert:<br />

Betriebsystem<br />

Programmiersprache (der Kommunikationspartner)<br />

Deployment, Verteilung der Komponenten auf verschiedenen Knoten<br />

Typische Latency Zeiten sind bei Corba etwa bei 25µs für lokale Kommunikation und etwa 1 µs bei Kommunikation über<br />

TCP/IP.<br />

6.4 ICE<br />

Neuentwicklung auf Basis der Erfahrungen mit CORBA. Heraus stechende Unterschiede sind geringere Komplexität,<br />

bessere Performance (etwa Faktor 2 gegenüber Corba), Durch die Client Server Architektur ist das System sehr sicher.<br />

Im Gegensatz zu Corba unterstützt das Framework auch Versionierung.<br />

10


6.5 Epics<br />

6.5.1 Allgemein<br />

EPICS (für Experimental Physics and Industrial Control System) ist eine Softwareumgebung, um verteilte Kontrollsysteme<br />

für Großexperimente wie Teilchenbeschleuniger oder Teleskope zu entwickeln und zu realisieren.<br />

EPICS verwendet Client-Server- und Publish-Subscribe-Methoden für die Kommunikation zwischen den verschiedenen<br />

verwendeten Computern. Eine Sorte von Computern, die Input/Output-Controller (IOC), sammelt dabei in Echtzeit über<br />

die angeschlossenen Messinstrumente Experiment- und Kontrolldaten. Über ein spezielles Netzwerkprotokoll namens<br />

Channel Access (CA) werden diese Informationen an eine weitere Rechnersorte, die Clients, weitergegeben. CA unterstützt<br />

dabei weiche Echtzeit-Anforderungen, wie sie in wissenschaftlichen Experimenten anfallen.<br />

6.5.2 Input/Output-Controller<br />

Bei den IOCs handelt es sich entweder um handelsübliche PC‘s oder Standard-VME-Prozessoren, die bestimmte Module<br />

(etwa GPIB oder RS232) verwalten, die wiederum mit Kontrollsystem-Instrumenten (Oszilloskope, Netzwerkanalysatoren)<br />

und -Geräten (Motoren, Thermoelemente, Schalter und so weiter) in Verbindung stehen.<br />

Auf dem IOC läuft eine Datenbank mit Records, die entweder Geräte oder Eigenschaften der zu steuernden Geräte<br />

repräsentieren. IOC-Software für harte Echtzeitbedingungen verwendet normalerweise RTEMS oder VxWorks, wenngleich<br />

an einer Portierung auf weitere Systeme gearbeitet wird. IOC-Software für weiche Echtzeitbedingungen läuft<br />

manchmal auf Linux- oder Windows-Systemen.<br />

Weitere Rechner im Netzwerk können mit den IOC über das Konzept der Channels kommunizieren. Als Beispiel diene<br />

ein Teilchenbeschleuniger mit Ventilen zwischen einzelnen Abschnitten. Zu einem Ventil gäbe es typischerweise mehrere<br />

Channels: Einen Ausgabe-Channel, um das Ventil ferngesteuert zu öffnen oder zu schließen; einen Eingabe-<br />

Channel, um den Zustand des Ventils abzufragen (z. B. geschlossen, offen, in Bewegung); und vielleicht weitere analoge<br />

Eingabe-Channels, die Druck und Temperatur auf jeder Seite des Ventils repräsentieren.<br />

Häufig wird auf den Clients ein GUI-Paket wie EDM (Editor/Display Manager) oder MEDM (Motif EDM) eingesetzt. Diese<br />

ermöglichen die Erzeugung und Verwendung von Skalen, Zeigern, Textboxen, einfachen Animationen usw.<br />

11


7 Referenzen<br />

1. Feilkas et al. 2009<br />

Martin Feilkas, Alexander Harhurin, Judith Hartmann, Daniel Ratui und Wolfgang Schweizer. Abstraction Layers –<br />

Motivation and Introduction of a System of Abstraction Layers for Embedded Systems. TU München im Rahmen von<br />

<strong>SPES</strong> <strong>2020</strong>, 2009, Wikipedia<br />

12

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!