Code Layout Optimization for Remote Progressive Code Update for Networked Embedded Systems

by Jinsik Kim

Location: Engineering Hall 2111

Date and Time: November 18, 2009 2:00pm

Prof. Pai H. Chou (Chair)
Prof. Tony Givargis
Prof. Rainer Doemer

Many embedded systems need to have their firmware updated several times over the lifetime of the system after deployment. While those based on binary differencing suffer from unpredictable code shift, overwriting the entire firmware image may be too costly for those connected by slow, unreliable, or expensive data links. In other words, firmware update over a network connection is an essential but expensive feature for many embedded systems due to the relatively high power consumption and limited bandwidth.

To solve these problems, we propose a new technique by exploiting high-level knowledge about the source program structure in laying out the binary image. Specifically, we show that by laying out code in order of the cyclomatic complexity of the routines, the code will evolve with minimal Hamming distance between successive revisions as the code evolves. This code layout technique has the benefits of minimizing bandwidth and power requirements for remote firmware update while also minimizing the wearing of the non-volatile program memory.For another target physical memory, our work proposes a page-level, link-time technique that minimizes not only the size of patching scripts but also perturbation to the firmware memory, over the entire sequence of updates in the system’s lifetime. Experimental results show our technique to reduce the energy consumption of firmware update by 30–42% over the state-of-the-art.