Cilix

What is Cilix?

Cilix is a small Common Intermediate Language (CIL) virtual machine for small wireless sensor devices.

Problems in conventional development for pervasive devices

  • Each device needs individual programming environment
  • We have to use specified programming languages for each device.
  • Code reuse implementation is difficult.

Solution: CIL virtual machine

  • CIL is an open specification (published under ECMA-335)
  • CIL has multiple hi-level language compilers.

Cilix

Multi language support

  • Developers can use favorite programming languages (ex. Managed C++, Visual Basic, and C#).
  • We can code, test, and debug program on existing powerful IDEs (ex. Visual Studio and Mono).

Saving device resources

  • We optimized Cilix for small programs.
  • Cilix supports most CIL instructions required for sensor data processing.

Easy Executable code replacement

  • Over-the-air programming
  • Micro SD card

Code replacement control

  • Executable code can determine to accept, ignore, or relay the new received code by itself.
  • The new code is transmitted by several packets, and they are overwritten to the program code area.

Portability

  • CILIX is developed by employing C.
  • The core of CILIX (97% in MSP430) and I/O control code (3% in MSP430) are separated.

Other functions

  • Garbage collected heap
  • Threading
  • Wireless data transferring

Prototype

  • MPU: MSP430F247 (16bit MPU, 32KB ROM, 4KB RAM)
  • Wireless: CC1101RTKR
  • Interface: SPI, UART
  • Sensors: a light sensor and a temperature sensor

Footprint (over-the-air programming version)

  • Flash ROM (for Cilix code): 29.5KB
  • Flash ROM (for executable code): 2.5KB
  • RAM (for Cilix): 2.5KB
  • RAM (for executable coe): 1.5KB

Publications

  1. Yasue Kishino, Yutaka Yanagisawa, Tsutomu Terada, Masahiko Tsukamoto, Takayuki Suyama: CILIX: a Small CIL Virtual Machine for Wireless Sensor Devices, Pervasive 2010 Demo (May 2010).