Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time

EDB: Energy-interference Free Debugger


EDB (IEEE Micro, ASPLOS'16) is a USB debugger for intermittently-powered energy-harvesting devices that does not interfere with the energy supply of the target device. With EDB, application software can be debugged while it runs intermittently on harvested energy. Main debugging primitives are concurrent tracing of energy, execution, and I/O activity, setting breakpoint based on code and energy, measuring energy consumption of code spans using watchpoints that record energy, and energy-neutral printf statements by automatic energy compensation.

EDB requires an electrical connection to the capacitor on the target energy-harvesting device and (optionally) connection to RX and TX lines for decoding incoming RFID messages and backscattered bits. EDB was tested with the WISP5 RF-harvesting device, and includes a socket that matches the WISP header (connections to the capacitor and RF RX/TX lines must be made separately).

EDB software relies on the libedb runtime library to be linked into the application. See edb-rat for an example application with the library linked in using our Maker dependency build system. The README of the edb-rat app has a tutorial for the debugging features of EDB. This application can be copied and modified as a template to quickly create an application with immediate support for EDB.

The programmer's interface to EDB is edb-console, a GDB-like console that runs on a workstation computer and communicates to EDB over USB.

The firware that runs on the EDB board is edb-server. Most EDB functionality is factored into libedbserver, for easy inclusion of tracing/profiling/debugging functionality in-situ, onto a microcontroller (on a separate voltage domain from the main application MCU) and that might be already shared by another workload (e.g., see EDBsat).

Request an EDB board from us and/or see the hardware design files (TODO: release).

Board bring-up

Plug the 2-pin jumper (M50-1900005, for Abstract Lab: in stock in EDB parts box) into the 3-pin selector header on the side of the board, to select the 3v setting.

Connect an MSP-FET device (either the standalone device or on any TI MSP430 Launchpad) to the P1 header (4-pin) on the side of the EDB board. You need will need an adapter to connect to the 4-pin 0.050'' header:

Fetch, build, and flash the software onto the board:

git clone --recursive
cd edb-server
make bld/gcc/all
make bld/gcc/prog

See the tutorial in the edb-rat application to flash the edb-rat application onto the WISP5 to test EDB functionality.


We're happy to have shared EDB with the following research groups: