PreonVM

PreonVM is an implementation of the Java virtual machine developed by Virtenio. The PreonVM was initially developed to run on the Atmel AVR ATmega256, but has been ported to ARM Cortex-M3 systems. Therefore the VM can run on a microcontroller with 8 kB RAM and 256 kB ROM at a minimum. The PreonVM requires no additional operating system and runs directly on the microcontroller.

PreonVM
Written inC, Java
PlatformARM Cortex-M
TypeJava virtual machine
LicenseProprietary software
WebsitePreonVM

Every class file of the application is transformed via a ClassLinker to strip all parts of class files that is not required. This makes it possible to reduce the class file size by about 80%, which is required for a small device. The ClassLinker builds a .vmm file which combines all application class files in a special format which can be read and executed by the PreonVM on the microcontroller.

The VM supports all Java data types incl. long and double, threads, synchronization, Garbage collection with memory defragmentation, exceptions, system properties and IRQ/event system. The PreonVM comes with a library of driver classes for IO like I2C, SPI, USART, CAN, PWM, IRQ, RTC, GPIO, ADC, DAC and with drivers for some sensors and IC's.

Code example

The following code examples uses an SHT21 sensor and reads the relative humidity.

public class SHT21Demo { 
    public static void main(String[] args) {

        // sensor is connected to I2C bus instance 1
        NativeI2C i2c = NativeI2C.getInstance(1);
        i2c.open();

        // create and init SHT21 sensor instance
        SHT21 sht21 = new SHT21(i2c);
        sht21.setResolution(SHT21.RESOLUTION_RH12_T14);
        sht21.reset();

        // read and print humidity every second
        while (true) {
            sht21.startRelativeHumidityConversion();
            Thread.sleep(100);

            int rawRH = sht21.getRelativeHumidityRaw();
            float rh = SHT21.convertRawRHToRHw(rawRH);

            System.out.println("SHT21: rawRH=" + rawRH + "; RH=" + rh);
            Thread.sleep(900);
        }
    } 
}
gollark: That's a different thing, I guess.
gollark: The network effects thing also doesn't apply to, say, use of other random cloud services. Unless you are also synchronizing your contacts and other data vaguely related to other people to those.
gollark: I suppose you could say that about clothes and things too, but it's not exactly *as* necessary.
gollark: If you buy, say, some sort of food, your friends don't have to buy that if they want to interact with you.
gollark: And most non-messaging/social media stuff isn't subject to the same network effects.

See also

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.