CSP v embedded světě

Re:CSP v embedded světě
« Odpověď #15 kdy: 15. 03. 2021, 00:49:35 »
Co se inspirovat RTC (Run To Completion) plánovači? Tj. každý task může být kdykoliv spuštěn, ale musí potom doběhnout (nebo spustit další task). Stack je potom jenom jeden. Dělali jsme tak poměrně brutální automaty v hardwaru úrovni ATTiny... někdy i s luxusními stovkami B RAM.

https://www.embedded.com/build-a-super-simple-tasker/
https://github.com/KnightSch/sst (opravdu vintage :-) ale je to čitelné)


Re:CSP v embedded světě
« Odpověď #16 kdy: 15. 03. 2021, 00:50:43 »
Tj. každý task může být kdykoliv spuštěn, ale musí potom doběhnout (nebo spustit další task).
No, to je v podstatě ta stejná myšlenka jako ta moje.

Re:CSP v embedded světě
« Odpověď #17 kdy: 15. 03. 2021, 00:55:26 »
Ten plánovač se pak v podstatě vejde do ISR, jen vybere z poolu task nejvyšší priority, vezme na něj function pointer a zavolá ho. Odpadá všechna ta makro magie která u RTOSů v tomhle obvykle dominuje. Kanály jsou pak taky celkem snadný (globální tabulka někde, a scheduler zohlední pending message v rozhodování).

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:CSP v embedded světě
« Odpověď #18 kdy: 15. 03. 2021, 00:56:38 »
Samozřejmě se nebudu babrat s překladačem, na to fakt čas nemám, jde mi jenom o naimplementování těch primitv v C.
V C? To asi nebude problém. Já kdysi napsal korutiny pro C na AMD64 a pak se mi to nějak povedlo přepsat i pro ARM (je to kupa let zpátky, tak asi ARM32, ale už si to nepamatuju, jen že to běhalo na iPhonu). Kanály tam nějak byly taky, ale ty nejsou problém. Zkusím to najít, co si tak pamutuju, největší opruz byl scheduler. Sranda taky bude rozběhat to na více jádrech (třeba Zobák má dvě).

Re:CSP v embedded světě
« Odpověď #19 kdy: 15. 03. 2021, 01:02:31 »
V C? To asi nebude problém.
Nechci, aby to byl problém. Implementaci chci věnovat tak jedno odpoledne, kdyby mě to extra bavilo, tak možná víkend ;)

Já kdysi napsal korutiny pro C na AMD64 a pak se mi to nějak povedlo přepsat i pro ARM (je to kupa let zpátky, tak asi ARM32, ale už si to nepamatuju, jen že to běhalo na iPhonu). Kanály tam nějak byly taky, ale ty nejsou problém. Zkusím to najít, co si tak pamutuju, největší opruz byl scheduler. Sranda taky bude rozběhat to na více jádrech (třeba Zobák má dvě).
Záměrně to nechci vidět, to bych přišel o všechnu zábavu :)

Představuju si to jako punkovou srandu, implementovanou cestou nejmenšího odporu, v tom stylu, jak píše Křišťan. Když to bude blikat deseti LEDkama s tím, že třeba jenom dvě bliknutí zařídí jeden task a pak nějaký "supervisor" spustí automaticky další, bude to v mých očích mission accomplished :)


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:CSP v embedded světě
« Odpověď #20 kdy: 15. 03. 2021, 01:14:50 »
Představuju si to jako punkovou srandu, implementovanou cestou nejmenšího odporu, v tom stylu, jak píše Křišťan. Když to bude blikat deseti LEDkama s tím, že třeba jenom dvě bliknutí zařídí jeden task a pak nějaký "supervisor" spustí automaticky další, bude to v mých očích mission accomplished :)
Tak se pak pochlub ;)

Re:CSP v embedded světě
« Odpověď #21 kdy: 15. 03. 2021, 01:15:48 »
Tak se pak pochlub ;)
Jj, určitě, za tu spolupráci si to zasloužíte :)

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:CSP v embedded světě
« Odpověď #22 kdy: 15. 03. 2021, 01:18:06 »
Snazit se o multi-processing v systemu, ktery nema MMU je ponekud marne.
Takze polozim velice jednoduchou otazku:

Co prinese vas odlisny a pre-komplikovany system oproti obycejnemu main-loop cyklu, kde se kazdy "proces" projevuji svym loop-handlerem?

To, aby kazdy loop nebyl stejny, resi bool bitmapa "scheduled", nebo alternativni pristup k predavani tokenu, kdy se nejaky proces (event handler) muze pre-emptnout.

Protoze na MCU typicky nemate fork, bezi tam to, co tam bezet ma, v 0 az 1 instanci. Vse, nebo nic.

Re:CSP v embedded světě
« Odpověď #23 kdy: 15. 03. 2021, 01:32:40 »
Snazit se o multi-processing v systemu, ktery nema MMU je ponekud marne.
Myslim, ze se trochu mijime. To, co mam na mysli, je spis Erlang, nez Linux kernel.

Takze polozim velice jednoduchou otazku:

Co prinese vas odlisny a pre-komplikovany system oproti obycejnemu main-loop cyklu, kde se kazdy "proces" projevuji svym loop-handlerem?
Za prve: urcite ne pre-komplikovany. Jde mi prave o co nejvetsi jednoduchost.

Pak by se na to dalo odpovedet snadno: srandu, o nic jinyho nejde. Rict: "hele, tady mas Hoareho priklady implementovany na Atmeze v 1000 radcich cecka". To by bylo cool, nestaci to? ;)

A taky by se to dalo vzit seriozne a diskutovat o tom, 1. co to je "obycejny main-loop cyklus" (umoznuje za behu vytvaret nove tasky?) 2. cim se principielne lisi od jakehokoli jineho scheduleru 3. ze moje predstava neni jenom o scheduleru, ale o tom celkovem systemu CSP, ktery prave jenom dohromady dava smysl.

...ale do toho se asi poustet nebudu. Urcite ne ted, je pokrocila hodina a zitra musime roztacet kola kapitalismu, chlapi :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:CSP v embedded světě
« Odpověď #24 kdy: 15. 03. 2021, 01:35:01 »
moje predstava neni jenom o scheduleru, ale o tom celkovem systemu CSP, ktery prave jenom dohromady dava smysl.
To CSP je to zajímavé, scheduler je tam prostě z nutnosti :)

Re:CSP v embedded světě
« Odpověď #25 kdy: 15. 03. 2021, 01:36:23 »
To CSP je to zajímavé, scheduler je tam prostě z nutnosti :)
Presne! Scheduler je tam jenom technikalie, kterou je proste potreba nejak vyresit, aby to "svítilo a hřálo", jak říká klasik :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:CSP v embedded světě
« Odpověď #26 kdy: 15. 03. 2021, 01:46:58 »
To CSP je to zajímavé, scheduler je tam prostě z nutnosti :)
Presne! Scheduler je tam jenom technikalie, kterou je proste potreba nejak vyresit, aby to "svítilo a hřálo", jak říká klasik :)
Nádhera, nad CSP se pak dají udělat semafory, generátory, promises apod. Třešničkou by byly kanály mezi dvěma MCU (něco jako netchan v Go).

Re:CSP v embedded světě
« Odpověď #27 kdy: 15. 03. 2021, 01:53:48 »
Nádhera, nad CSP se pak dají udělat semafory, generátory, promises apod. Třešničkou by byly kanály mezi dvěma MCU (něco jako netchan v Go).
Bingo! To jsem právě naťukl v tom původním vláknu s tím PRU na Beaglebone. To jsou dva oddělený procesory. A jakmile by bylo CSP rozchozený, je to už jenom kousek k dalším srandám.

Takže co třeba dvě Blue Pills za padesátikorunu jedno, propojené přes CAN bus a tasky migrují z jednoho na druhý podle zatížení CPU? Proč ne :) A když jsme u toho CAN busu, co třeba deset propojených Blue Pills a jeden blink task migruje z jednoho na druhý, takže každou chvilku blikne s LEDkou jinde? To jako motivace nestačí? Tak to už fakt nevím co teda ;)

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:CSP v embedded světě
« Odpověď #28 kdy: 15. 03. 2021, 02:43:22 »
Takže co třeba dvě Blue Pills za padesátikorunu jedno, propojené přes CAN bus a tasky migrují z jednoho na druhý podle zatížení CPU? Proč ne :) A když jsme u toho CAN busu, co třeba deset propojených Blue Pills a jeden blink task migruje z jednoho na druhý, takže každou chvilku blikne s LEDkou jinde? To jako motivace nestačí? Tak to už fakt nevím co teda ;)

Na cem jedete, ja chci taky takovej caj :P

Re:CSP v embedded světě
« Odpověď #29 kdy: 15. 03. 2021, 10:32:47 »
Na cem jedete, ja chci taky takovej caj :P
Tyhle látky začne mozek produkovat přirozeně sám, stačí par let programovat v Elixiru :)