events

DESIGN&ELEKTRONIK-Entwicklerforum HMI – Komponenten & Lösungen
DESIGN&ELEKTRONIK-Entwicklerforum HMI – Komponenten & Lösungen

Am 24. Mai 2012 findet das DESIGN&ELEKTRONIK-Entwicklerforum »HMI – Komponenten & Lösungen« mit begleitender Fachausstellung statt. Die Themen: »Bedienen und Beobachten: Technik, Know-how und Tools für das Design moderner Benutzerschnittstellen«.

Melden Sie sich jetzt an…

DESIGN&ELEKTRONIK-Entwicklerforum »Embedded-System-Entwicklung«
DESIGN&ELEKTRONIK-Entwicklerforum »Embedded-System-Entwicklung«

Auch in diesem Jahr veranstaltet die DESIGN&ELEKTRONIK wieder das Entwicklerforum »Embedded-System-Entwicklung« am 11. und 12. Juli 2012 in München. Neben einem technisch anspruchsvollen Vortragsprogramm ermöglichen verschiedene Workshops den Teilnehmern einen differenzierten Einblick in die Thematik.

Ausführliche Informationen:
www.embedded-entwicklerforum.de

Produkte des Jahres 2012

Linux /ARM

Linux: Embedded für alle
Linux: Embedded für alle

Linux ist heute erste Wahl geworden, wenn es um die Entscheidung für ein Betriebssystem in einem leistungsfähigen Embedded-System geht. Wie kann es sein, dass eine Open-Source-Software gerade bei Embedded-Systemen so erfolgreich ist?

Konferenz für ARM-Systementwicklung
Konferenz für ARM-Systementwicklung

Die große Konferenz für ARM-Systementwicklung am 11. und 12. Juli 2012 in München bietet Entwicklern die Gelegenheit, sich detailliertes Wissen über die aktuellen Cortex-Architekturen anzueignen, die mittlerweile zum Industriestandard avanciert sind.

Ausführliche Informationen:
www.arm-entwicklerkonferenz.de

embedded world Technology Report

Android & Embedded
embedded world Technology Report

Welche Embedded-Trends zeichnen sich ab? Im »embedded world Technology Report« gibt ein unabhängiger Expertenrat einen exklusiven Einblick in aktuelle Entwicklungen und zukünftige Trends im Embedded-Bereich.

Interessiert? Hier geht es zum kostenlosen Download

embedded world special

embedded world 2012
embedded world 2012

Wir haben aktuell von der weltgrößten Messe für die Embedded-Branche mit News, Videobeiträgen und Produktneuheiten berichtet.

Windows Embedded Standard 7

Windows Embedded Standard 7
Windows Embedded Standard 7

Was ist neu in Windows Embedded Standard 7? Lesen Sie alles rund um das neue Microsoft-Embedded-Betriebssystem Embedded Standard 7 in unserem Spezial.


Windows 7 - Special zum Download

Windows 7 -Special zum Download
Windows 7 -Special zum Download

20 Seiten Fachwissen – Das Windows-Embedded-Special als PDF-Download.


Marktübersichten Embedded

Marktübersichten aus dem Bereich Embedded

Software im sicherheitskritischen Bereich

Entwicklungssoftware
Entwicklungssoftware

Um die »Worst-Case Execution Time« zu erhalten, gibt es verschiedene Herangehensweisen – bequeme und weniger bequeme.


28. Oktober 2010
Virtualisierung

Die gedachten Maschinen

Konsolidierung von Baggersteuerung auf einer Hardware durch Virtualisierung mit PikeOS.

Bild 1. Konsolidierung von Baggersteuerung und Fahrerassistenzsystemen auf einer Hardware durch Virtualisierung mit PikeOS.

Mit der Aufteilung einer leistungsfähigen physikalischen Maschine in mehrere virtuelle Maschinen lässt sich die Komplexität der Software reduzieren. Nebenbei wird auch noch die Auslastung der Ressourcen effizienter verteilt. Diese Effekte, die in Rechenzentren schon seit Jahren genutzt werden, sind auch für Embedded-Systeme immer wichtiger.

Von Prof. Dr. Robert Kaiser

Anzeige

Heute verfügt jedes durchschnittliche Mobiltelefon über eine Rechenleistung, die noch vor wenigen Jahren einer Workstation Ehre gemacht hätte. Mit dieser generellen Leistungssteigerung eingebetteter Systeme geht ein Anstieg der Software- Komplexität einher: Anwendungen, die das Potential aktueller Plattformen auszunutzen vermögen, sind nicht mehr vergleichbar mit den kompakten, überschaubaren Programmen, für die die klassischen Embedded-Betriebssysteme einst konzipiert wurden. Sie bestehen häufig aus verschiedenen Komponenten, die – mehr oder weniger unabhängig voneinander – verschiedene Teilaspekte der zu erbringenden Gesamtfunktionen realisieren.

Wenn diese Teilsysteme von verschiedenen Anbietern stammen und mit unterschiedlichen Betriebssystemen arbeiten, muss die System-Software für eingebettete Systeme gleichzeitig diese Betriebssysteme anbieten können. Eine effiziente Kommunikation über Teilsystemgrenzen hinweg ist dabei für die Anwendungen ebenso wichtig wie das sichere Unterbinden von unkontrollierten Wechselwirkungen über dieselben Teilsystemgrenzen.

Diese Problemlage ist ähnlich der, die im Bereich der Serverkonsolidierung mit Hilfe der Virtualisierung gelöst werden konnte. Nun steht also eine Konsolidierung eingebetteter Systeme an (Bild 1). Es erscheint logisch, auch hier die Virtualisierung als Lösungsweg ins Auge zu fassen. Zuvor ist jedoch zu prüfen, ob und inwieweit Virtualisierung mit den übrigen Anforderungen eingebetteter Systeme vereinbar ist.

Virtualisierung bezeichnet allgemein die Bereitstellung eines Modells eines Rechners in Form eines Programms. Ein solches Modell zeigt definitionsgemäß das gleiche Verhalten wie der von ihm nachgebildete Rechner. Auf diesem Rechner ausgeführte Programme können – abgesehen vom Zeitverhalten – keinen Unterschied zwischen Modell und realer Maschine feststellen.

Emuliert oder nativ?

Klassifikation verschiedener Virtualisierungsansätze
Sysgo 
zoom
Bild 2. Klassifikation verschiedener Virtualisierungsansätze. Wenn reale und nachgebildete Maschine den gleichen Befehlssatz haben, spricht man von nativer Virtualisierung, ansonsten von Emulation.

Das wahrscheinlich bekannteste Beispiel eines solchen Modells ist eine „Java Virtual Machine“ (JVM), die eine hypothetische Rechnerarchitektur emuliert. Analog dazu lässt sich aber auch eine real existierende Rechnerarchitektur durch Emulation nachbilden.

Ein Beispiel hierfür ist „bochs“, ein Programm, das einen PC so detailgenau nachbildet, dass darin nahezu alle PC-Betriebssysteme und -Anwendungen direkt ausgeführt werden können [1]. Eine solche Emulation (Bild 2) kann auf einem beliebigen Wirtsrechner eine beliebige (andere) Rechnerarchitektur bereitstellen, sie erfordert allerdings das relativ aufwendige Interpretieren einzelner Maschinenbefehle.

Verfügt der nachzubildende Rechner über denselben Befehlssatz wie der Wirtsrechner, so können die meisten Maschinenbefehle ebenso gut auch direkt „in Hardware“ ausgeführt werden. Nur einige wenige, so genannte „sensitive“ Befehle müssen bei dieser nativen Virtualisierung weiterhin emuliert werden. Abfangen und Emulieren dieser Befehle geschehen durch einen Hypervisor: Jeder Versuch eines Programms, einen sensitiven Befehl direkt auszuführen, bewirkt eine Ausnahmebedingung (Trap), die den als Trap-Handler arbeitenden Hypervisor aufruft. Für das ausgeführte Programm ist dieser Vorgang transparent. Unter der Voraussetzung, dass sensitive Befehle hinreichend selten vorkommen, erreicht diese, als „Vollvirtualisierung“ bezeichnete Methode annähernd die gleiche Leistung wie ein realer Rechner.

Für die Vollvirtualisierung muss die zugrunde liegende Rechnerarchitektur gewisse Eigenschaften aufweisen (vgl. [2]). Insbesondere müssen alle sensitiven Befehle zugleich privilegiert sein, damit sie durch Traps abzufangen sind. Da dies jedoch bei einigen Rechnerarchitekturen nicht der Fall ist, wurde die Methode der Paravirtualisierung entwickelt. Hierbei wird in Kauf genommen, dass der im privilegierten Modus auszuführende Programmcode, also in der Regel der Betriebssystemkern, für die Virtualisierung modifiziert werden muss. Anwenderprogramme können hingegen unverändert bleiben. Alle im Betriebssystemkern enthaltenen sensitiven Befehle werden durch explizite Systemaufrufe in den Hypervisor (so genannte Hypercalls) ersetzt. Dies kann erfolgen entweder

manuell auf Quellcode-Ebene oder
toolgestützt durch spezielle Compiler (engl.: pre-virtualization) oder
dynamisch zur Laufzeit.

In den ersten beiden Fällen muss dazu der Quellcode des Betriebssystems vorliegen, im dritten Fall ist das nicht erforderlich, jedoch bedingt diese „Just-in-time“-Paravirtualisierung einen zusätzlichen Laufzeitaufwand.