
Originally Posted by
Salem
> I am trying to figure out how scheduler works in the following code
Either
- read the design documentation of freeRTOS.
- read the source code of freeRTOS.
Attempting to reverse engineer the operation of the scheduler is like trying to learn how to cook from one bite of cake.
> I am trying to figure out how scheduler works in the following code
They're executing all the time. If you're not running task1, you're running task2.
Since you gave them both the same priority, the scheduler would seem to round robin it's way through all the ready tasks.
And the tasks will be perpetually either running or ready as you've written them.
When I set same priority for all task's then result of all task's should be same but when I ran my code I am not getting such result
Code:
/* FreeRTOS.org includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "supporting_functions.h"
/* The task functions. */
void vTask1( void *pvParameters );
void vTask2( void *pvParameters );
void vTask3(void* pvParameters);
int main( void )
{
/* Create one of the two tasks. */
xTaskCreate( vTask1, /* Pointer to the function that implements the task. */
"Task 1", /* Text name for the task. This is to facilitate debugging only. */
1000, /* Stack depth - most small microcontrollers will use much less stack than this. */
NULL, /* We are not using the task parameter. */
1, /* This task will run at priority 1. */
NULL ); /* We are not using the task handle. */
/* Create the other task in exactly the same way. */
xTaskCreate( vTask2, "Task 2", 1000, NULL, 1, NULL );
xTaskCreate(vTask3, "Task 3", 1000, NULL, 1, NULL);
/* Start the scheduler to start the tasks executing. */
vTaskStartScheduler();
for( ;; );
return 0;
}
void vTask1( void *pvParameters )
{
const char *pcTaskName = "Task 1 is running\r\n";
for( ;; )
{
/* Print out the name of this task. */
vPrintString( pcTaskName );
}
}
void vTask2( void *pvParameters )
{
const char *pcTaskName = "Task 2 is running\r\n";
for( ;; )
{
/* Print out the name of this task. */
vPrintString( pcTaskName );
}
}
void vTask3(void* pvParameters)
{
const char* pcTaskName = "Task 3 is running\r\n";
for (;; )
{
/* Print out the name of this task. */
vPrintString(pcTaskName);
}
}
Task printing result
Code:
Task 1 is runningTask 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 3 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 1 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running
Task 2 is running