The value of your variables, now.
eScope reads variables straight from the microcontroller's RAM while it runs and plots them in real time. No halting the program, no debugger on pause, no hardware scope.
Everything you need to watch firmware live
Acquisition
- Several targets at once, each with its own transport and symbols
- Serial / Bluetooth, TCP, SEGGER RTT through pyOCD or J-Link
- Lost frames and device silences marked on the plot
- Hot reload of the symbols after a rebuild
Symbols
.mapfile with a configurable regular expression- ELF through the bundled GDB:
ctx.cfg.gain,tab[3].x,uart->Instance->BRR - Pointers read on the target at resolution time
- Completion of variable names and struct fields
Plotting
- One Y axis per channel, gain / offset, linked channels
- Markers, deltas, annotations, watch line
- Computed channels defined by a C# script
- Copy / paste with Excel, CSV and PNG export
Analysis A key
On the selection, for each channel: min, max, peak-to-peak, mean, RMS, standard deviation, frequency, period, duty cycle and FFT spectrum (linear or dB).
Watch W key
Current values refreshed at 1 Hz, decimal / hex / float display, and writing variables on the target. With GDB, each row is a C expression evaluated live.
Traces
Independent tabs, playback, keyboard navigation, compressed trace files and saving of the whole workspace.
Three lines in your firmware
The embedded code (protocol and transport) is provided under the MIT license:
copy it into your firmware and ship it in your products, commercial ones included, with no eScope license.
Ready-to-use examples for Arduino (DebugScope library), STM32CubeIDE and Renesas RA over RTT.
- Pick the protocol and transport in
eScopeCfg.h. - Call
eScopeProtocol_Init()at startup. - Call
eScopeProtocol_Process()at a fixed rate: that rate is your sampling period. - In eScope, declare the target, type your variable names and start recording (Ctrl+Space).
// eScopeCfg.h #define ESCOPE_PROTOCOL_V3 #define ESCOPE_TRANSPORT_UART #define ESCOPE_PROTOCOL_BAUDRATE 115200 #define ESCOPE_PROTOCOL_CHAN_MAX (8U) #define ESCOPE_PROTOCOL_ADDRESS_SIZE (4U) #define ESCOPE_PROTOCOL_DATASIZE_SIZE (4U) #define ESCOPE_PROTOCOL_TX_SIZE (128U) // main.c int main(void) { board_init(); eScopeProtocol_Init(); for (;;) { /* ... */ } } // Periodic task or interrupt, e.g. 1 kHz void Tick_1ms(void) { eScopeProtocol_Process(); }
Free to learn, a license to work
The PC application is source-available under the PolyForm Noncommercial 1.0.0 license. The firmware code is MIT.
| Edition | For | Duration | How to get it |
|---|---|---|---|
| Demo | Trying the tool | 1 month | On first launch |
| Personal | Personal projects, hobby, study, research, educational and public institutions | Perpetual | Free, from the application |
| Professional | Use at work, client projects, any commercial use | Yearly subscription | About › License menu of the application |
All editions have the same features. Payment, VAT and renewal of the Professional license are handled by Lemon Squeezy. Need a quote or several seats? Write to us.
Download eScope
Windows application (.NET 8). Updates are offered from within the application.