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