PreonVM – Java VM for embedded systems2019-11-06T10:55:33+01:00

Project Description

PreonVM – Java VM for embedded systems

  • Applications programmable in Java

  • All Java data types incl. long and double

  • Unlimited number of threads

  • Thread synchronization (synchronized)

  • Garbage collection with memory defragmentation

  • Exception handling for more security

  • Large class library incl. many drivers

  • System properties for configuring applications

  • Event system for handling synchronous and asynchronous events

  • Runtime library (Core, Utilities, Collections, IO, …)

  • Driver for radio transceiver according to IEEE 802.15.4

  • Driver for access to Flash or FRAM data memory

  • Driver for data acquisition (ADC, DAC,…)

  • Drivers for bus systems (I2C, SPI, USART, …)

  • Driver for timer and PWM

  • Driver for additional peripherals (IRQ, RTC, GPIO, WatchDog, LED, Button, …)

  • Routing-API (AODV, 6LowPan, ….)

  • Drivers for various sensors and devices (SHT21, ADT7410, BH1710FVC, ITG3200, …)


The PreonVM is a virtual machine (VM) from VIRTENIO for use in embedded systems with very low resources such as the radio module Preon32 from VIRTENIO. The virtual machine is highly optimized, requires no additional operating system and runs directly on the microcontroller. This approach makes it possible to use applications in Java via a transformation process for the radio module Preon32. In this context, VIRTENIO offers corresponding software libraries for various interfaces. This makes the programming of applications that record sensor data and actuator controls elegantly possible. In addition, the radio interface for IEEE802.15.4 and AES encryption in hardware are mentioned as innovative components that are easy to use in the virtual machine.

Advantages of PreonVM

Embedded systems with minimal resources have so far been programmed in special and less comfortable languages. Complex applications are therefore time-consuming and have a high error potential. The VIRTENIO approach brings the convenience, language complexity and security of a virtual machine combined with an object-oriented programming language into the world of embedded systems. VIRTENIO currently offers the virtual machine as innovative operating software for its radio module Preon32 for wireless networks according to IEEE 802.15.4.

By using a virtual machine, the application program for the radio module becomes independent of the architecture actually used. This has the advantage that application programs can be executed unchanged and without a manual adjustment process, even if, for example, the processor or radio transceiver is replaced by another type.

At the same time, the development process of the hardware and the application program are decoupled. The application program is developed against a virtual architecture with corresponding interfaces, which remains unchanged over time.

In addition, the virtual machine has been optimized in such a way that applications can be run on an 8/32-bit microcontroller with at least 8 KB RAM and at least 128 KB Flash. The complete virtual machine with peripheral connection such as the radio transceiver according to IEEE 802.15.4 therefore requires less than 60KByte Flash memory.

ClassLinker to link Java classes

The virtual machine developed by Virtenio is used as operating software on the wireless sensor node type “Preon32”. With this operating software it is possible that applications written as source code in Java can be used on the Preon32 after you have gone through the following transformation process.

In the simplest case, all components of the application must first be available as Java source code or Jar archives. The Java compiler then translates them into Java byte code, which creates a class files with the file extension “.class”. The Java class files contain the methods of the class and a lot of additional information, which, however, also occupies additional memory space. This is only required to a very limited extent in the wireless sensor node. For this reason, the next necessary step is to reduce information and bundle Java Class files using the VIRTENIO ClassLinker to a single file with the extension “.vmm”. This contains all information required for program execution on the virtual machine in the sensor node. The file size of the “.vmm” is significantly smaller than the sum of the individual Java class files due to appropriate procedures. The “.vmm” can be loaded into the sensor node and executed there.


In order to provide the developer with an ideal starting point for complex applications in distributed embedded systems such as wireless networks, the virtual machine was supplemented by many software components. With this prerequisite, applications can be quickly assembled as if from a modular system. Own software parts from existing Java applications for the desktop can be integrated without adaptation of the source data. With the familiar development tools for Java, applications for wireless sensor networks can now be implemented.

Technical data

Support for applications (excerpt)
Data types char, byte, short, int, long, float, double
Structures Arrays, ArrayList, Collection, Hashtable, Set, Vector
Streams Input, Output
Exceptions try, catch, Exception, RuntimeException
StringBuffer / StringBuilder Yes / Yes
Thread Yes, unlimited in number
Synchronized supported? Yes
System-Properties Yes
Support for radio module Preon32 (internal resources)
CPU-Power-Modes Yes, (Active, Idle, Sleep, Shutdown)
CPU-WatchDog Yes
CPU-Timer Yes
CPU-BACKUP-Register Yes
CPU-ADC Yes, 2 × 12-Bit, 1 MSPS, 16 channels
CPU-DAC Yes, 2 × 12-Bit
CPU-I2C Yes, 1x channel up to 400 kBit/s
CPU-SPI Yes, 3x channels up to 18 Mbit/s
CPU-USART Yes, 3x channels synch./asynch. up to 4.5 Mbit/s
Support for radio module Preon32 (external resources)
Serial Flash via SPI Yes, read/write/erase, block mode
Radio chip via SPI Yes, IEEE 802.15.4, data rates 256 KBit/s to 2 MBit/s, frames: Data, Beacon, Command
AES encryption Yes
Software support for evaluation module “Preon32 Shuttle”
Reading the user button Yes
Control of the LEDs Yes, (green, yellow, red, amber)
RS232 over USB Yes, up to 931.6 KBaud to PC
Software support for “VariSen” sensor module
Driver for temperature sensor Yes
Driver for illumination sensor Yes
Driver for humidity sensor Yes
Driver for magnetic field sensor Yes
Driver for air pressure sensor Yes
Driver for acceleration sensor Yes
Driver for Gyro Sensor Yes

Code examples

Code example: Recording analog values via ADC

The microcontroller used on the Preon32 radio module provides a large number of internal ADCs (Analog-to-Digital Converters). After an appropriate configuration, analog voltage values can be recorded at the connection contacts of the microcontroller. In this example for the [...]

March 2nd, 2017|

Code example: Let LEDs blink per thread

In this example for the PreonVM the 4 LEDs on the Preon32 Shuttle are controlled with different frequencies. As period duration a time of 1000ms is used. Depending on the colour, the LEDs are switched on and off with [...]

March 2nd, 2017|

Code example: Read out humidity of SHT21 via I2C

The microcontroller used on the Preon32 radio module has a large number of interfaces. These can be used to control both sensors and actuators with different protocols. VIRTENIO offers a VariSen sensor module for the Preon32 Shuttle, which has [...]

March 2nd, 2017|
Product request

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.
Product request
Go to Top