Real-time

Salve a tutti!

Sentite volevo chiedervi gentilmente se fosse possibile spiegarmi un aspetto di Arduino.

Arduino ha un microcontrollore con un bootloader installato. Il bootloader di solito serve a caricare un kernel o un sistema operativo. Dentro Arduino cosa viene caricato? Ha un suo kernel?

Ve lo chiedo per capire cosa e chi gestisce l'esecuzione in real-time dei programmi caricati. Ho visto che il microcontrollore ha un Real Time Counter ma non ho capito chi lo gestisce, perchè di solito è il sistema operativo che qui però non c'è.

Grazie a tutti!

Non c'è nessun kernel o sistema operativo già inserito, semplicemente il bootloader passa l'esecuzione alle istruzioni che carichiamo noi.
Il Real Time Counter è realizzati in hardware dal micro.

Ciao

Il bootloader controlla dopo il reset se c'é un PC collegato che vuole caricare un sketch (per esempio tramite il IDE). Se non ci sono upload il bootloader termina il suo lavoro e il microcontroller passa a eseguire lo sketch caricato senza passare piú al bootloader.

Ciao Uwe

il Real Time Counter e' solo un contatore, che puo' essere usato ad esempio con un quarzo da 32k per fare un orologio, non c'entra nulla con il real time che intendi tu :slight_smile:

capt_7:
Salve a tutti!

Sentite volevo chiedervi gentilmente se fosse possibile spiegarmi un aspetto di Arduino.

Arduino ha un microcontrollore con un bootloader installato. Il bootloader di solito serve a caricare un kernel o un sistema operativo. Dentro Arduino cosa viene caricato? Ha un suo kernel?

La memoria flash dell'Atmega328 presente sull'Arduino è divisa in due porzioni, una contiene un codice che viene eseguito al reset del microcontrollore, l'altra un altro codice. Nell'Arduino la prima contiene un software che viene denominato "bootloader" e che serve a cambiare il programma contenuto nell'altra sezione di memoria direttamente dal bootloader stesso. Ciò avviene quando, all'avvio, si spedisce tramite IDE un nuovo sketch: il bootloader, che risiede nell'area di memoria che viene letta per prima, controlla se sulla seriale arriva un nuovo programma. Se la risposta è positiva, scrive il programma nell'altra area di memoria, altrimenti avvia il programma che essa contiene.

Di per sé non c'è nessun kernel o sistema operativo preinstallato. Esistono alcuni progetti di RTOS, più o meno complessi, più o meno liberi.

Ve lo chiedo per capire cosa e chi gestisce l'esecuzione in real-time dei programmi caricati. Ho visto che il microcontrollore ha un Real Time Counter ma non ho capito chi lo gestisce, perchè di solito è il sistema operativo che qui però non c'è.

Grazie a tutti!

Il Real Time Counter di cui hai letto altro non è che modulo del microcontrollore agganciato ad un contatore interno. Un contatore, o timer, è un registro del microcontrollore che può essere aggiornato da diversi "eventi". Nel caso del Real Time Counter, questo modulo viene agganciato al timer 2 in modalità asincrona, ossia il cui clock è fornito non dal clock di sistema ma da una fonte di clock esterna. Questo modulo è nato per operare con i quarzi a 32768 Hz: impostando il prescaler (cioè il divisore di clock) del timer, si può ottenere un contatore particolarmente preciso.