“Fornire un prodotto gratuito che superi la qualità e il servizio richiesti dagli utenti delle alternative commerciali”
Gli sviluppatori dedicati di FreeRTOS hanno lavorato in stretta collaborazione con le principali aziende di chip del mondo per più di 15 anni per fornirvi RTOS e strumenti di alta qualità, leader di mercato, di livello commerciale e completamente gratuiti….ma cos’è un RTOS?
Questa pagina inizia definendo un sistema operativo, poi lo raffina per definire un sistema operativo in tempo reale (RTOS), poi lo raffina ancora una volta per definire un kernel real timer (o real time executive).
Si veda anche la voce delle FAQ “perché un RTOS” per informazioni su quando e perché può essere utile usare un RTOS nella progettazione del software per sistemi embedded.
Cos’è un sistema operativo generico?
Un sistema operativo è un programma per computer che supporta le funzioni di base di un computer e fornisce servizi ad altri programmi (o applicazioni) che girano sul computer. I servizi forniti dal sistema operativo rendono la scrittura delle applicazioni più veloce, più semplice e più manutenibile.Se state leggendo questa pagina web, allora state usando un browser web (il programma applicativo che fornisce la funzionalità che vi interessa), che sarà esso stesso in esecuzione in un ambiente fornito da un sistema operativo.
Cos’è un RTOS?
La maggior parte dei sistemi operativi sembra consentire l’esecuzione di più programmi allo stesso tempo. Questo è chiamato multi-tasking. In realtà, ogni core del processore può eseguire solo un singolo thread di esecuzione in qualsiasi momento.Una parte del sistema operativo chiamata scheduler è responsabile di decidere quale programma eseguire quando, e fornisce l’illusione dell’esecuzione simultanea passando rapidamente tra ogni programma.
Il tipo di un sistema operativo è definito da come lo scheduler decide quale programma eseguire quando. Per esempio, lo scheduler usato in un sistema operativo multiutente (come Unix) assicurerà che ogni utente ottenga una giusta quantità di tempo di elaborazione. Come altro esempio, lo scheduler in un sistema operativo desktop (come Windows) cercherà di assicurare che il computer rimanga reattivo al suo utente.
Lo scheduler in un sistema operativo in tempo reale (RTOS) è progettato per fornire un modello di esecuzione prevedibile (normalmente descritto come deterministico). Un requisito di tempo reale è uno che specifica che il sistema incorporato deve rispondere a un certo evento entro un tempo strettamente definito (la scadenza).Una garanzia di soddisfare i requisiti di tempo reale può essere fatta solo se il comportamento dello scheduler del sistema operativo può essere previsto (ed è quindi deterministico).
Scheduler tradizionali di tempo reale, come lo scheduler usato in FreeRTOS, raggiungono il determinismo permettendo all’utente di assegnare una priorità a ogni thread di esecuzione. Lo scheduler poi usa la priorità per sapere quale thread di esecuzione eseguire dopo. In FreeRTOS, un thread di esecuzione è chiamato task.
Che cos’è FreeRTOS?
FreeRTOS è una classe di RTOS che è progettata per essere abbastanza piccola da funzionare su un microcontrollore – sebbene il suo uso non sia limitato alle applicazioni per microcontrollori.
Un microcontrollore è un processore piccolo e con risorse limitate che incorpora, su un singolo chip, il processore stesso, la memoria di sola lettura (ROM o Flash) per contenere il programma da eseguire, e la memoria di accesso casuale (RAM) necessaria ai programmi che esegue. Tipicamente il programma viene eseguito direttamente dalla memoria di sola lettura.
I microcontrollori sono usati in applicazioni strettamente embedded (quelle applicazioni dove non si vedono mai i processori stessi, o il software che stanno eseguendo) che normalmente hanno un lavoro molto specifico e dedicato da fare. I vincoli di dimensione e la natura dell’applicazione finale dedicata, raramente garantiscono l’uso di un’implementazione RTOS completa – o addirittura rendono possibile l’uso di un’implementazione RTOS completa.FreeRTOS fornisce quindi solo le funzionalità di base per la programmazione in tempo reale, la comunicazione inter-task, la tempistica e le primitive di sincronizzazione. Questo significa che è più accuratamente descritto come un kernel in tempo reale, o un esecutivo in tempo reale. Funzionalità aggiuntive, come un’interfaccia console di comando, o stack di rete, possono essere inclusi con componenti aggiuntivi.
Prossimo: Fondamenti di RTOS