mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-12 17:17:44 -04:00
MicroblazeV9: Add support for generation of run time task stats
Signed-off-by: Mubin Usman Sayyed <mubin.usman.sayyed@xilinx.com>
This commit is contained in:
parent
8bff603451
commit
48ae2df324
1 changed files with 42 additions and 0 deletions
|
@ -58,6 +58,13 @@ FSR register is saved as part of the task context. portINITIAL_FSR is the value
|
||||||
given to the FSR register when the initial context is set up for a task being
|
given to the FSR register when the initial context is set up for a task being
|
||||||
created. */
|
created. */
|
||||||
#define portINITIAL_FSR ( 0U )
|
#define portINITIAL_FSR ( 0U )
|
||||||
|
/*
|
||||||
|
* Global counter used for calculation of run time statistics of tasks.
|
||||||
|
* Defined only when the relevant option is turned on
|
||||||
|
*/
|
||||||
|
#if (configGENERATE_RUN_TIME_STATS==1)
|
||||||
|
volatile uint32_t ulHighFrequencyTimerTicks;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -403,6 +410,19 @@ extern void vApplicationClearTimerInterrupt( void );
|
||||||
/* Ensure the unused parameter does not generate a compiler warning. */
|
/* Ensure the unused parameter does not generate a compiler warning. */
|
||||||
( void ) pvUnused;
|
( void ) pvUnused;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The Xilinx implementation of generating run time task stats uses the same timer used for generating
|
||||||
|
* FreeRTOS ticks. In case user decides to generate run time stats the tick handler is called more
|
||||||
|
* frequently (10 times faster). The timer/tick handler uses logic to handle the same. It handles
|
||||||
|
* the FreeRTOS tick once per 10 interrupts.
|
||||||
|
* For handling generation of run time stats, it increments a pre-defined counter every time the
|
||||||
|
* interrupt handler executes.
|
||||||
|
*/
|
||||||
|
#if (configGENERATE_RUN_TIME_STATS == 1)
|
||||||
|
ulHighFrequencyTimerTicks++;
|
||||||
|
if (!(ulHighFrequencyTimerTicks % 10))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
/* This port uses an application defined callback function to clear the tick
|
/* This port uses an application defined callback function to clear the tick
|
||||||
interrupt because the kernel will run on lots of different MicroBlaze and
|
interrupt because the kernel will run on lots of different MicroBlaze and
|
||||||
FPGA configurations - not all of which will have the same timer peripherals
|
FPGA configurations - not all of which will have the same timer peripherals
|
||||||
|
@ -418,6 +438,7 @@ extern void vApplicationClearTimerInterrupt( void );
|
||||||
ulTaskSwitchRequested = 1;
|
ulTaskSwitchRequested = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static int32_t prvInitialiseInterruptController( void )
|
static int32_t prvInitialiseInterruptController( void )
|
||||||
|
@ -461,6 +482,27 @@ int32_t lStatus;
|
||||||
|
|
||||||
return lStatus;
|
return lStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if( configGENERATE_RUN_TIME_STATS == 1 )
|
||||||
|
/*
|
||||||
|
* For Xilinx implementation this is a dummy function that does a redundant operation
|
||||||
|
* of zeroing out the global counter.
|
||||||
|
* It is called by FreeRTOS kernel.
|
||||||
|
*/
|
||||||
|
void xCONFIGURE_TIMER_FOR_RUN_TIME_STATS (void)
|
||||||
|
{
|
||||||
|
ulHighFrequencyTimerTicks = 0;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* For Xilinx implementation this function returns the global counter used for
|
||||||
|
* run time task stats calculation.
|
||||||
|
* It is called by FreeRTOS kernel task handling logic.
|
||||||
|
*/
|
||||||
|
uint32_t xGET_RUN_TIME_COUNTER_VALUE (void)
|
||||||
|
{
|
||||||
|
return ulHighFrequencyTimerTicks;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue