Go Down

Topic: Scheduler ufficiale (Read 15730 times) previous topic - next topic

testato

Nelle note di un rilascio dell'ide nel lontano 2012 si leggeva:
Quote
* added support for yield() function in Arduino Core. This is a
  preliminar step for experimenting with cooperative Schedulers.
Come e' la situazione attualmente ?
 
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ptia

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.
Fork https://github.com/ptia/Quadricottero, my quadcopter flight controller with an Android bluetooth client

testato

yes,
ci sara' mai un porting dello scheduler per gli AVR ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed

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.
Scientia potentia est

testato

uno scheduler 2.0 (mezzo punto zero  :) ) usando i metodi stile la tua libreria (sketch) che postasti ? Pero' riprendendo la API di questo scheduler ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed

uno scheduler 2.0 (mezzo punto zero  :) ) 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 :)

Scientia potentia est

testato

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 ?

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed

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.
Scientia potentia est

vbextreme

e a che serve uno scheduler in un arduino???
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

astrobeed

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.

Scientia potentia est

vbextreme

non ho chiesto se, ma a cosa.
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

astrobeed

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.


Scientia potentia est

vbextreme

#12
Jun 23, 2015, 07:35 pm Last Edit: Jun 23, 2015, 07:36 pm by vbextreme
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.....
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

astrobeed

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.
Scientia potentia est

vbextreme

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!
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

Go Up