Licensing FAQ Documentation Distributors Getting Started

 

FreeRTOS+Trace for PIC32

 

FreeRTOS+Trace for PIC32 is the Tracealyzer for FreeRTOS, Microchip PIC32 and MPLAB X IDE. It gives an unprecedented insight into the run-time world allowing you to understand software issues a lot faster, develop robust designs that prevent future problems and improve your software’s performance.

When developing embedded software based on an operating system, a traditional debugger is often insufficient to fully understand the software’s run-time behavior. A debugger shows the current system state and allows you to step through individual functions, but this is a low-level perspective that is not suitable for studying real-time operating system behavior, such as scheduling, blocking and interactions between tasks.

 

Download for Windows (.exe) Download for Linux (.tgz)

 

FreeRTOS+Trace for PIC32 visualizes run-time behaviour of your FreeRTOS software through 25+ high-level views that complement the debugger perspective with the “big picture”. You may have used some trace tool before, but this is something extra. The views are interconnected in clever ways and intuitive to use. For a quick preview, watch this video.

 

Product sheet
White paper
Contact us

Kernel Object Utilization User Event Signal Plot Task timing - Actor Instance Graphs CPU Load Graph Event Log Main trace view Statistics report Timing distributions Communication Flow Kernel Object History Correlate multiple views

Click the thumbnails above to read more about each of the example views!

The visualization is based on traces from a lightweight software recorder that hooks into the operating system, so you don’t need any special trace debugger to use it. FreeRTOS+Trace for PIC32 is not just a lab tool, as the recording can deployed in field use. Some of our customers have the recording active by default in the release build, and thereby get very valuable trace diagnostics on real-world issues, that otherwise would have been hard to analyze.

FreeRTOS+Trace for PIC32 consists of three parts, all included in the installation package:

  • A trace recorder library that integrates with FreeRTOS, provided in C source code.
  • The Trace Export plugin for MPLAB X IDE, which reads the recorder RAM buffer and outputs a trace file.
  • The PC application for visualizing the trace files. It runs on Microsoft Windows and Linux.

 

The trace recorder library has been developed by Percepio in partnership with the FreeRTOS author Richard Barry at Real Time Engineers ltd. It is delivered in C source code and found in the installation directory (there is a link in the Help menu). The trace recorder library is easy to integrate using the step-by-step guide in the User Manual.

Download now and check it out! It can be evaluated for 15 days with full functionality and it is easy to get started. A demo trace is included for quick preview of the visualizations and the recorder library is demonstrated by MPLAB demo projects for PIX32MX and PIX32MZ.

 

Download for Windows (.exe) Download for Linux (.tgz)

 

Thanks to our close collaboration with Microchip, we offer FreeRTOS+Trace for PIC32 for a special price. A node-locked license is just $249 for the full featured Professional Edition or just $149 for Standard Edition providing basic functions.

Order via your local Percepio distributor, in the Percepio Store or at microchipDIRECT.

In case you have any technical questions, don’t hesitate to contact support@percepio.com.

The 25+ views include:

Tasks, System Calls and User Events
The main trace view shows you all recorded events visualized on a vertical time-line, including task execution timing, interrupts, system calls and custom user events. The task and interrupt trace are shown as colored rectangles. Events are shown as floating text labels. Zooming is very easy using a click-and-drag selection, which also works as a measurement tool. Tasks and events can be clicked and highlighted for additional information, including timing and event dependencies. The lower right corner contains a powerful filter, and the Finder dialog provides even more powerful filters. When zooming out, this view naturally transforms into an overview where patterns can be studied.
CPU Load
This view presents a horizontal time-line showing the total CPU usage, and also CPU usage per task/interrupt. The CPU Load Graph allows for navigating the main trace view, since a double click in the CPU Load Graph focuses the main trace view on the clicked interval. Zooming is allowed in this view as well, independently of other views, and filters are available for focusing on individual tasks or interrupts.
Timing Variations
This is an example of several Actor Instance Graphs, each showing the distributions of a specific timing property for an actor, i.e., a task or interrupt routine. This includes execution time, response time, fragmentation, and several others. Each data point represents one specific execution of a task or interrupt handler. This graph, Response Time, shows the variation in response times for two selected tasks. Tasks instances with high response times may reveal resource conflicts, e.g., where several tasks or interrupts compete for CPU time in a busy interval. This view makes it easier to spot such locations that may indicate problems or possibilities for optimization.
  Show Multiple Views Synchronized
All views with horizontal orientation can be combined in a single parent window, with synchronized scrolling. This allows for spotting patterns that otherwise would be hard to see using individual views, e.g., how the response time depends on other events, and this also allows for greater customization of the user interface.
Communication Flow
Many system calls allow for communication or synchronization between tasks. FreeRTOS+Trace for PIC32 understand these dependencies and the Communication Flow graph is a summary of all such dependencies found in the trace, in the form of a directed graph. This is a high-level view of the communication dependencies between tasks and interrupts, including the kernel objects used such as semaphores and message queues. Like in all views, double-clicking on a node opens a related view focused on the particular object. Double-clicking on a kernel object (e.g., a semaphore) opens the Object History view (shown below), a list of all events on the specific kernel object. If double-clicking on a task or interrupt, the Actor History view is opened showing all executions of the actor.
Kernel Object History
This view shows all events on a particular kernel object, such as a message queue, semaphore or mutex. The events are presented as a list, and double-clicking on a list item shows the corresponding system call in the main trace view. For message queues and similar objects with send/receive operations, it is possible to follow a specific message from send to receive, or vice versa, and also to inspect the messages (by sequence number) in the queue at any given time.
User Events and Signal Plots
User-defined events, or User Events, allows you to log any event or data in your embedded application. This gives the flexibility of classic debug “printf” calls, but are much faster as all string formatting is done offline, in the viewer. Since you get the events on the same time-line as the kernel trace, it is easy to correlate the application event with the other views. Data arguments can be stored together with labels, and plotted to visualize the data. The plotting is highly useful for analysis of control algorithms, as it allows you to correlate the plotted data with the other time-line views to find the cause of any anomalies in the plot.

 

Download for Windows (.exe) Download for Linux (.tgz)

 

Features and Editions


Feature
Free Edition
Standard Edition
Professional Edition
Task trace
Yes
Yes
Yes
Interrupt trace
Yes
Yes
Yes
CPU load graph
Yes
Yes
Yes
Multiple trace views
Yes
Yes
Yes
Finder feature
Limited
Yes
Yes
Kernel object events shown in trace (queues, semaphores, …)
No
Yes
Yes
Highlighting of related event labels
No
Yes
Yes
User events shown in trace (yellow labels)
No
Yes
Yes
Event Log
No
Yes
Yes
Multiple views on common timeline
No
Yes
Yes
Statistics Report
No
Limited
Full
Memory Heap Utilization
No
No
Yes
Communication flow graph
No
No
Yes
Queue utilisation
No
No
Yes
Kernel object history
No
No
Yes
Event labels linked to related views
No
No
Yes
User Event Signal Plot
No
No
Yes
User Event Log
No
No
Yes
Scheduling intensity
No
No
Yes
Kernel call intensity
No
No
Yes
Kernel blocking time
No
No
Yes
Instance timing graphs
No
No
Yes