PreonVM

PreonVM
Napisane w C , Java
Platforma Kora ARM-M
Typ Maszyna wirtualna Java
Licencja Własne oprogramowanie
Strona internetowa PreonVM

PreonVM to implementacja wirtualnej maszyny Java opracowana przez firmę Virtenio. PreonVM został początkowo opracowany do pracy na Atmel AVR ATmega256, ale został przeniesiony na systemy ARM Cortex-M 3. Dlatego maszyna wirtualna może działać na mikrokontrolerze z co najmniej 8 kB RAM i 256 kB ROM. PreonVM nie wymaga dodatkowego systemu operacyjnego i działa bezpośrednio na mikrokontrolerze.

Każdy plik klas aplikacji jest przekształcany za pomocą narzędzia ClassLinker w celu usunięcia wszystkich niepotrzebnych części plików klas. Dzięki temu możliwe jest zmniejszenie rozmiaru pliku klasy o około 80%, co jest wymagane w przypadku małego urządzenia. ClassLinker tworzy plik .vmm, który łączy wszystkie pliki klas aplikacji w specjalnym formacie, który może zostać odczytany i wykonany przez PreonVM na mikrokontrolerze.

Maszyna wirtualna obsługuje wszystkie typy danych Java, w tym. długie i podwójne, wątki, synchronizacja, zbieranie śmieci z defragmentacją pamięci, wyjątki, właściwości systemu i system IRQ/zdarzeń. PreonVM jest wyposażony w bibliotekę klas sterowników dla IO, takich jak I2C , SPI , USART , CAN , PWM , IRQ , RTC , GPIO , ADC , DAC oraz sterowniki dla niektórych czujników i układów scalonych.

Przykład kodu

Poniższe przykłady kodu wykorzystują czujnik SHT21 i odczytują wilgotność względną.

    
         

        
           
        

        
            
         public  class  SHT21Demo  {  public  static  void  main  (  String  []  args  )  {  // czujnik jest podłączony do instancji magistrali I2C 1  NativeI2C  i2c  =  NativeI2C  .  pobierzInstancję  (  1  );  i2c  .  otwarte  ();  // utwórz i zainicjuj instancję czujnika SHT21  SHT21  sht21  =  nowy  SHT21  (  i2c  );  sht21  . 
        

        
          
            
            

               
                setResolution  (  SHT21  .  RESOLUTION_RH12_T14  );  sht21  .  zresetuj  ();  // odczytaj i wypisz wilgotność co sekundę  while  (  true  )  {  sht21  .  startRelativeHumidityConversion  ();  Wątek  .  spać  (  100  );  int  surowyRH  =  sht21  .  getRelativeHumidityRaw  ();  pływak  rh  =  SHT21  . 

                  
            
        
     
 konwertujRawRHToRHw  (  rawRH  );  Systemu  .  na zewnątrz  .  println  (  "SHT21: rawRH="  +  rawRH  +  "; RH="  +  rh  );  Wątek  .  spać  (  900  );  }  }  } 

Zobacz też

Linki zewnętrzne