10-15-2019 02:54 AM
Hi, I'm new to Microblaze but I've used FreeRTOS on a number of occasions. One of the benefits of the RTOS is the ablility to hook into the event tracing capability of the host IDE. I've looked at a number of sources on assessing performance with the Xilinx SDK and FreeRTOS and they state that I should be able to see the debugger connection in the "Trace Session Manager" (TSM) window of SDK. I've enabled tracing in the BSP but I see nothing in the TSM window. Does anyone have any practical experience of profiling/tracing a FreeRTOS application on a Microblaze to the point of assessing context switching and execution times (not performance)? In the past I've used Timedoctor (sourceForge.net/projects/timedoctor) to tap into the FreeRTOS trace support but I'd prefer to use something that's native to Xilinx/SDK.
Thanks in advance - Dave
10-15-2019 03:37 AM
10-16-2019 01:28 AM
I followed the article to the letter and I did see "System Debugger using Debug_freertos.elf on local" in the Trace Session Manager window - before the window was blank. Unfortunately I couldn't start the trace process off as the "play" button and the context menu were both greyed out. I did see somwhere that GDB needs to be used for this to work correctly but when I used GDB I saw the same behaviour.
Are there any example projects that I can import (I'm using Vivado 2019.1 and running on a Kintex-7 KC705 development kit)? I can refactor my project to run bare-metal - is there any way I can "hijack" the trace capability of the Microblaze/SDK to give me a profile/througput/timing assessment through my adding "start" and "stop" events around function calls of interest?
Thanks for your support.
10-17-2019 04:24 AM
Since you talked about FreeRTOS trace hooks, I assumed that you were interested in event trace thru CoreSight STM. This trace view can only provide a timeline of FreeRTOS OS events (ex. task created/suspended/deleted, etc.)
If you are looking for profiling your code, you may want to consider gprof and TCF based profiling. gprof is intrusive, and is supported only thru GDB debug. TCF trace is non-intrusive, unless you want enable stack tracing. Both these methods profile the entire code - there is no provison to start/stop tracing for specific functions. See the links below for additional details