Reflex is a suite of compiler and runtime support for applications to leverage low-power processors on mobile systems.
Low-power processors that are encompassed in an extremely asymmetric architecture promise very high energy-efficiency to frequent, simple computational tasks, most notably sensing. However, programming such an architecture is difficult, especially to numerous third-party developers.
Reflex relieves developers from dealing with the extremely asymmetric architecture. It not only manages deployment and execution of an application that is distributed over the main and the low-power processors, but also creates a software Distributed Shared Memory(DSM) across the distributed code. Essentially, Reflex provides a certain degree of programming transparency.
Reflex has been evolving. It is increasingly focused on facilitating third-party application development.
The first generation of Reflex (2009) defined a preliminary abstraction, called channel, for code to be executed on heterogeneous resources. The developer must explicitly construct and pass messages for channel-application communication.
Dandelion(1st half of 2010) is a branch off Reflex that eases smartphone application development with wireless body-area sensors. The previous channel abstraction is replaced by senselet, a platform-agnostic C++ class. Dandelion is able to conceal the heterogeneity but not the distributed nature.
The current Reflex (2nd half of 2010 to now) targets hiding both the distributed and the asymmetric nature. A software Distributed Shared Memory (DSM) frees the developers from dealing with communication among loosely-coupled processors.The introduction of DSM not only led the existing system to a different overall design but also called for new components.
As of Mar. 2011, the Reflex codebase contains more than 10K lines of code, of which only less than 10% is reused/modified from the Dandelion codebase. The codebase is still growing.
We have just ported Reflex to TI pandaboard (based on TI OMAP4430 SoC).
The most recent Reflex hardware prototype built with Nokia N900 (based on TI OMAP3630 SoC), NXP LPC1768, and TI MSP430F1611.
The first geneartion Reflex prototype built with Nokia N810 and Rice Orbit Sensor.
An even earlier Reflex prototype built with Nokia N810, Rice Orbit Sensor, and CMUCAM3 camera.
We are working hard toward publishing the Reflex Code.