Verifying multi-threaded embedded systems with software tracing

Apr 3, 2026 |

Most embedded systems today are powered by multi-threaded software, e.g., running on Linux or a real-time operating system (RTOS). While multi-threading has many advantages over single-threaded designs, it can make the software more complex and the verification more challenging.

Traditional verification methods like code review, static analysis, and functional testing are necessary but not sufficient to fully verify multi-threaded systems where there is an intricate web of dependencies between threads caused by explicit and implicit thread interactions.

Moreover, such dependencies can be affected by software execution time variations, which are not explicit in the code but rather an emergent behavior in runtime. Timing effects on thread interactions are often an uncontrolled factor when testing multi-threaded systems, so even vast amounts of testing might skim only the surface of an ocean of potential execution scenarios. As a result, latent defects may remain undetected, only to surface following deployment.

So, how do you verify that a design is good from a multi-threading perspective? The de facto solution is runtime observability using software tracing. Percepio Tracealyzer offers a large set of visual analysis features and functionalities for software design analysis and verification of real-time requirements.

Tracealyzer for FreeRTOS v3.0

Read the full article here.

 

Percepio Contact:
Andreas Lifvendahl
+46 70 516 7802

Media Contact:
Monika Cunnington

+31 617 840 559