Go Down

Topic: FreeRTOS CLI su Arduino Mega 2560 (Read 267 times) previous topic - next topic

velvettiere

Buongiorno a tutti,

ho scaricato la libreria freertos per arduino dal link https://github.com/feilipu/Arduino_FreeRTOS_Library.

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.

gpb01

#1
Oct 13, 2019, 10:48 am Last Edit: Oct 13, 2019, 10:48 am by gpb01
ho scaricato la libreria freertos per arduino dal link https://github.com/feilipu/Arduino_FreeRTOS_Library.
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).


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 :smiley-mr-green: ), di suggeriti di seguire un corso ... vedi  QUI :)
Search is Your friend ... or I am Your enemy !

velvettiere

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.


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.

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

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

Grazie mille di tutto.

Saluti.

gpb01

#3
Oct 13, 2019, 01:11 pm Last Edit: Oct 13, 2019, 01:11 pm by gpb01
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 ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

velvettiere

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.

... 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.

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

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

Grazie ancora, Valerio.


nid69ita

#5
Oct 13, 2019, 02:32 pm Last Edit: Oct 13, 2019, 02:33 pm by 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
my name is IGOR, not AIGOR

gpb01

#6
Oct 13, 2019, 03:19 pm Last Edit: Oct 13, 2019, 03:20 pm by gpb01
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. ::)   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
Search is Your friend ... or I am Your enemy !

velvettiere

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


gpb01

#8
Oct 13, 2019, 03:24 pm Last Edit: Oct 13, 2019, 03:25 pm by gpb01
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
Search is Your friend ... or I am Your enemy !

gpb01

#9
Oct 13, 2019, 03:27 pm Last Edit: Oct 13, 2019, 03:28 pm by gpb01
Ecco, guarda QUESTA libreria, credo faccia esattamente quello che chiedi (legge comandi dalla seriale e richiama delle funzioni a seguito di tali comandi) ... ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

bending91

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:

https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/FreeRTOS_Plus_CLI_Calling_The_Interpreter.html#

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

Let me know ;)

Michael

gpb01

#11
Jun 17, 2020, 03:33 pm Last Edit: Jun 17, 2020, 04:28 pm by gpb01
>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. :)

Guglielmo

P.S.: Conosco benissimo quanto di cui al link (... sono "istruttore" di corsi FreeRTOS™  :smiley-mr-green:) ... 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. ;)
Search is Your friend ... or I am Your enemy !

Go Up