Usare il multitasking di FreeRTOS su Arduino
Background
La maggior parte dei sistemi operativi consente l’esecuzione simultanea di più programmi o thread, ovvero permette il multi-tasking.
Ma in realtà, ogni core del processore può eseguire un solo programma in un dato momento, è grazie ad una parte del sistema operativo chiamato scheduler (responsabile della decisione su quale programma eseguire) che fornisce l’illusione dell’esecuzione simultanea passando rapidamente da un programma all’altro.
Lo scheduler in un sistema operativo in tempo reale (RTOS) è progettato per fornire un modello di esecuzione prevedibile (normalmente descritto come deterministico). Ciò è particolarmente interessante per i sistemi embedded, come i dispositivi Arduino, poiché i sistemi embedded hanno spesso requisiti in tempo reale.
Gli scheduler tradizionali in tempo reale, come lo scheduler utilizzato in FreeRTOS, consentono all’utente di assegnare una priorità a ciascun thread di esecuzione.
Lo scheduler utilizza quindi la priorità per sapere quale thread verrà eseguito successivamente.
In FreeRTOS, un thread di esecuzione è chiamato Task.