Bifröst: Visualizing and Checking Behavior of Embedded Systems across Hardware and Software

The Maker movement has encouraged more people to start working with electronics and embedded processors. A key challenge in developing and debugging custom embedded systems is understanding their behavior, particularly at the boundary between hardware and software. Existing tools such as step debuggers and logic analyzers only focus on software or hardware, respectively. This paper presents a new development environment designed to illuminate the boundary between embedded code and circuits. Bifröst automatically instruments and captures the progress of the user's code, variable values, and the electrical and bus activity occurring at the interface between the processor and the circuit it operates in. This data is displayed in a linked visualization that allows navigation through time and program execution, enabling comparisons between variables in code and signals in circuits. Automatic checks can detect low-level hardware configuration and protocol issues, while user-authored checks can test particular application semantics. In an exploratory study with ten participants, we investigated how Bifröst influences debugging workflows.

[1]  J. Nievergelt,et al.  Special Feature: Monitoring Program Execution: A Survey , 1981, Computer.

[2]  Arvind Satyanarayan,et al.  Visual Debugging Techniques for Reactive Data Visualization , 2016, Comput. Graph. Forum.

[3]  Tovi Grossman,et al.  Trigger-Action-Circuits: Leveraging Generative Design to Enable Novices to Design and Build Circuitry , 2017, UIST.

[4]  L. Gugerty,et al.  Debugging by skilled and novice programmers , 1986, CHI '86.

[5]  Henry Lieberman,et al.  Debugging and the experience of immediacy , 1997, CACM.

[6]  Jeffrey Heer,et al.  SpanningAspectRatioBank Easing FunctionS ArrayIn ColorIn Date Interpolator MatrixInterpola NumObjecPointI Rectang ISchedu Parallel Pause Scheduler Sequen Transition Transitioner Transiti Tween Co DelimGraphMLCon IData JSONCon DataField DataSc Dat DataSource Data DataUtil DirtySprite LineS RectSprite , 2011 .

[7]  David A. Mellis,et al.  Arduino: An Open Electronics Prototyping Platform , 2007 .

[8]  Brad A. Myers,et al.  Six Learning Barriers in End-User Programming Systems , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[9]  Panos Markopoulos,et al.  Five key challenges in end-user development for tangible and embodied interaction , 2013, ICMI '13.

[10]  Haoqi Zhang,et al.  Unravel: Rapid Web Application Reverse Engineering via Interaction Recording, Source Tracing, and Library Detection , 2015, UIST.

[11]  Mary Beth Rosson,et al.  Supporting end-user debugging: what do users want to know? , 2006, AVI '06.

[12]  Rui Abreu,et al.  A Survey on Software Fault Localization , 2016, IEEE Transactions on Software Engineering.

[13]  Jeffrey Heer,et al.  D³ Data-Driven Documents , 2011, IEEE Transactions on Visualization and Computer Graphics.

[14]  Mireille Ducassé,et al.  A Pragmatic Survey of Automated Debugging , 1993, AADEBUG.

[15]  Björn Hartmann,et al.  The Toastboard: Ubiquitous Instrumentation and Automated Checking of Breadboarded Circuits , 2016, UIST.

[16]  Mike Y. Chen,et al.  CurrentViz: Sensing and Visualizing Electric Current Flows of Breadboarded Circuits , 2017, UIST.

[17]  Brad A. Myers,et al.  Debugging reinvented , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[18]  Sara Jones,et al.  Crossed Wires: Investigating the Problems of End-User Developers in a Physical Computing Task , 2016, CHI.

[19]  Mike Y. Chen,et al.  CircuitSense: Automatic Sensing of Physical Circuits and Generation of Virtual Circuits to Support Software Tools. , 2017, UIST.

[20]  Andreas Zeller CHAPTER 6 – Scientific Debugging , 2009 .

[21]  Andreas Zeller,et al.  Why Programs Fail, Second Edition: A Guide to Systematic Debugging , 2009 .

[22]  Andreas Zeller,et al.  Why Programs Fail: A Guide to Systematic Debugging , 2005 .

[23]  Xiang Cao,et al.  DejaVu: integrated support for developing interactive camera-based programs , 2012, UIST.

[24]  Rob Miller,et al.  Addressing misconceptions about code with always-on programming visualizations , 2014, CHI.

[25]  Scott R. Klemmer,et al.  d . tools : Integrated Prototyping for Physical Interaction Design , 2005 .

[26]  Thomas D. LaToza,et al.  Developers ask reachability questions , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[27]  Éric Tanter,et al.  Processing , 1988 .

[28]  Markus Stumptner,et al.  A Survey of Intelligent Debugging , 1998, AI Commun..

[29]  Mary Shaw,et al.  The state of the art in end-user software engineering , 2011, ACM Comput. Surv..

[30]  Sean Follmer,et al.  Scanalog: Interactive Design and Debugging of Analog Circuits with Programmable Hardware , 2017, UIST.

[31]  Haoqi Zhang,et al.  Telescope: Fine-Tuned Discovery of Interactive Web UI Feature Implementation , 2016, UIST.

[32]  Michael S. Bernstein,et al.  Reflective physical prototyping through integrated design, test, and analysis , 2006, UIST.

[33]  Bil Lewis,et al.  Debugging Backwards in Time , 2003, ArXiv.