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, …)
Description
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.
Libraries
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-IRQs | Yes |
CPU-RTC | Yes |
CPU-Timer | Yes |
CPU-FLASH | 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 |
CPU-PWM | Yes |
CPU-CAN | Yes |
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: Control flash memory MX25L8005 via SPI
The microcontroller used on the Preon32 radio module has a large number of interfaces. These interfaces can be used to control different peripherals with different protocols. In this example for the PreonVM, a serial flash memory module is controlled [...]
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 [...]
Code example: Time-controlled acquisition of analog values in the block
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 [...]
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 [...]
Code example: Reading the temperature of the ADT7410 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 [...]
Code example: Reading the relative illuminance of the BH1710FVC 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 [...]
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 [...]