PreonVM

PreonVM
Skrivet i C , Java
Plattform ARM Cortex-M
Typ Java virtuell maskin
Licens Proprietär programvara
Hemsida PreonVM

PreonVM är en implementering av den virtuella Java-maskinen utvecklad av Virtenio. PreonVM utvecklades ursprungligen för att köras på Atmel AVR ATmega256, men har porterats till ARM Cortex-M 3-system. Därför kan den virtuella datorn köras på en mikrokontroller med minst 8 kB RAM och 256 kB ROM. PreonVM kräver inget extra operativsystem och körs direkt på mikrokontrollern.

Varje klassfil i applikationen omvandlas via en ClassLinker för att ta bort alla delar av klassfiler som inte krävs. Detta gör det möjligt att minska klassens filstorlek med cirka 80 %, vilket krävs för en liten enhet. ClassLinker bygger en .vmm-fil som kombinerar alla programklassfiler i ett speciellt format som kan läsas och exekveras av PreonVM på mikrokontrollern.

Den virtuella datorn stöder alla Java-datatyper inkl. lång och dubbel, trådar, synkronisering, Sophämtning med minnesdefragmentering, undantag, systemegenskaper och IRQ/händelsesystem. PreonVM levereras med ett bibliotek med drivrutinsklasser för IO som I2C , SPI , USART , CAN , PWM , IRQ , RTC , GPIO , ADC , DAC och med drivrutiner för vissa sensorer och IC:er.

Kodexempel

Följande kodexempel använder en SHT21-sensor och läser av den relativa luftfuktigheten.

    
         

        
           
        

        
            
        
        

        
          
            
            

               
               

                  
            
        
     
 public  class  SHT21Demo  {  public  static  void  main  (  String  []  args  )  {  // sensor är ansluten till I2C-bussinstans 1  NativeI2C  i2c  =  NativeI2C  .  getInstance  (  1  );  i2c  .  öppna  ();  // skapa och starta SHT21-sensorinstans  SHT21  sht21  =  ny  SHT21  (  i2c  );  sht21  .  setResolution  (  SHT21  .  RESOLUTION_RH12_T14  );  sht21  .  återställ  ();  // läs och skriv ut fuktighet varje sekund  while  (  true  )  {  sht21  .  startRelativeHumidityConversion  ();  Tråd  .  sömn  (  100  );  int  rawRH  =  sht21  .  getRelativeHumidityRaw  ();  float  rh  =  SHT21  .  omvandlaRawRHtoRHw  (  råRH  );  System  .  ut  .  println  (  "SHT21: rawRH="  +  rawRH  +  "; RH="  +  rh  );  Tråd  .  sömn  (  900  );  }  }  } 

Se även

externa länkar