Calculate Task Execution Time

engmmostafa80 wrote on Wednesday, March 12, 2014:

I want to know a simple method to calculate running task execution time.
Is there any FREE RTOS API can do this?

rtel wrote on Wednesday, March 12, 2014:

There are several ways of doing this, but in each case you need to supply a fast clock as a time base. The fast clock needs to provide time at a rate many times higher than the tick count increment, otherwise you will not get the resolution you need.

If you are using a Cortex-M then a convenient method is to use the cycle counter from the debug circuitry - if you are using Cortex-M (would have been easier if you had stated which chip you were using in your original question) then let me know and I can point you in the direction of the appropriate code. Otherwise here is a generic page on the subject:

http://www.freertos.org/rtos-run-time-stats.html

In addition you can define the traceTASK_SWITCHED_IN or traceTASK_SWITCHED_OUT macros to do whatever you want, including keeping your own run time date. Finally you could the FreeRTOS+Trace tool.

Regards.

engmmostafa80 wrote on Wednesday, March 12, 2014:

I am using Cortex-M3 (Atmel SAM3U4E).
FreeRTOS Resolution of 1 ms is very small to what I want to measure. It will be good if I have a resolution of 50-100 Micro Sec if possible.

rtel wrote on Wednesday, March 12, 2014:

You can use the run-time stats implementation found in the SAM4E demo. Look at the file RunTimeStatsTimer.c in FreeRTOS\Demo\CORTEX_M4_ATSAM4E_Atmel_Studio\src, and the run time stats related FreeRTOSConfig.h settings in FreeRTOS\Demo\CORTEX_M4_ATSAM4E_Atmel_Studio\src\config\FreeRTOSConfig.h.

Regards.