ABSTRACT
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.
Supplemental Material
- Marzieh Ahmadzadeh, Dave Elliman, and Colin Higgins. 2005. An analysis of patterns of debugging among novice computer science students. ACM SIGCSE Bulletin 37, 3 (2005), 84--88. Google ScholarDigital Library
- Arduino. 2017. Arduino Zero. https://www.arduino.cc/en/Main/ArduinoBoardZero. (2017).Google Scholar
- Tracey Booth, Simone Stumpf, Jon Bird, and Sara Jones. 2016. Crossed Wires: Investigating the Problems of End-User Developers in a Physical Computing Task. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems (CHI '16). ACM, NY, NY, USA, 3485--3497. Google ScholarDigital Library
- Michael Bostock, Vadim Ogievetsky, and Jeffrey Heer. 2011. D3 data-driven documents. IEEE transactions on visualization and computer graphics 17, 12 (2011), 2301--2309. Google ScholarDigital Library
- Cloud9. 2017. Ace - The High Performance Code Editor for the Web. https://ace.c9.io/. (2017).Google Scholar
- Digilent. 2016. Digilent Electronics Explorer Board. (2016). https://reference.digilentinc.com/electronics_explorer:electronics_explorer Online; accessed 30-March-2016.Google Scholar
- Daniel Drew, Julie L. Newcomb, William McGrath, filip Maksimovic, David Mellis, and Björn Hartmann. 2016. The Toastboard: Ubiquitous Instrumentation and Automated Checking of Breadboarded Circuits. In Proceedings of the 29th Annual Symposium on User Interface Software and Technology (UIST '16). ACM, NY, NY, USA, 677--686. Google ScholarDigital Library
- Mireille Ducassé. 1993. A pragmatic survey of automated debugging. Automated and Algorithmic Debugging (1993), 1--15. Google ScholarDigital Library
- L. Gugerty and G. Olson. 1986. Debugging by Skilled and Novice Programmers. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI '86). ACM, NY, NY, USA, 171--174. Google ScholarDigital Library
- Björn Hartmann, Scott R Klemmer, and Michael Bernstein. 2005. d. tools: Integrated prototyping for physical interaction design. IEEE Pervasive Computing 4 (2005).Google Scholar
- Joshua Hibschman and Haoqi Zhang. 2015. Unravel: Rapid Web Application Reverse Engineering via Interaction Recording, Source Tracing, and Library Detection. In Proceedings of the 28th Annual ACM Symposium on User Interface Software & Technology (UIST '15). ACM, NY, NY, USA, 270--279. Google ScholarDigital Library
- Joshua Hibschman and Haoqi Zhang. 2016. Telescope: fine-Tuned Discovery of Interactive Web UI Feature Implementation. In Proceedings of the 29th Annual Symposium on User Interface Software and Technology. ACM, 233--245. Google ScholarDigital Library
- Jane Hoffswell, Arvind Satyanarayan, and Jeffrey Heer. 2016. Visual debugging techniques for reactive data visualization. In Computer Graphics Forum, Vol. 35. Wiley Online Library, 271--280. Google ScholarDigital Library
- Jun Kato, Sean McDirmid, and Xiang Cao. 2012. DejaVu: Integrated Support for Developing Interactive Camera-based Programs. In Proceedings of the 25th Annual ACM Symposium on User Interface Software and Technology (UIST '12). ACM, NY, NY, USA, 189--196. Google ScholarDigital Library
- Cory Kissinger, Margaret Burnett, Simone Stumpf, Neeraja Subrahmaniyan, Laura Beckwith, Sherry Yang, and Mary Beth Rosson. 2006. Supporting End-user Debugging: What Do Users Want to Know?. In Proceedings of the Working Conference on Advanced Visual Interfaces (AVI '06). ACM, NY, NY, USA, 135--142. Google ScholarDigital Library
- Andrew J Ko, Robin Abraham, Laura Beckwith, Alan Blackwell, Margaret Burnett, Martin Erwig, Chris Scaffidi, Joseph Lawrance, Henry Lieberman, Brad Myers, and others. 2011. The state of the art in end-user software engineering. ACM Computing Surveys (CSUR) 43, 3 (2011), 21. Google ScholarDigital Library
- Andrew J. Ko and Brad A. Myers. 2008. Debugging Reinvented: Asking and Answering Why and Why Not Questions About Program Behavior. In Proceedings of the 30th International Conference on Software Engineering (ICSE '08). ACM, NY, NY, USA, 301--310. Google ScholarDigital Library
- Andrew J Ko, Brad A Myers, and Htet Htet Aung. 2004. Six learning barriers in end-user programming systems. In Visual Languages and Human Centric Computing, 2004 IEEE Symposium on. IEEE, 199--206. Google ScholarDigital Library
- Thomas D LaToza and Brad A Myers. 2010. Developers ask reachability questions. In Proceedings of the 32Nd ACM/IEEE International Conference on Software Engineering-Volume 1. ACM, 185--194. Google ScholarDigital Library
- Bil Lewis. 2003. Debugging backwards in time. arXiv preprint cs/0310016 (2003).Google Scholar
- Tom Lieber, Joel R. Brandt, and Rob C. Miller. 2014. Addressing Misconceptions About Code with Always-on Programming Visualizations. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI '14). ACM, NY, NY, USA, 2481--2490. Google ScholarDigital Library
- D Mellis, Massimo Banzi, David Cuartielles, and Tom Igoe. 2007. Arduino: An open electronic prototyping platform. In Proc. CHI, Vol. 2007.Google Scholar
- Bernhard Plattner and Juerg Nievergelt. 1981. Special feature: Monitoring program execution: A survey. Computer 14, 11 (1981), 76--93. Google ScholarDigital Library
- Guillaume Pothier, Éric Tanter, and José Piquer. 2007. Scalable omniscient debugging. ACM SIGPLAN Notices 42, 10 (2007), 535--552. Google ScholarDigital Library
- Markus Stumptner and Franz Wotawa. 1998. A survey of intelligent debugging. AI Communications 11, 1 (1998), 35--51. Google ScholarDigital Library
- Daniel Tetteroo, Iris Soute, and Panos Markopoulos. 2013. Five key challenges in end-user development for tangible and embodied interaction. In Proceedings of the 15th ACM on International conference on multimodal interaction. ACM, 247--254. Google ScholarDigital Library
- Twitter. 2017. Bootstrap. http://getbootstrap.com. (2017).Google Scholar
- David Ungar, Henry Lieberman, and Christopher Fry. 1997. Debugging and the Experience of Immediacy. Commun. ACM 40, 4 (April 1997), 38--43. Google ScholarDigital Library
- Bret Victor. 2012. Learnable programming. (2012). http://worrydream.com/LearnableProgramming/Google Scholar
- Bret Victor. 2014. Seeing Spaces. (2014). http://worrydream.com/SeeingSpaces/Google Scholar
- W Eric Wong, Ruizhi Gao, Yihao Li, Rui Abreu, and Franz Wotawa. 2016. A survey on software fault localization. IEEE Transactions on Software Engineering 42, 8 (2016), 707--740. Google ScholarDigital Library
- Andreas Zeller. 2009. Why programs fail: a guide to systematic debugging. Elsevier. Google ScholarDigital Library
Index Terms
- Bifröst: Visualizing and Checking Behavior of Embedded Systems across Hardware and Software
Recommendations
WiFröst: Bridging the Information Gap for Debugging of Networked Embedded Systems
UIST '18: Proceedings of the 31st Annual ACM Symposium on User Interface Software and TechnologyThe rise in prevalence of Internet of Things (IoT) technologies has encouraged more people to prototype and build custom internet connected devices based on low power microcontrollers. While well-developed tools exist for debugging network communication ...
A study on the use of IDE features for debugging
MSR '18: Proceedings of the 15th International Conference on Mining Software RepositoriesIntegrated development environments (IDEs) provide features to help developers both create and understand code. As maintenance and bug repair are time-consuming and costly activities, IDEs have long integrated debugging features to simplify these tasks. ...
Minimally Invasive HW/SW Co-debug Live Visualization on Architecture Level
GLSVLSI '21: Proceedings of the 2021 on Great Lakes Symposium on VLSIWe present a tool that allows developers to debug hard- and software and their interaction in an early design stage. We combine a SystemC virtual prototype (VP) with an easily configurable and interactive graphical user interface and a standard software ...
Comments