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?
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.