CONIX Publication

Peripheral Aware Code Analysis for Batteryless Systems

Authors: Emily Ruppel, Harsh Desai, Brandon Lucia


Batteryless energy harvesting devices support complex, long term sensing deployments in scenarios that are unfit for batteries. Prior work developed execution models that survive intermittent power failures by decomposing long running applications into atomic tasks. Forward progress is guaranteed at the granularity of a task as long as no atomic task consumes more energy than the device’s energy buffer can store, which the system designer must confirm by measuring each task’s energy consumption. Prior efforts to quantify software energy-variation are insufficient, because task energy remains ambiguous, varying implicitly with the state of all of the on board peripherals. This work develops a system of lightweight annotations and a compiler analysis that solves the problem of task energy ambiguity. A programmer uses the annotations to indicate changes in the energy typestate of a peripheral and the compiler tool uses the annotations to track all possible peripheral energy typestates at each point in the program. If multiple energy typestates reach a program point, the analysis raises a warning that the task consumes a peripheral-dependent amount of energy.

Release Date: 10/16/2019
Uploaded File: View