Problem creating task

jordiblasi wrote on Friday, July 29, 2016:

I am using Freertos on a Intel Galileo Gen 2 board and I am having problems to launch a task. I have a reduced version of the demo main.c just eliminating the references to the demos. I have correctly compiled an run different functions but when I try to launch a Task, as described in the documentation I see no sign of it actually running. This is the code I am testing:

void frogaTask (void *pvParameters ){
	( void ) pvParameters;
	g_printf("GET IN");

	 for ( ;; ){
		 g_printf("LOOP");
	 }
	 vTaskDelete( NULL );
}


int main( void )
{
	/* Optionally wait for a debugger to connect. */
	prvLoopToWaitForDebugConnection();

	/* Init the UART, GPIO, etc. */
	prvSetupHardware();
	g_printf("1");
	BaseType_t ret = xTaskCreate( frogaTask, "Froga" , configMINIMAL_STACK_SIZE , NULL, tskIDLE_PRIORITY + 1, NULL );
	g_printf("2");
	/* Start the tasks and timer running. */
	vTaskStartScheduler();
	g_printf("3");
	return 0;
}

When I run it i see nothing on the teminal but the 1 and 2 numbers. This means that Task is actually created (I have checked that ret has a 1 value, what I understand is a correct output) and Scheduler runs and never returns control, what I think is correct, but I don’t see the “GET IN” and “LOOP” messages.

What I am missing? How can I get some visibility of what is going on?

Thanks

rtel wrote on Saturday, July 30, 2016:

If you stop the debugger, what code is executing? Could you be in an assert() (ensure configASSERT() is defined), or in a stack overflow hook (ensure stack overflow checking is set to 2).

What happens if you toggle an LED instead of calling g_printf() in the task? Use a delay so you can see the LED toggling, something like:

for( ;; )
{
    ToggleLED(); /* whatever the function is really called).
    vTaskDelay( pdMS_TO_TICKS( 500 );
}