Search papers, labs, and topics across Lattice.
This paper introduces a multi-mode debugging framework specifically designed for Emfrp-based embedded systems, addressing the challenges posed by the abstraction gap between high-level FRP code and low-level C/C++ implementations. By employing a source code mapping technique, the framework enables developers to debug at the level of Emfrp abstractions while still accessing the underlying platform-specific code. A case study on an ESP32 microcontroller illustrates that this approach significantly enhances debugging efficiency in practical scenarios.
Debugging Emfrp applications just got easier鈥攏ow you can seamlessly navigate between high-level abstractions and low-level C/C++ code.
Emfrp is a functional reactive programming (FRP) language designed for small-scale embedded systems. Time-varying values are the primary abstraction mechanism in FRP and enable concise descriptions of reactive behavior. In practice, however, Emfrp programs are compiled into C and combined with platform-dependent input/output components written in C or C++. Consequently, developers must debug the resulting mixed C/C++ program using conventional debuggers such as GDB, even though the application logic is written in Emfrp. This situation creates an abstraction gap between the source-level FRP program and the executable system. This paper presents a multi-mode debugging framework for Emfrp-based embedded applications. The framework supports debugging at the level of Emfrp abstractions while also allowing inspection of platform-specific C/C++ I/O code. Our approach uses a source code mapping technique that relates Emfrp constructs to corresponding locations in the compiled program. A case study on an ESP32 microcontroller using representative debugging scenarios demonstrates improved debugging efficiency.