PreonVM – JavaVM für eingebettete Systeme2019-11-06T10:55:15+01:00

Projekt Beschreibung

PreonVM – Java VM für eingebettete Systeme

  • Anwendungen in Java™ programmierbar

  • Alle Java Datentypen inkl. long und double

  • Unbegrenzte Anzahl von Threads

  • Synchronisierung von Threads (synchronized)

  • Garbage Collection mit Speicherdefragmentierung

  • Exception-Behandlung für mehr Sicherheit

  • Große Klassenbibliothek inkl. vieler Treiber

  • System-Properties zur Konfigurierung von Anwendungen

  • Event System zur Behandlung von synchronen und asynchronen Events

  • Laufzeitbibliothek (Core, Utilities, Collections, IO, …)

  • Treiber für Funk-Transceiver nach IEEE 802.15.4

  • Treiber für Zugriff auf Flash oder FRAM Datenspeicher

  • Treiber für Datenerfassung (ADC, DAC,…)

  • Treiber für Bussysteme (I2C, SPI, USART, …)

  • Treiber für Timer und PWM

  • Treiber für weitere Peripherie (IRQ, RTC, GPIO, WatchDog, LED, Button, …)

  • Routing API (AODV, 6LowPan, …)

  • Treiber für verschiedene Sensoren und Geräte (SHT21, ADT7410, BH1710FVC, ITG3200, …)

Beschreibung

Die PreonVM ist eine virtuelle Maschine (VM) von VIRTENIO für den Einsatz in eingebetteten Systemen mit sehr geringen Ressourcen wie dem Funkmodul Preon32von VIRTENIO. Die virtuelle Maschine ist hoch optimiert, benötigt kein zusätzliches Betriebssystem und wird direkt auf dem verwendeten Mikrocontroller betrieben. Der Ansatz sieht vor, dass Anwendungen in Java™über einen Transformationsprozess für das Funkmodul Preon32 nutzbar werden. Im diesem Zusammenhang bietet VIRTENIO entsprechende Software-Bibliotheken für verschiedene Schnittstellen an. Damit wird die Programmierung von Anwendungen, die Sensordaten erfassen und Aktorensteuern,elegant möglich. Darüber hinaus sind die Funkschnittstelle für IEEE802.15.4 und eine AES-Verschlüsselung in Hardware als innovative Bestandteile genannt, die in der virtuellen Maschine einfach nutzbar sind

Vorteile der PreonVM

Eingebettete Systeme mit minimalen Ressourcen wurden bisher in speziellen und wenig komfortablen Sprachen programmiert. Komplexe Anwendungen sind deshalbzeitaufwendig und mit einem hohen Fehlerpotential umzusetzen. Der Ansatz von VIRTENIObringt den Komfort, die Sprachkomplexität und die Sicherheit einer virtuellen Maschine in Kombination mit einer objektorientierten Programmiersprache in die Welt der eingebetteten Systeme. Aktuell bietet VIRTENIO für sein Funkmodul Preon32 für drahtlose Netzwerke nach IEEE 802.15.4 die virtuelle Maschine als innovative Betriebssoftware an.

Durch die Verwendung einer virtuellen Maschine wird das Anwendungsprogramm für das Funkmodul unabhängig von der tatsächlich verwendeten Architektur. Das hat den Vorteil, dass Anwendungsprogramme unverändert und ohne einen manuellen Anpassungsprozess ausgeführt werden können, auch wenn bspw. der Prozessor oder Funktransceiver durch einen anderen Typ ausgetauscht werden.

Gleichzeitig werden der Entwicklungsprozess der Hardware und des Anwendungsprogramms entkoppelt. Das Anwendungsprogramm wird gegen eine virtuelle Architektur mit entsprechenden Schnittstellen entwickelt, die über die Zeit unverändert bleibt.

Zudem wurde die virtuelle Maschine derart optimiert, dass Anwendungen auf einem 8/32-Bit-Mikrocontroller ab 8 KByte RAM und ab 128 KBtye Flash performant ausgeführt werden können. Die komplette virtuelle Maschine mit Anbindung der Peripherie wie dem Funk-Transceiver nach IEEE 802.15.4 hat daher einen Speicherplatzbedarf von weniger als 60KByte Flash.

ClassLinker zum linken von Java Klassen

Auf den drahtlosen Sensorknoten vom Typ „Preon32” wird die von Virtenio entwickelte virtuelle Maschine als Betriebssoftware eingesetzt. Mit dieser Betriebssoftware ist es möglich, dass Anwendungen, die als Quellcode in Java™ geschrieben sind, auf dem Preon32 genutzt werden können, nachdem Sie den folgenden Transformationsprozess durchlaufen haben.

Zunächst müssen alle Bestandteile der Anwendung im einfachsten Fall als Java™-Quellcode oder auch Jar-Archiven vorliegen. Dann werden Sie vom Java™-Compiler in Java™-Byte-Code übersetzt, der für jede Klasse eine Datei mit dem Klassennamen und der Dateiendung „.class“ erzeugt. Die Java™-Class-Dateien enthalten die Methoden der Klasse und viele zusätzliche Informationen, die jedoch auch einen zusätzlichen Speicherplatz belegen. Dieser ist im drahtlosen Sensorknoten nur sehr begrenzt verfügbar. Aus diesem Grund erfolgt als nächster notwendiger Schritt eine Informationsreduzierung und Bündelung von Java™-Class-Dateien mittels des VIRTENIO ClassLinkers zu einer einzigen Datei mit der Endung *.vmm. Diese enthält alle Informationen, die zur Programmausführung auf der virtuellen Maschine im Sensorknoten benötigt werden. Die Dateigröße der „prog.vmm” ist durch entsprechende Verfahren deutlich geringer als die Summe der einzelnen Java-Class-Dateien. Die „prog.vmm” kann mit dem NodeTool auf den Sensorknoten geladen und dort ausgeführt werden.

Bibliotheken

Um dem Entwickler für komplexe Anwendungen in verteilten eingebetteten Systemen wie drahtlose Netzwerken einen idealen Ausgangspunkt zu bieten, wurde die virtuelle Maschine durch viele Softwarekomponenten ergänzt. Mit dieser Voraussetzung können Anwendungen wie aus einem Baukasten schnell zusammengesetzt werden. Eigene Softwareteile aus vorhandenen Java™-Anwendungen für den Desktop können so ohne Anpassung der Quelldaten integriert werden. Mit den gewohnten Entwicklungswerkzeugen für Java™ können nun Anwendungen für drahtlose Sensornetzwerke umgesetzt werden.

Technische Daten

Unterstützung für Anwendungen (Auszug)
Basistypen char, byte, short, int, long, float, double
Strukturen Arrays, ArrayList, Collection, Hashtable, Set, Vector
Streams Input, Output
Exceptions try, catch, Exception, RuntimeException
StringBuffer / StringBuilder Ja / Ja
Thread Ja, unbegrenzt in der Anzahl
Sprachkonstrukt synchronized Ja
System-Properties Ja
Unterstützung für Funkmodul Preon32 (interne Ressourcen)
CPU-Power-Modes Ja, (Active, Idle, Sleep, Shutdown)
CPU-WatchDog Ja
CPU-IRQs Ja
CPU-RTC Ja
CPU-Timer Ja
CPU-FLASH Ja
CPU-BACKUP-Register Ja
CPU-ADC Ja, 2 × 12-Bit, 1 MSPS, 16 Kanäle
CPU-DAC Ja, 2 × 12-Bit
CPU-I2C Ja, 1x Kanal bis 400 kBit/s
CPU-SPI Ja, 3x Kanäle bis 18 Mbit/s
CPU-USART Ja, 3x Kanäle synch./asynch. bis 4.5 Mbit/s
CPU-PWM Ja
CPU-CAN Ja
Unterstützung für Funkmodul Preon32 (externe Ressourcen)
Serial Flash über SPI Ja, read/write/erase, block mode
Funkchip über SPI Ja, IEEE 802.15.4, Datenraten 256 KBit/s bis 2 MBit/s,
Frames: Data, Beacon, Command
AES-Verschlüsselung in Hardware Ja, 128-Bit EBC/CBC
Software-Unterstützung für Evaluationsmodul „Preon32 Shuttle“
Auslesen des Tasters (Benutzer) Ja
Ansteuerung der LEDs Ja, (grün, gelb, rot, amber)
RS232 über USB Ja, bis 931.6 KBaud zum PC
Software-Unterstützung für Sensor-Modul „VariSen“
Treiber für Sensor „Temperatur“ Ja
Treiber für Sensor „Beleuchtungsstärke“ Ja
Treiber für Sensor „Luftfeuchtigkeit“ Ja
Treiber für Sensor „Magnetfeld“ Ja
Treiber für Sensor „Luftdruck“ Ja
Treiber für Sensor „Beschleunigung“ Ja
Treiber für Sensor „Rotationsgeschwindigkeit“ Ja

Codebeispiele

Codebeispiel: Kompression und Dekompression per GZIP

In diesem Beispiel wird ein Datenblock mit einer Länge von 1024 Byte komprimiert. Für die Kompression der Textnachricht (Lorem_ipsum_1024) wird der Gzip-Algorithmus aus der im Internet verfügbaren Bibliothek "compress_j2me" verwendet. Diese Bibliothek wurde ursprünglich für Mobiltelefone mit Java ME [...]

März 2nd, 2017|

Codebeispiel: Extrahieren von Sensordaten aus XML

In diesem Beispiel für die PreonVM werden auf dem Funkmodul Preon32 gespeicherte Messdaten, die in einer XML-Beschreibung (eXtensible Markup Language) vorliegen, ausgewertet. Die Umsetzung zeigt die Leistungsfähigkeit des Funkmoduls Preon32. Für das Parsen der XML-Beschreibung wird die im Internet verfügbare [...]

März 2nd, 2017|

Codebeispiel: Transformation von Sensordaten nach XML

In diesem Beispiel für die PreonVM werden auf dem Funkmodul Preon32 eingelesene Meßdaten der Sensor-Erweiterung VariSen in eine XML-Beschreibung (eXtensible Markup Language) transformiert. Die Umsetzung zeigt die Leistungsfähigkeit des Funkmoduls Preon32. Für die Erzeugung der XML-Beschreibung wird die im [...]

März 2nd, 2017|

Codebeispiel: AES Verschlüsselung des AT86RF231 nutzen

Eine verschlüsselte Datenübertragung ist bei drahtloser Kommunikation von besonderer Bedeutung. Mit einer Verschlüsselung kann ein unberechtigtes Abhören der Funkschnittstelle und Auswerten der Daten verhindert werden. Ein für die höchste Geheimhaltungsstufe zugelassenes Verfahren ist der Advanced Encryption Standard (AES). Der [...]

März 2nd, 2017|

Codebeispiel: Daten per IEEE 802.15.4 empfangen

Das Funkmodul Preon32 setzt einen 2.4 GHz Transceiver ein, um Daten im Rahmenformat IEEE 802.15.4 zu senden und zu empfangen. Dieses Rahmenformat ermöglicht die Umsetzung von höheren Protokollschichten wie Zigbee oder 6loWPAN, um nur zwei Möglichkeiten zu nennen. In [...]

März 2nd, 2017|

Codebeispiel: Daten per IEEE 802.15.4 senden

Das Funkmodul Preon32 setzt einen 2.4 GHz Transceiver ein, um Daten im Rahmenformat IEEE 802.15.4 zu senden und zu empfangen. Dieses Rahmenformat ermöglicht die Umsetzung von höheren Protokollschichten wie Zigbee oder 6loWPAN, um nur zwei Möglichkeiten zu nennen. In [...]

März 2nd, 2017|
Mehr Beiträge laden
Anfrage starten

Interesse an diesem Produkt?

Kontaktieren Sie Virtenio um mehr Informationen zu erhalten oder um das Produkt zu bestellen!
Tagesaktuelle Preise sendet Ihnen Virtenio umgehend zu.
Anfrage starten