The behavior of a real-time embedded system is often a black box. Developers design their software, write their code and then hope that the system is behaving and executing their code the way they envisioned it. The problem is that developers have always had to hope or carefully sprinkle code snippets throughout the application in order to confirm the system behavior. Powerful tools now exist that allow developers to no longer guess at what the system is doing but instead visualize exactly what is happening. Percepio’s Tracealyzer is exactly this type of tool.
Figure 1 – Example Tracealyzer Interface
Tracealyzer runs within a PC environment such as Windows or Linux and can be used to peer behind the veil of commonly used RTOSes such as FreeRTOS, embOS, uC/OS, OpenRTOS, SafeRTOS and VxWorks. There are more than 20 different analyses and views that can be used to understand how the system is behaving and the data is flowing.
I’ve been using the tool with a combination of a K64F Freedom board, Segger J-Link Ultra+ and using FreeRTOS. So far my experiences with the tool has been productive. I’ve noticed that the interface is intuitive and easy to use. The flow of the interface feels natural and I haven’t had any issues navigating around or trying to find options. The number of visuals available is awesome especially considering that usually we stare at a fast stream of changing values in a terminal. It’s refreshing and easier to look at the visualizations and instantly see what is happening to the system.
One of a developers’ concerns should be how heavily the CPU is loaded. As many developers know, as CPU utilization increases, it can become more difficult to add new code and maintain the real-time characteristics of the system. Developers have always struggled to determine what the CPU load is and have had to resort to creating their own instrumentation or simple guesswork. One of the options allows a visualization of CPU utilization to be created removing the guesswork and the need to create any specialized equipment. I thought this feature was a nice touch and one that probably isn’t always appreciated.
While I’ve only just touched on a few capabilities of Tracealyzer, the information that it provides allows a developer to see exactly how the system works, catch any timing glitches and perform real-time tracing. The way in which developers create, observe and debug their embedded systems is changing and the capabilities that Tracealyzer is providing are very exciting. I’m looking forward to further analyzing how this tool can help improve embedded system quality and decrease debug time.
Tracealyzer has a 30-day trial that can be downloaded with full capabilities at http://percepio.com.