  Energy harvesting battery-free embedded devices rely only on ambient energy
harvesting that enables stand-alone and sustainable IoT applications. These
devices execute programs when the harvested ambient energy in their energy
reservoir is sufficient to operate and stop execution abruptly (and start
charging) otherwise. These intermittent programs have varying timing behavior
under different energy conditions, hardware configurations, and program
structures. This paper presents Energy-aware Timing Analysis of intermittent
Programs (ETAP), a probabilistic symbolic execution approach that analyzes the
timing and energy behavior of intermittent programs at compile time. ETAP
symbolically executes the given program while taking time and energy cost
models for ambient energy and dynamic energy consumption into account. We
evaluated ETAP on several intermittent programs and compared the compile-time
analysis results with executions on real hardware. The results show that ETAP's
normalized prediction accuracy is 99.5%, and it speeds up the timing analysis
by at least two orders of magnitude compared to manual testing.
