Scheduler ufficiale

Nelle note di un rilascio dell'ide nel lontano 2012 si leggeva:

  • added support for yield() function in Arduino Core. This is a
    preliminar step for experimenting with cooperative Schedulers.

Come e' la situazione attualmente ?

Guardando rapidamente nei sorgenti di Arduino su github, la funzione yield() è definita solo qui, ma è parte della libreria ufficiale Scheduler, che a quanto pare supporta solo la Due. Tutti gli altri riferimenti, come questo, sono funzioni vuote.

yes,
ci sara' mai un porting dello scheduler per gli AVR ?

Testato:
yes,
ci sara' mai un porting dello scheduler per gli AVR ?

No perché manca il supporto hardware per lo scheduler, parlo di uno vero e non le varie imitazioni a software con tutti i limiti del caso.

uno scheduler 2.0 (mezzo punto zero :slight_smile: ) usando i metodi stile la tua libreria (sketch) che postasti ? Pero' riprendendo la API di questo scheduler ?

Testato:
uno scheduler 2.0 (mezzo punto zero :slight_smile: ) usando i metodi stile la tua libreria (sketch) che postasti ? Pero' riprendendo la API di questo scheduler ?

Tocca vedere cosa hanno fatto esattamente, in tutta franchezza non ne ho ne la voglia ne il tempo, se mi serve un vero scheduler vuol dire che quasi sicuramente mi serve un vero RTOS e allora non uso un AVR :slight_smile:

In pratica allargare la compatibilita' sotto al cofano anche agli AVR, mantenendo una sola libreria e tenendo la stessa API.
Sarebbe interessante ed utile secondo me.
Non chiedevo di farlo te, ma solo se credi sia possibile ed utile.
Quel pezzo di codice che postasti nel bare metal potrebbe adattarsi ?

Testato:
In pratica allargare la compatibilita' sotto al cofano anche agli AVR, mantenendo una sola libreria e tenendo la stessa API.

Il problema è puramente hardware, per un vero scheduler serve il supporto al multitasking, semplicemente non c'è sugli AVR, non sono nemmeno sicuro sia implementato al 100% sulla DUE, dovrebbe avere almeno il ticksys (timer dedicato per lo scheduler) come supporto minimale.
Prova a dare un'occhiata a questo, dovrebbe funzionare anche su Arduino.

e a che serve uno scheduler in un arduino???

vbextreme:
e a che serve uno scheduler in un arduino???

Per servire serve, infatti si crea un surrogato software per supplire alla carenza hardware, però con tutti i limiti del caso.

non ho chiesto se, ma a cosa.

vbextreme:
non ho chiesto se, ma a cosa.

Per gestire vari compiti in "parallelo" oppure attivare un task con ben precisi intervalli, sempre e comunque entro i limiti, abbastanza pesanti, di un AVR.

non ne vedo proprio l'utilità, anzi riesco solo a vederne i problemi che può scaturire.
Bho....Delegare ad un'altro ciò che io posso fare meglio? bha!... quando a volte si cercano complicazioni inutili, stiamo pur sempre parlando di chip a 16mhz.....

vbextreme:
Bho....Delegare ad un'altro ciò che io posso fare meglio? bha!... quando a volte si cercano complicazioni inutili, stiamo pur sempre parlando di chip a 16mhz.....

Pensi davvero di poter gestire in modo ottimale molti diversi compiti, magari qualcuno con temporizzazioni critiche, a manina ?
Io preferisco affidarmi ad un scheduler, seppure minimale e semplice, che mi gestisce le cose in automatico secondo delle regole che imposto io, sopratutto se lo scheduler l'ho scritto io e so esattamente cosa fa.

assolutamente si!
Sui chip single core è sempre da preferire il task singolo per aumentare le performance, la sicurezza e la stabilità.
Dopotutto il parallelismo non esiste su questi core e un qualsiasi scheduler non potrà mai svolgere meglio il compito rispetto ad un cervello allenato, ancor peggio per le sezioni critiche!

vbextreme:
assolutamente si!
Sui chip single core è sempre da preferire il task singolo per aumentare le performance, la sicurezza e la stabilità.

Si come no, infatti io, e tutti quelli come me, che realizzano professionalmente applicazioni su mcu dove girano più task siamo tutti scemi e non abbiamo capito nulla.
Va be' lasciamo perdere che è meglio, tanto io continuo a scrivere software low level e farmi pagare per questo, se mi serve uno scheduler o ne uso uno già pronto, se esiste, oppure me lo scrivo ottimizzato per il caso particolare, non sei certo tu a cambiare lo status delle cose a me a alle migliaia di persone che fanno il mio stesso lavoro.

permalosetto?
non mi pare poi di aver aver affermato che chi usa uno scheduler sia uno scemo o altro, ho semplicemente detto che IO non riesco a capirlo! in tutti i libri che ho letto si parla sempre di come non usare lo scheduler per migliorare il proprio programma e non ho fatto altre che riportarlo.
Invece di scrivere quattro righe di parole inutili di cio che fai te perché non provi a spiegarlo?
O magari un libro dove spiega perché usarlo!

vb stai attaccando la persona sbagliata :slight_smile:

attaccando?
chiedendo!
Mica sono la bocca della verità e se c'è qualcuno che ne sa di più benvenga! ma che dia almeno risposte esaustive magari correlate da libri su cui studiare, a me piace leggere!
Poco mi importa se lui sviluppa space shuttle, a me interessa imparare e se quello che ho letto è sbagliato oppure l'ho appreso male vorrei almeno capire il perché e magari una lettura che possa aiutare.
Se poi questo concetto lo reputi sbagliato amen, sono fatto così!

il concetto e' buono, e' l'approccio che e' sbagliato, se stessimo parlando a voce direi e' il tono di voce sbagliato.
Te lo posso dire da "collega" perche' capita anche a me di fare spesso lo stesso errore.