Arduino a knihovny

Idris

  • *****
  • 1 400
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #60 kdy: 08. 03. 2021, 22:20:10 »
To je easy, stačí CSP. Buď osekané Go, nebo třeba Smalltalk s kanálama (a odpovídající syntaxí) by byl na tohle super (trochu úlet, ale pozitivní).
Jj, tak jsem to presne myslel - dat lidem CSP s peknym API a vhodnou sadou nastroju a lisacky jim vubec nerikat, ze je to CSP :)
Zrovna k tomuhle jsem nedávno došel, když jsem psal překladač Go pro eZ80 :)


Idris

  • *****
  • 1 400
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #61 kdy: 08. 03. 2021, 22:22:05 »
To je easy, stačí CSP. Buď osekané Go, nebo třeba Smalltalk s kanálama (a odpovídající syntaxí) by byl na tohle super (trochu úlet, ale pozitivní).
Akorat teda treba u toho Rustu jsem si jeste neprostudoval, jakej je soucasnej stav prace s konkurenci. Nejaky kanaly jsem nekde z rychliku videl, ale jak je to pouzitelny netusim.
Mají async/await. Kanály taky (mpsc, posláním se předá vlastnictví (“move”)).

Re:Arduino a knihovny
« Odpověď #62 kdy: 08. 03. 2021, 22:41:17 »
Mají async/await. Kanály taky (mpsc, posláním se předá vlastnictví (“move”)).
Jo, vim. Ale nemel jsem zatim cas si to dobre prostudovat a vyzkouset. Dabel je vzdycky v detailu. V Erlangu jsem treba poznal, jak extremne sikovny, az bych rekl v nekterych pripadech nezbytny, je moznost selektivniho vyberu zprav. Coz treba Go nema a Rust nevim. Ale strasne to zvysi expresivnost. (Jak rika klasik: ...a pritom takova blbost :) )

Idris

  • *****
  • 1 400
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #63 kdy: 08. 03. 2021, 22:45:00 »
Mají async/await. Kanály taky (mpsc, posláním se předá vlastnictví (“move”)).
Jo, vim. Ale nemel jsem zatim cas si to dobre prostudovat a vyzkouset. Dabel je vzdycky v detailu. V Erlangu jsem treba poznal, jak extremne sikovny, az bych rekl v nekterych pripadech nezbytny, je moznost selektivniho vyberu zprav. Coz treba Go nema a Rust nevim. Ale strasne to zvysi expresivnost. (Jak rika klasik: ...a pritom takova blbost :) )
Různé libůstky a blbůstky se najdou všude. Na blikání diodou stačí bare bones CSP. Ovšem ani to nikde v embedded/IoT nevidím.

Re:Arduino a knihovny
« Odpověď #64 kdy: 08. 03. 2021, 22:50:55 »
Různé libůstky a blbůstky se najdou všude. Na blikání diodou stačí bare bones CSP. Ovšem ani to nikde v embedded/IoT nevidím.
Embedaci jsou z velke casti dost stara skola, pokrok je, ze uz neprogramuji v assembleru :)


Idris

  • *****
  • 1 400
    • Zobrazit profil
    • E-mail
Re:Arduino a knihovny
« Odpověď #65 kdy: 08. 03. 2021, 23:03:28 »
Různé libůstky a blbůstky se najdou všude. Na blikání diodou stačí bare bones CSP. Ovšem ani to nikde v embedded/IoT nevidím.
Embedaci jsou z velke casti dost stara skola, pokrok je, ze uz neprogramuji v assembleru :)
Někteří jo ;)

Re:Arduino a knihovny
« Odpověď #66 kdy: 09. 03. 2021, 00:11:28 »
Mě by se líbilo to samé, ale pro programátory, tj. zprostředkovat pokročilejším vývojářům  specifika a různé možnosti v přístupu k embedded vývoji. Klidně to udělat na základě nějaké existující vývojové desky (nevím zda se na to hodí Arduino, ale třeba ten ESP nebo STM32 mi přijde vhodný určitě). Věřím že spousta programátorů si ráda pohraje nebo se jim to bude hodit v nějakém projektu.
Existují různé knížky pro Arduino, které jdou fakt krok za krokem přes různé experimenty. Většina asi jenom v angličtině, ale u nás máme úplně úžasný triptych od Martina Malého. Každá z knížek má jiné téma, takže si člověk musí dobře vybrat, co ho opravdu zajímá. Jsou k dispozici zdarma v PDF, ale silně bych doporučil je koupit papírové, protože si to autor fakt zaslouží, je to úžasně udělané. (EDIT: to nejdůležitější bych málem zapomněl: https://www.nic.cz/page/4205/v-edici-cznic-vychazi-kniha-data-cipy-procesory-autorem-je-znamy-publicista-martin-maly/ )

Ano, Martin Malý je legenda (viděl jsem nějaká videa a četl pár článků). Dobrých praktických bastlířských návodů a inspirace je asi dost, ale já to ale myslel spíš po softwarové stránce - jak se pracuje na RTOS nebo jak se dobré programátorské praktiky aplikuji v embedded a co tam je naopak úplně jinak. Tenhle level podle mě přesahuje běžnou Arduino kulturu.

Re:Arduino a knihovny
« Odpověď #67 kdy: 09. 03. 2021, 12:18:42 »
Ano, Martin Malý je legenda (viděl jsem nějaká videa a četl pár článků). Dobrých praktických bastlířských návodů a inspirace je asi dost, ale já to ale myslel spíš po softwarové stránce - jak se pracuje na RTOS nebo jak se dobré programátorské praktiky aplikuji v embedded a co tam je naopak úplně jinak. Tenhle level podle mě přesahuje běžnou Arduino kulturu.
Jo, sorry, špatně jsem četl. To máš pravdu, s touhle literaturou je to daleko horší. Něco jsem viděl, ale moc mě to nenadchlo. Navíc tyhle knížky pro "polodoborníky" jsou dost špatně dostupné a občas už docela zastaralé.

Re:Arduino a knihovny
« Odpověď #68 kdy: 09. 03. 2021, 12:40:04 »
Zajímavá diskuze, zkusím poskytnout ještě jeden pohled na věc. Nějakých pár blbostí s Arduinem jsem sesmolil a až bude čas, plánuju sesmolit další. Přes veškeré výhrady ke konceptu Arduina si myslím, že pokud se použije rozumně, dá se na nějaké jednodušší projekty nebo prototypy použít, jen to chce mít na paměti, že ne vše tam je úplně ideální. Milion návodů, milion knihoven (dobře, asi ne vždy dobře napsaných), obrovská komunita, pro začátečníka z tohohle pohledu ideální.

No a pak člověk na eBay objeví Blue Pill za prakticky stejnou cenu jako menší varianty klonů arduina a mimo jiné s mnohem vyšším výkonem, jenže co teď s tím? Dá se to pořád programovat stejně jako Arduino. Ale co když bych chtěl od toho víc? Pak mi přijde, že tam je obrovská propast - neexistuje tak široká komunita, neexistuje tolik návodů a knihoven, celé je to řádově složitější. Jak to vlastně programovat [pod linuxem, samozřejmě]? Jak to provázat s IDE a s jakým? Jak to rozumně debugovat? Kde vzít knihovny pro podporu periferií? Programovat to celé od nuly, nebo se chytit nějakého RTOS/frameworku? Jak to nejlíp projít krok za krokem od toho jednoduššího až po to složité? Samé otázky :). Aspoň takhle nějak se to honí mně hlavou, když pomyslím na to, že bych si chtěl pohrát třeba s tím STM a naučit se s ním pracovat nějak koncepčně... Asi kdybych v tom týden ležel a hledal a četl, tak bych to nakonec dal nějak dohromady, ale chybí mi nějaký informační a funkční celek, který by byl ekvivalentní arduinu, jen řekněme náročnější na naučení, pokud by měl vést k řešení věcí správnější cestou a využívání vlastností složitějšího MCU.

Re:Arduino a knihovny
« Odpověď #69 kdy: 09. 03. 2021, 14:48:10 »
Zajímavá diskuze, zkusím poskytnout ještě jeden pohled na věc. Nějakých pár blbostí s Arduinem jsem sesmolil a až bude čas, plánuju sesmolit další. Přes veškeré výhrady ke konceptu Arduina si myslím, že pokud se použije rozumně, dá se na nějaké jednodušší projekty nebo prototypy použít, jen to chce mít na paměti, že ne vše tam je úplně ideální. Milion návodů, milion knihoven (dobře, asi ne vždy dobře napsaných), obrovská komunita, pro začátečníka z tohohle pohledu ideální.

No a pak člověk na eBay objeví Blue Pill za prakticky stejnou cenu jako menší varianty klonů arduina a mimo jiné s mnohem vyšším výkonem, jenže co teď s tím? Dá se to pořád programovat stejně jako Arduino. Ale co když bych chtěl od toho víc? Pak mi přijde, že tam je obrovská propast - neexistuje tak široká komunita, neexistuje tolik návodů a knihoven, celé je to řádově složitější. Jak to vlastně programovat [pod linuxem, samozřejmě]? Jak to provázat s IDE a s jakým? Jak to rozumně debugovat? Kde vzít knihovny pro podporu periferií? Programovat to celé od nuly, nebo se chytit nějakého RTOS/frameworku? Jak to nejlíp projít krok za krokem od toho jednoduššího až po to složité? Samé otázky :). Aspoň takhle nějak se to honí mně hlavou, když pomyslím na to, že bych si chtěl pohrát třeba s tím STM a naučit se s ním pracovat nějak koncepčně... Asi kdybych v tom týden ležel a hledal a četl, tak bych to nakonec dal nějak dohromady, ale chybí mi nějaký informační a funkční celek, který by byl ekvivalentní arduinu, jen řekněme náročnější na naučení, pokud by měl vést k řešení věcí správnější cestou a využívání vlastností složitějšího MCU.

STM se snaží dělat podporu. Ale nemám s tím zkušenost, nevím zda to stačí ke vstupu do tématu. Něco vyšlo i tady na rootu https://www.root.cz/clanky/pristupy-k-programovani-stm32/ https://www.root.cz/clanky/stm32-mikrokontroler-vstricny-k-amaterum/ Podle mě to je pořád aktuální téma, třeba se toho někdo chytne...

_Jenda

  • *****
  • 695
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Arduino a knihovny
« Odpověď #70 kdy: 09. 03. 2021, 15:17:31 »
No a pak člověk na eBay objeví Blue Pill za prakticky stejnou cenu jako menší varianty klonů arduina a mimo jiné s mnohem vyšším výkonem, jenže co teď s tím? Dá se to pořád programovat stejně jako Arduino.

No právě že nedá. Ten port je zabugovanej a nemá různé featury. Např.
  • Ve zkomopilovaném programu zůstává spousta bloatu. Dá se ho zbavit zkompilováním s -flto, ale to vám odebere tabulku interruptů. Tady je na to bug.
  • není pro to Arduino Makefile, takže to musím kompilovat buď z Arduino IDE nebo pomocí https://github.com/arduino/arduino-cli, což je gigantická Gočková binárka. Při každém buildu to analyzuje použité knihovny přes celé STM32 HAL, což trvá klidně 10 sekund.

Re:Arduino a knihovny
« Odpověď #71 kdy: 09. 03. 2021, 15:21:12 »
Ale co když bych chtěl od toho víc? Pak mi přijde, že tam je obrovská propast - neexistuje tak široká komunita, neexistuje tolik návodů a knihoven, celé je to řádově složitější. Jak to vlastně programovat [pod linuxem, samozřejmě]? Jak to provázat s IDE a s jakým? Jak to rozumně debugovat?
Myslím, že nejrozumnější na domácí bastlení je Platformio. Jako IDE používám VS Code, ale to není nutný, šlo by použít jakýkoli jiný C/C++ IDE, platformio se dá v klidu ovládat z příkazové řádky (narozdíl od Arduina, kde to dost dlouho dobře nešlo).

Debugging mají STMka nativní, přes programátor. Ve VS Code je mysím pro to i podpora, ale jak dobře se to používá, nevím, zatím jsem si vždycky vystačil s jednoduchými výpisy i u složitějších projektů.

Kde vzít knihovny pro podporu periferií? Programovat to celé od nuly, nebo se chytit nějakého RTOS/frameworku? Jak to nejlíp projít krok za krokem od toho jednoduššího až po to složité?
To je z toho asi nejsložitější otázka. Pokud chceš hladký přechod z Arduina AVR, tak nejsnazší je použít Arduino. Pokud si chceš zkusit RTOS, tak opět cesta nejmenšího odporu je asi ten FreeRTOS nad Arduino, co jsem linkoval výš. Až by ti to přestalo stačit (pro domácí hraní spíš nepřestane), můžeš se posunout jinam. Platformio pro Blue Pill nabízí celkem šest frameworků, takže přechod jinam je otázka změny jednoho řádku, nemusíš kompletně překopávat žádné makefily, složitě integrovat knihovny atd.

Podpora periferií toho vlastního STMka bude ve všech těch frameworcích velmi slušná až výborná. Horší je to spíš s podporou všelijakých sensorů třetích stran. Tam si s STM32/Arduino oproti AVR/Arduino mírně pohoršíš. Velká část knihoven jde použít, ale ne všechny. Pokud z Arduina přejdeš třeba na LibOpenCM, budeš na tom výrazně hůř. Co se dá dělat, Arduino je prostě fakt rozšířené a knihoven je neuvěřitelné množství. Platformio má na webu prohledávání knihoven, můžeš se sám podívat, jestli tam najdeš všechno, co by tě zajímalo. Posuď sám: https://platformio.org/lib/search?query=framework:libopencm3%20%20platform:ststm32 vs https://platformio.org/lib/search?query=framework%253Aarduino%2520%2520platform%253Aststm32

Takže když to tak shrnu, jestli si chceš hrát, jdi cestou Platformio + VS Code + Arduino + [volitelně FreeRTOS]. Takhle budeš mít nejvíc muziky s nejmenší námahou a bolestí :)
« Poslední změna: 09. 03. 2021, 15:31:06 od Mirek Prýmek »

Re:Arduino a knihovny
« Odpověď #72 kdy: 09. 03. 2021, 15:24:05 »
není pro to Arduino Makefile, takže to musím kompilovat buď z Arduino IDE nebo pomocí https://github.com/arduino/arduino-cli, což je gigantická Gočková binárka. Při každém buildu to analyzuje použité knihovny přes celé STM32 HAL, což trvá klidně 10 sekund.
Při použití Platformia obě tyhle věci odpadají. Zalinkovaný balast moc neumím posoudit. Pokud nějakou funkci nepoužiju, binárka se zmenší, takže to nějak funguje. Jestli kompletně správně, to nevím, zatím jsem to nepotřeboval řešit.

_Jenda

  • *****
  • 695
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Arduino a knihovny
« Odpověď #73 kdy: 09. 03. 2021, 16:11:44 »
Při použití Platformia obě tyhle věci odpadají.
Jo, ale to asi není kompatibilní s tou hromadou špatně napsaných arduiních knihoven a examplů, ne? Právě to je jeden z důvodů proč používám Arduino, i když je to technickou kvalitou dost slabé - „potřebujeme sledovat teplotu v kamrlíku se serverem“ → připojím k Arduinu za $2 DHT22 za $2, Examples → DHT, Upload, hotovo. „Potřebuju udělat první krok pro ověření funkčnosti PLL“ → google „arduino adf4351“, připojím 5 drátů, Upload, ověřeno, a teď můžu začít s datasheetem zkoumat co která volba dělá.

Zalinkovaný balast moc neumím posoudit.
Tím jsem myslel že když spustím strings na hotovou binárku firmwaru, tak tam doslova je několikrát napsáno /home/jenda/.arduino15/packages/STM32/hardware/stm32/1.8.0/cores/arduino/.

Re:Arduino a knihovny
« Odpověď #74 kdy: 09. 03. 2021, 16:19:41 »
Jo, ale to asi není kompatibilní s tou hromadou špatně napsaných arduiních knihoven a examplů, ne? Právě to je jeden z důvodů proč používám Arduino, i když je to technickou kvalitou dost slabé - „potřebujeme sledovat teplotu v kamrlíku se serverem“ → připojím k Arduinu za $2 DHT22 za $2, Examples → DHT, Upload, hotovo. „Potřebuju udělat první krok pro ověření funkčnosti PLL“ → google „arduino adf4351“, připojím 5 drátů, Upload, ověřeno, a teď můžu začít s datasheetem zkoumat co která volba dělá.
Jak jsem říkal, Platformio podporuje několik frameworků a Arduino je jeden z nich - to "originál Arduino". Tj. pokud si v konfiguráku Platformia vybereš jako framework Arduino, udělá platformio přesně to samý jako to arduino-cli. Mělo by to být 100%ně kompatibilní.

Takže to, co popisuješ, bys s Platformiem udělal přesně stejně.

Tím jsem myslel že když spustím strings na hotovou binárku firmwaru, tak tam doslova je několikrát napsáno /home/jenda/.arduino15/packages/STM32/hardware/stm32/1.8.0/cores/arduino/.
Aha, tak to jsem nezkoušel, ale to spíš asi budou nějaký debug symboly nebo tak něco, ne?