FreeRTOS+TRACE

General information regarding the TRACE feature of FreeRTOS: When using FreeRTOS+TRACE I noticed that the run time behavior as represented graphically is limited to a certain time interval after which it stops. What is the total time duration of the TRACE? Does running the TRACE feature by using vTraceInitTraceData() and uiTraceStart() macros affect the overall performance of FreeRTOS? Regards, Owais.

FreeRTOS+TRACE

The amount of time you can trace depends on the amount of RAM you allocate to the trace buffer. You can use the trace buffer to capture a trace and then stop when it is full, or you can use it as a circular buffer – in which case it will run continuously, over writting the oldest data. The circular buffer method is normal for debugging (as you can capture the activity prior to an event of interest, and the event of interest can be used to stop the trace), the single buffer is normal for optimisation. Yes – the tracing runs as macros, so there is more code to run, and therefore it does impact the run time of functions. Regards.

FreeRTOS+TRACE

Thank you for your prompt response. How can I use the RAM allocated for the tracing buffer to be used as a circular buffer and where is this setting defined? Regards.

FreeRTOS+TRACE

Look in your trcConfig.h header file – there are lots of settings to play with in there. In this case the one you are looking for is:

define TRACERECORDERSTORE_MODE

which should be set to TRACESTOREMODERINGBUFFER Regards.

FreeRTOS+TRACE

Okay got it thank you very much. Regards.

FreeRTOS+TRACE

Hello, I am having an error while trying to read trace via FreeRTOS+TRACE. The message goes as follows: Failed to load trace: Incomplete trace data (ended early). Increase range of the RAM dump! Could someone please tell me how to increase the RAM dump. Regards, Owais

FreeRTOS+TRACE

This is set in the trcconfig.h header file but your issue could be due to a mismatch of versions. If you are using FreeRTOS v8 then please also ensure you are using the latest version of FreeRTOS+Trace. Regards.

FreeRTOS+TRACE

The issue is infact related to the configuration in trcconfig.h as I was able to get a trace earlier without any problem with the same version of FreeRTOS and FreeRTOS+TRACE. I have tried changing the event buffer siye to 6000 and symbol table size to 600 but still the same error pops up. is there anything else that I can do to fix it? I am running FreeRTOS version 7.3 and currently I have 9 tasks running including Ethernet CAN UART SPI Timer Counter some blinking LEDs. Each task is running properly with 500 stack size dedicated to each. Could it be that there is not enough space for TRACE? Please let me know. Regards, Owais.

FreeRTOS+TRACE

How are you obtaining the RAM buffer? Are you manually specifying a length, and if so have you tried increasing the length? Try setting the length to a much higher value than you think is necessary because the tool should automatically find the start and end of the valid data within the memory you obtain. Regards.

FreeRTOS+TRACE

I am not obtaining the buffer rather I am using the FreeRTOS+TRACE tool to capture the trace. It was working properly until I added the Ethernet task after which as soon as I click on read trace in FreeRTOS+TRACE the message pops “Failed to load trace: Incomplete trace data (ended early). Increase range of the RAM dump!”. I have tried increasing the EventBufferSize defined in trcconfig.h to 6000 it cannot exceed 6980 previously it was defined as 4000. I have also tried to increase the SymbolTableSize also defined in trcconfig.h to 600 previously defined as 400 but no use. Any more suggestions? Regards, Owais.

FreeRTOS+TRACE

It could be possible that something in the Ethernet or driver is corrupting the trace data buffer. It might be worth sending the log file to Percepio’s support address to see if they can diagnose the problem. Regards.

FreeRTOS+TRACE

Okay thank you, where exactly can I get the log file? Moreover, it might be worth mentioning that I am using Atmel SAM3X and the debugger is Atmel SAM-ICE. The debugger is set to read the trace starting from the address 0x20000000 and the bytes to read are 0x10000. Should these setting be changed? Regards, Owais.

FreeRTOS+TRACE

Sorry I was not very clear in my last post – I was replying form my cell phone so it was not easy. I was meaning to send the RAM dump to Percepio not the log file, so the file you are trying to open when it says it cannot find the end of the trace. Normally when I extract the trace file from the target I do it manually and use the address of the structure that contains the trace buffer as the start address. If this is placed at 0x200000000 then using that value should be fine. Also, if the trace buffer just happens to be between 0x200000000 and 0x20010000 then you values will be fine. If the trace buffer is not between those values then the tool will be correct in saying it can’t find the data in the file you are providing it. Regards.

FreeRTOS+TRACE

Hello, Is it possible to see the exact execution time for a particular task in the Control-Flow Trace window? Since it just shows different tasks running and does not present more information as the older version of Percepio Trace used to do. Regards

FreeRTOS+TRACE

Hello Owais, You are refering to the integrated “Percepio Trace” in Atmel Studio, right? This was developed for Atmel specifically, and is NOT intended as a replacement for FreeRTOS+Trace. There are some similar functions, but Percepio Trace has a quite different feature set compared to FreeRTOS+Trace and our other Tracealyzer products. Best Regards Johan Kraft Percepio AB

FreeRTOS+TRACE

Thank you for your prompt response. Yes I am talking about the integrated Trace feature in Atmel Studio 6.2. So that means that unlike FreeRTOS+TRACE the integrated trace feature is not capable of displaying execution time and other information related to tasks? Is it possible to use the FreeRTOS+TRACE with FreeRTOS v8? What would you suggest would be a good way to measure the execution time of a task? Also in the Tutorial video of integrated trace named “Atmel: Debugging on Studio 6.2 with Percepio Trace” I can see that there is a function used to print out information in the Control-Flow Trace window. The function is called SWOprintstring where can I find it? Regards.