measurement of whole OS efficiency, advice
Posted by Nobody/Anonymous on October 20, 2006
//------------------------------------------------------------------------------------------------------------------------------- idleTask
static u32_t cpu_free_time = 0;
void vApplicationIdleHook( void );
void vApplicationIdleHook( void )// for tests only, there must not be vTaskDelay
{
#if DEVBRD
AT91C_BASE_PIOA->PIO_SODR = LED_BT;
#endif
portENTER_CRITICAL();
cpu_free_time++;
portEXIT_CRITICAL();
}
//----------------------------------------------------------------------------------------------
static void vUserTask( void *pvParameters );
static void vUserTask( void *pvParameters )
{
(void) pvParameters;
static char LEDblink = 0;
static u32_t cpu_time;
#defineledblink(led)if (LEDblink) ledon(led); else ledoff(led)
while (1) {
LEDblink ^= 1;// switch blinking
//-------------------------------------------------------------------------------------------- OS control state LED
ledblink(LED_WORK);
vTaskDelay(( portTickType ) 500/*ms*/);// disable for debug vTaskUser stack...
//kprintf("usrSP: %d\n", vGetSP());// debug
// measure of cpu free time
portENTER_CRITICAL();
cpu_time = cpu_free_time;
cpu_free_time = 0;
portEXIT_CRITICAL();
kprintf("cpu free: %lu\n", cpu_time);
}// while(1)
}
if cpu free = 0, you should correct your tasks, for example:
while(1) vTaskDelay(50);
instead of
while(1);
best regards
Janusz
RE: measurement of whole OS efficiency, advic
Posted by
Neil Bradley on October 20, 2006
As an aside, what is the point of this:
static void vUserTask( void *pvParameters );
static void vUserTask( void *pvParameters )
{
...
}
Putting the function prototype right above the function itself?
RE: measurement of whole OS efficiency, advice
Posted by Nobody/Anonymous on October 21, 2006
I have this function in main.c file. Thus, I have not prototype in header file and I wanted to avoid compiler warning...
Janusz