FreeRTOS CLI su Arduino Mega 2560

Buongiorno a tutti,

ho scaricato la libreria freertos per arduino dal link GitHub - feilipu/Arduino_FreeRTOS_Library: A FreeRTOS Library for all Arduino AVR Devices (Uno, Leonardo, Mega, etc).

L'ho caricata nella cartella libraries e correttamente utilizzata all'interno dell'IDE andando a implementare l'esempio che ascquisisce un canare analogico e fa blinkare il led onboard della scheda.

Ora mi chiedevo se è possibile avere una sorta di shell sulla seriale, che se non sbaglio o non ho capito male, in questi sistemi viene chiamata command line interface CLI, corretto?

Ci sono librerie aggiuntive da scaricare e compilare, o va fatto tutto a mando con dei comandi di lettura e scrittura di testo e caratteri su seriale?

Da solo senza un codice guida non sarei capace di farlo perchè mi sto avvicinando pian piano a Freertos per la sua possibilità di gestione dei task e del "tempo" con il timer integrado al microcontrollore.

Vi sarei grato se mi aiutaste meglio a capire cosa c'è dietro.

Grazie a tutti voi. Saluti.

velvettiere:
ho scaricato la libreria freertos per arduino dal link GitHub - feilipu/Arduino_FreeRTOS_Library: A FreeRTOS Library for all Arduino AVR Devices (Uno, Leonardo, Mega, etc).

Male, le librerie si installano dal Library Manager dell'IDE (lo avremo detto cento volte) ... in questo modo non solo sei sicuro di installare l'ultima release, ma puoi sempre mantenerla aggiornata (sempre da dentro l'IDE).

velvettiere:
Ora mi chiedevo se è possibile avere una sorta di shell sulla seriale, che se non sbaglio o non ho capito male, in questi sistemi viene chiamata command line interface CLI

In che senso una CLI ? ? ? :o
Il programma lo stai scrivendo TU qundi se devi gestire dei comandi da porta seriale, sarà un tuo "task" che si occuperà di tale gestione (la seriale è normalmente utilizzabile con FreeRTOS).

Guglielmo

P.S.: FreeRTOS è uno strumento molto potente, completo e ... complesso. Mi permetto, senza volermi fare pubblicità (fortunatamente non ne ho bisogno :grin: ), di suggeriti di seguire un corso ... vedi QUI :slight_smile:

gpb01:
Male, le librerie si installano dal Library Manager dell'IDE (lo avremo detto cento volte) ... in questo modo non solo sei sicuro di installare l'ultima release, ma puoi sempre mantenerla aggiornata (sempre da dentro l'IDE).

grazie della segnalazione. Provvedo subito a reinstallarla nel modo corretto.

gpb01:
In che senso una CLI ? ? ? :o
Il programma lo stai scrivendo TU qundi se devi gestire dei comandi da porta seriale, sarà un tuo "task" che si occuperà di tale gestione (la seriale è normalmente utilizzabile con FreeRTOS).

No pensavo che esistesse già una sorta di codice sviluppato per interagire via seriale con arduino come se avessi la shell linux per intenderci. Mi spiego meglio. Mi piacerebbe trovare delle righe di codice già scritte per avere una cosa cosi:

ARDUINO@VELVETTIERE> .....

che rimanga in attesa di comandi che gli passo per fargli interpretare ed eseguire qualcosa. Chiaramente gli IF su quello che scrivo io per riconoscere il comando e quindi il task da gestire li devo scrivere io, però la struttura di codice per arrivare ad avere un task che gestisca la seriale e rimanga in attesa di un mio comando mi piacerebbe averlo/trovarlo già pronto per studiarmelo e capire come funziona il codice.

gpb01:
P.S.: FreeRTOS è uno strumento molto potente, completo e ... complesso. Mi permetto, senza volermi fare pubblicità (fortunatamente non ne ho bisogno :grin: ), di suggeriti di seguire un corso ... vedi QUI :slight_smile:

Spettacolare. Sostengo che non sia pubblicità ma condivisione, che è la cosa più importante.

Grazie mille di tutto.

Saluti.

velvettiere:
No pensavo che esistesse già una sorta di codice sviluppato per interagire via seriale con arduino come se avessi la shell linux per intenderci. Mi spiego meglio. Mi piacerebbe trovare delle righe di codice già scritte per avere una cosa cosi:

ARDUINO@VELVETTIERE> .....

No, non esiste e NON ha senso ...
... FreeRTOS™ è un sistema operativo "Real Time" con "tempi predeterminati" e comportamento "deterministico" per MCU, NON un sistema operativo da PC con la console e quant'altro.

Per queste cose prendi un'Arduino Yún ed ha proprio la tua bella console e il tuo Linux :wink:

Guglielmo

gpb01:
No, non esiste e NON ha senso ...

Che non esiste non ci credo, e che non ha senso ancora di più. Permette di interagire con arduino in maniera dinamica, potendo avviare qualunque cosa in maniera "voluta" a richiesta dell'utente.

gpb01:
... FreeRTOS™ è un sistema operativo "Real Time" con "tempi predeterminati" e comportamento "deterministico" per MCU, NON un sistema operativo da PC con la console e quant'altro.

giusto, ma non è detto che non si possa fare qualcosa che assomigli all'interazione dell'utente con un PC. Ad esempio posso generare un task chiamato pippo che testa velocità di lettura e scrittura di una memoria SD card. Questo task lo richiamo da CLI e lo avvio io quando ho bisogno o voglio fare il test.

gpb01:
Per queste cose prendi un'Arduino Yún ed ha proprio la tua bella console e il tuo Linux :wink:

ho visto il prodotto, sembra interessante anche se a questo punto uso raspberry!

Grazie ancora, Valerio.

Valerio, scusa ma, mi pare non ti è chiaro cosa è un Arduino Uno o Mega.
Sono schede di prototipazione per l'elettronica non un "minipc" tipo Yun o Raspberry con un sistema operativo tipo Linux

velvettiere:
Che non esiste non ci credo, e che non ha senso ancora di più. Permette di interagire con arduino in maniera dinamica, potendo avviare qualunque cosa in maniera "voluta" a richiesta dell'utente.

E' più che evidente che tu non sappia cosa è un RTOS e per cosa lo si utilizzi, altrimenti non faresti affermazioni del genere. ::slight_smile: Inoltre è chiaro, come ti ha detto nid69ita che stai confondendo lo scopo di schede del tutto divere.

Credo che sia meglio che tu rimangai su piattaforme Linux che sono più adatte alle esigenze che stai mostrando.

Guglielmo

nid69ita:
Valerio, scusa ma, mi pare non ti è chiaro cosa è un Arduino Uno o Mega.
Sono schede di prototipazione per l'elettronica non un "minipc" tipo Yun o Raspberry con un sistema operativo tipo Linux

Ciao, se non mi fosse stato chiaro non avrei risposto cosi "ho visto il prodotto, sembra interessante anche se a questo punto uso raspberry!"

So bene cosa sia Arduino, ho fatto una domanda in merito a una questione differente dal capire l'HW delle varie board. Comunque capisco che mi sono spiegato male quindi ci sta l'incomprensione. Ti ringrazio comunque per aver risposto. Possiamo dare adito alla conversazione che segue.

Facciamola semplice, semplifico la mia richiesta. La mia idea è quella di accendere un led su un determinato GPIO, lanciando da quella che io chiamo CLI un certo comando tipo "Accendi LED" e parte il task (analogo un po al thread in linux) che accende il led.

ARDUINO@VELVETTIERE> AccendiLed

ARDUINO@VELVETTIERE> Led Acceso correttamente

Come fareste questa cosa?

Io maccheronicamente farei cosi:

"Task che gestisce la CLI"

Scrivo ARDUINO@VELVETTIERE> e faccio rimanere il task in attesa del mio comando da CLI

Da seriale digito "AccendiLed"

if "lettura seriale == AccendiLed"

avvio il task che accende il led e mi ritorna lo stato del GPIO come sorta di avvenuta accensione o errore -1 in C

Scrivo sulla seriale Led Acceso correttamente

else

scrivo sulla seriale "Non è stato possibile accendere il Led"

Mi aiutereste a capire come fare questa cosa?

Grazie mille. Spero di essere stato più possibile chiaro.

Buon pomeriggio

NON di certo con un RTOS che nasce per tutt'altro scopo (e che, ribadisco, tu non hai chiaro) ovvero ... "reagire in tempi prefissati e determinati ad eventi che arrivano dalla sensoristica esterna" (es. nel caso automotive, i sensori degli airbag, quelli dell'ABS, ecc.).

Quello che tu vuoi fare su Arduino è invece una semplicissima applicazione che legge la seriale ed esegue dei comandi ...
... se fai una ricerca qui sul forum ne trovi a decine se non a centinaia.

Guglielmo

Ecco, guarda QUESTA libreria, credo faccia esattamente quello che chiedi (legge comandi dalla seriale e richiama delle funzioni a seguito di tali comandi) ... :wink:

Guglielmo

Ciao a tutti, mi chiamo Michael e sono un Embedded System Engineer.
La domanda di Velvettiere mi sembra chiara ma la risposta è quanto meno incompleta.
Che RTOS nasca per un altro scopo è risaputo, che RTOS non lo preveda è una inesattezza.
Ti consiglio di guardare qui:

Ovviamente il uC su cui fai girare questo codice deve essere sufficientemente "carrozzato" per gestire più task e una comunicazione seriale.

Let me know :wink:

Michael

>bending91: Buongiorno, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Conosco benissimo quanto di cui al link (... sono "istruttore" di corsi FreeRTOS™ :grin:) ... ma qui stiamo parlando di Arduino MEGA ... un oggetto con 4KBytes di SRAM ... ti rendi conto da solo che è una cosa inutile ed improponibile, oltretutto facilmente risolvibile in mille altri modi, senza dover scomodare un RTOS. :wink: