STM32 non-intrusive realtime data visualizer

Similar projects worth following
STMViewer is a software tool that can be used to visualize variables values in realtime using only STLink programmer and a STM32 target. You might be familiar with STMStudio or CubeMonitor, tools from ST that serve a similar purpose. If there are at least two similar tools, why bother to create my own? Simply because STMStudio is deprecated and works only on Windows, and Cube monitor takes forever to setup with even the simplest graphs.

STMViewer is oriented for ease of use and quick setup process. There are still some functionalities it lacks, compared to STMStudio, however I'm constantly working to improve it. Currently I'm working on a large update making use of the SWO output that enables new ways of debugging live embedded applications so stay tuned for more!

You can try it right away using the installers in Releases page:

Any feedback is welcome! 

  • Trace Viewer Module

    Peter Wasilewski4 days ago 0 comments

    Trace Viewer is a new module that is implemented in the STMViewer software. It allows to visualize SWO pin trace data on digital or "analog" plots.

     If you ever used GPIO pins to confirm a timer interrupt frequency, check how long a function takes to execute, or diagnose preempting interrupts you know how it's like to pull out an oscilloscope or logic analyzer and solder some wires to the prototype. It's quite annoying to set up, takes a lot of time, and you cannot easily connect mulitple channels. The Trace Viewer uses only and ST-Link programmer and it'a ability to read SWO output. Thanks to a trace peripheral in Cortex M3/M4/M7/M33 cores it is possible to measure sub-microsecond time periods (depending on your System Core Clock). 

    To create a datapoint on a plot you simply write a registers of the ITM peripheral like so: 

    ITM->PORT[x].u8 = 0xaa;

    As you can see this method is almost non intrusive when we consider the time it takes for the micro controller to execute it. After that the trace peripheral takes all the work, creating relative timestamps and attaching them to bytes that are later sent through SWO pin. 

    If you're still interested check out the for more info on how to get started!

View project log

Enjoy this project?



lequangmkp36 wrote 09/13/2023 at 11:06 point

Thanks for sharing this, this is amazing. i like it.

  Are you sure? yes | no

Mike wrote 09/05/2023 at 16:48 point

I've avoided the STM32 platform. But I've been eyeing it for a while now and this project makes me think that diving in will be easier that it was before. 

  Are you sure? yes | no

Peter Wasilewski wrote 09/05/2023 at 17:17 point

Glad to hear that! I think STM32 is the easiest to start with when we consider 32-bit families. Lots of support on the internet as well :) 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates