WikiDer > PreonVM

PreonVM
PreonVM
Написано вC, Ява
ПлатформаARM Cortex-M
ТипВиртуальная машина Java
ЛицензияПроприетарное программное обеспечение
Интернет сайтPreonVM

PreonVM это реализация Виртуальная машина Java разработан Virtenio. PreonVM изначально разрабатывался для работы на Atmel AVR ATmega256, но был портирован на ARM Cortex-M3 системы. Таким образом, виртуальная машина может работать на микроконтроллере с как минимум 8 КБ ОЗУ и 256 КБ ПЗУ. PreonVM не требует дополнительной операционной системы и работает непосредственно на микроконтроллере.

Каждый файл класса приложения преобразуется с помощью ClassLinker, чтобы удалить все части файлов классов, которые не требуются. Это позволяет уменьшить размер файла класса примерно на 80%, что требуется для небольшого устройства. ClassLinker создает файл .vmm, который объединяет все файлы классов приложения в специальном формате, который может быть прочитан и выполнен PreonVM на микроконтроллере.

ВМ поддерживает все типы данных Java, включая. длинные и двойные, потоки, синхронизация, сборка мусора с дефрагментацией памяти, исключения, системные свойства и IRQ / система событий. PreonVM поставляется с библиотекой классов драйверов для ввода-вывода, например I2C, SPI, USART, МОЖЕТ, ШИМ, IRQ, RTC, GPIO, АЦП, ЦАП и с драйверами для некоторых датчиков и микросхем.

Пример кода

В следующих примерах кода используется датчик SHT21 и считывается относительная влажность.

общественный учебный класс SHT21Демо {     общественный статический пустота главный(Нить[] аргументы) {        // датчик подключен к шине I2C экземпляр 1        РоднойI2C i2c = РоднойI2C.getInstance(1);        i2c.открыто();        // создаем и запускаем экземпляр датчика SHT21        SHT21 sht21 = новый SHT21(i2c);        sht21.setResolution(SHT21.RESOLUTION_RH12_T14);        sht21.перезагрузить();        // считываем и распечатываем влажность каждую секунду        пока (истинный) {            sht21.startRelativeHumidityConversion();            Нить.спать(100);            int rawRH = sht21.getRelativeHumidityRaw();            плавать rh = SHT21.convertRawRHToRHw(rawRH);            Система.из.println("SHT21: rawRH =" + rawRH + "; RH =" + rh);            Нить.спать(900);        }    } }

Смотрите также

внешняя ссылка