The Running Snail car team is back for another season

You may have heard about "Running Snail", a team of German university students building an electric race car as a school project – we blogged about them last year. Now they're at it again, they will build a new car for the 2017/18 competitive season, and of course Percepio will continue to sponsor the team with licenses [...]

June 14th, 2017|Categories: Blog|Tags: , , , , |

Upgrading the Trace Recorder to v3.1

The improved trace recorder library is the biggest change in Tracealyzer v3.1, at least for FreeRTOS, Micrium and SafeRTOS. We have merged snapshot and streaming support into a single recorder module that support both modes, and improved the API and documentation to make it easier to use. If you are using an older version of the [...]

November 22nd, 2016|Categories: FAQ|Tags: , , , , , |

How much processor time is used by the recorder?

Software-based tracing always means some processing overhead, where the exact amount is f x e, where f is the average event frequency and e is the average execution time for storing an event. This is very dependent on your application and processor. The more RTOS calls, the larger overhead. The faster processor, the less overhead. Let's put in some [...]

February 3rd, 2016|Categories: FAQ|Tags: , , |

How does the floating licenses work?

Floating network licenses offer a flexible licensing solution for most development teams. With a floating license, you can install the tool on any number of computers, but the number of concurrent users is limited by the license server. Our floating licenses have a linger time, i.e., a minimum session time during which the license is [...]

January 30th, 2015|Categories: FAQ|Tags: , , , , , , |

Got error “uiTraceGetPriorityProperty: Invalid value for id”

If asserts are enabled the recorder configuration (trcConfig.h), this error is generated in uiTraceGetPriorityProperty when a task has an "object handle" value larger than expected. Our FreeRTOS recorder assignes each task an 8-bit "object handle" (the "id" parameter in uiTraceGetPriorityProperty), which should be in the range [1..NTask]. The NTask constant is defined in trcConfig.h and [...]

December 19th, 2014|Categories: FAQ|Tags: , , |

How to define critical sections for the trace recorder?

Our Tracealyzer versions for microcontroller RTOS uses Percepio's own recorder library, which uses separate definitions for critical sections within the recorder. This since the standard critical sections offered by some RTOS kernels, like portENTER_CRITICAL/portEXIT_CRITICAL in FreeRTOS, might not safe to use from interrupt (kernel) context. Some recorder functions are called both from task-level and interrupt-level [...]

October 27th, 2014|Categories: FAQ|Tags: , , |

How to upload traces from RAM in Keil µVision?

The upcoming version 2.7 of FreeRTOS+Trace contains a demo project for Keil µVision and the STM32F400. Related to this, we like to highlight a smart solution for how to save the trace data in Keil µVision, provided by our partner Antycip. Many thanks, Julien! If you don't have a J-Link or Atmel SAM-ICE debugger (for [...]

August 22nd, 2014|Categories: FAQ|Tags: , , |


To trace the execution of exception/interrupt handlers (ISRs), you need to call vTraceStoreISRBegin and vTraceStoreISREnd in the beginning and in the end of the handler function. The vTraceStoreISREnd routine normally assumes a return to the previously executing task. But sometimes another ISR is pending and executes in direct sequence, making this assumption incorrect. For instance, ARM Cortex-M devices [...]

March 21st, 2014|Categories: FAQ|Tags: |

Why do I get “error: ‘uxPendedTicks’ undeclared”?

If you get this error when compiling the recorder, you are probably using an older version of FreeRTOS (v7.5.x or earlier) together with a newer version of the recorder library. The FreeRTOS variable 'uxPendedTicks' was before v7.5.2 named 'uxMissedTicks', so you need to replace uxPendedTicks with uxMissedTicks in the definition of traceTASK_INCREMENT_TICK in trcKernelPort.h Update: [...]

March 6th, 2014|Categories: FAQ|Tags: |

Why do I get “Failed to load trace: Invalid control marker value (debug marker 1)”

This means that something that appears to be trace data was found in the RAM dump, but with some difference in the expected data format. This typically occurs if you are using an older version of the application (e.g, FreeRTOS+Trace or µC/Trace) with a newer version of the recorder. We have received several questions about [...]

March 4th, 2014|Categories: FAQ|Tags: , , |

What hardware platforms are supported?

The recorder library can be used on any 32-bit microcontroller system that meets the following requirements: Contains a high resolution time source (a timer/counter or similar). Only read access is required, so the OS tick timer can be used. 16 KB of Flash available (can be scaled down to 6 KB in minimum configuration) At [...]

October 21st, 2013|Categories: FAQ|Tags: , , |

What debuggers are supported?

If you have a J-Link debug probe, the viewer application can access this directly to download the trace. In other case, most debugger are able to store RAM contents to a file that can be read by FreeRTOS+Trace, SafeRTOS+Trace and µC/Trace. Binary (".bin"), Intel Hex (".hex") and ".mch" formats are supported. These can be generated [...]

October 20th, 2013|Categories: FAQ|Tags: , , |

How much FLASH does the trace recorder need?

The below table shows an example, using version 2.5.1 of the recorder library, compiled for ARM Cortex M4 (Atmel SAM4S16C) using ARM GCC v4.7.3. Recorder configuration Compiler optimization Flash usage Basic features -Os (minimum size) 5,788 byte Basic features -O3 (maximum speed) 6,840 byte All features -Os (minimum size) 13,368 byte All features -O3 (maximum [...]

October 18th, 2013|Categories: FAQ|Tags: , , |

How do I enable tracing of interrupt handlers?

Interrupt handlers (ISRs) are not recorded by default. To record ISRs, you need to add two calls in the interrupt handlers you wish to record, vTraceStoreISRBegin in the very beginning and vTraceStoreISREnd in the very end. See trcUser.h for further information. The parameter of vTraceStoreISRBegin is a unique numeric ISR ID that you select yourself, [...]

October 17th, 2013|Categories: FAQ|Tags: , , |

What does the label “ISR using …” mean?

If you have interrupt handlers using interrupt-level kernel functions, but are not calling vTraceStoreISRBegin and vTraceStoreISREnd, the recorder assumes that the kernel call was made from an interrupt handler, but does not know the identity of the interrupt handler. In this case, the name is set to "ISR using ", where is the queue or [...]

October 15th, 2013|Categories: FAQ|Tags: , , |

How do I set custom names for queues (and other kernel objects), instead of the default names (“Queue #1” etc.)

Use vTraceSetQueueName, vTraceSetSemaphoreName or vTraceSetMutexName, as in the below example: actuatorQ = xQueueCreate(3, sizeof(QueueMessage) ); if (actuatorQ != NULL) { vTraceSetQueueName(actuatorQ, "ActuatorQueue"); // Set the name ... } else { ... // Error handling }

October 14th, 2013|Categories: FAQ|Tags: , , |

The trace does not load correctly, what is wrong?

Check the following things: 0) Are you using an updated OS kernel with the instrumentation needed by the recorder? 1) Has the trace initialization function been called? This must be called early, before calling any kernel or recorder function. 2) Has the trace recorder been started/triggered? 3) Have you integrated the recorder properly in your [...]

October 13th, 2013|Categories: FAQ|Tags: , , |

Some trace files can’t be opened, what is wrong? (ARM Cortex-R4)

If using memory protection (MPU) on ARM Cortex-R4 devices, the debugger can't read kernel-space data (including the trace data) when in user-space code. If this is the case, your trace file (RAM dump) will only contain the byte pattern 0xBAD0BAD0 instead of the trace data. If you experience this problem, make sure to break the [...]

October 12th, 2013|Categories: FAQ|Tags: , , |

Where do I find FreeRTOS+Trace Free Edition?

Both editions are included in our single FreeRTOS+Trace installer. Using the Free Edition does not require a license key. Just use the "Evaluate" option initially and take the opportunity to explore the premium features. When the evaluation period ends, the "Evaluate" button is changed to "Free Edition".

October 8th, 2013|Categories: FAQ|Tags: |

What is the difference between FreeRTOS+Trace Free Edition and Professional Edition?

The Free Edition gives you a scheduling trace, i.e., the relative timing of tasks and interrupts, and some timing statistics. Professional Edition gives you much more functionality. The trace view then also shows kernel calls (e.g., queue and mutex operations), user events (application logging events), and more than graphical views showing different aspects of this [...]

October 7th, 2013|Categories: FAQ|Tags: |

What is your relation to FreeRTOS?

Percepio is a member of the FreeRTOS+ program, intended for commercial add-ons to FreeRTOS. The name FreeRTOS+Trace is a trademark of Percepio AB and is used with permission from Richard Barry at FreeRTOS.org/Real Time Engineers, Ltd.

October 6th, 2013|Categories: FAQ|Tags: |