dotaz - arduino

David Obdrzalek David.Obdrzalek na mff.cuni.cz
Pondělí Únor 22 14:49:30 CET 2021


Pri pouziti C++ na MCU typu 8bit AVR, PIC, MCSxx napriklad obvykle vadi cokoli, co 
se dynamicky resi za behu v mire mensi nez zanedbatelne. Polymorfismus (virtualni 
funkce). Rozmachle template. Dynamicke datove struktury a automaticka alokace a 
uvolnovani pameti. Pretezovani operaturu, zejmena nad nejednoduchymi typy. 
To z C++, co se da vyhodnotit a vyresit pri prekladu, obvykle nevadi - zapouzdreni, 
staticky pouzita dedicnost atd., to se jeste docela da pri prekladu zoptimalizovat.

A taky (hlavne?) vadi prasacky napsany kod, zejmena z pohledu programovani na PC vs. 
programovani na malem, radove pomalejsim a velmi malo vykonnem kontroleru se zlomkem 
objemu pameti. 
Mozna to je i tim, ze ten, kdo pise program v C++, tak na rozdil od programatoru v C 
az na cestne vyjimky casto nepremysli o efektivite beziciho kodu a soustredi se spis 
na efektivitu sveho procesu programovani. Takze napriklad mnohokrat opakovane 
kopirovani dat mu je jedno, protoze nevidi, ze se to deje. Nebo pretizene operatory, 
napr. + na retezce, vypada to jako trapna operace, obycejne +, ale kdyz se to ma 
vykonat, je to problem. Stejne tak ty zminene dynamicke veci - ze je program na PC 
megabytovy nebo ze startuje minutu programatorum dneska nevadi, ale takhle se na 
mikrokontrolerech programovat neda. 

V ekosystemu Arduina vadi navic to, ze se snazi nektere veci delat za uzivatele, aby 
ten nemusel premyslet (ale ne vzdycky se do deje spravne), a k tomu knihovny, ktere 
jsou uz od zacatku napsane spatne, ale nikdo to neopravi, protoze by se mohly zacit 
chovat jinak a to by uzivatele nezkousli. To je co se tyce oficialnich knihoven 
(tedy az na to, co v projektu Arduino nevznikly, treba avr-libc). "Knihovny" 
produkovane samotnymi uzivateli jsou na tom jeste hur - obvykle nefunguji poradne 
ani samotne (a to casto ani priklady s ni dodanymi), natoz v koexistenci, nedejboze 
ve spolupraci, s jinymi "takyknihovnami". O verzovnim bordelu nemluve.

Podle me Arduino je nekdy i docela pouzitelne, ale kdyz to ma byt vic nez jen 
blikani ledkou, tak clovek musi dost dobre vedet, jak to funguje uvnitr a na co si 
dat pozor (a casto je velmi vhodne az nezbytne prozkoumat zdrojaky vseho pouziteho). 
Ale to si myslim je logicky dusledek okolnosti vzniku a cilu Arduina, tedy dat 
pomucku studentum kreativniho designu, kteri nechteji umet programovat, ale maji 
delat hejblatka a blikatka. Ono je to nakonec vlastne celkove docela vyvazene, 
vsechno je  varchrlate - hardware nedotazeny, vyvojove prostredi nic moc (a bez 
moznosti ladeni), knihovny spatne, uzivatelske programy taky, proste sedi to vsechno 
dohromady :-)

No a pote, co se do Arduina vyvojari zacali snazit pridat i jine platformy nez AVR, 
to zaclo byt jeste horsi, protoze rozdily mezi specifiky te ktere platformy a tim, 
ze se to ma chovat pro uzivatele porad stejne, s sebou nucene nese potize. 

Myslim, ze v Arduinu by se bez opravdu dukladne znalosti (a mozna ani s ni) nemelo 
programovat tak, aby bylo potreba sahat na hardware jinak, nez poskytnutymi funkcemi 
(napr. nedelat primy pristup na registry, nebo zminene usporne rezimy), protoze na 
prvni pohled neni jasne, co ostatniho to ovlivni, at uz v "systemu" Arduina jako 
takoveho, nebo s ostatnimi pouzitymi knihovnami. 

D.O.

On 22 Feb 2021 at 9:32, Pavel Brychta wrote:
> Ano, občas zaznamenám jakýsi abstraktní odpor k C++ na MCU, ale nikdy 
> jsem nedostal konkrétní odpověď na to, co vlastně vadí. Pokud vím, co 
> dělám (opět to je o znalostech) a používám jen statické konstruktory, 
> tak v tom nevidím problém. No a k tomu STM32 - schválně, co myslíte, že 
> používají v Arduino jádru pro STM32? ... normální CMSIS/HAL 
> (https://github.com/stm32duino/Arduino_Core_STM32/tree/master/system). 
> Přiznám se, že občas nechápu tu aroganci (tím nemyslím Vás), se kterou 
> se někteří lidé pohrdavě vyjadřují o Arduinu a pak se změní na klikací 
> opičky v CubeMX. Podstatné je si uvědomit, že ArduinoIDE není Arduino 
> framework a klíčové jsou znalosti, ale to platí všude...
> 
> Pavel Brychta
> 
> Dne 22. 02. 21 v 8:00 Jaroslav Buchta napsal(a):
> > No nerikam, ze arduino ma spatne knihovny, taky je obcas v projektech 
> > nejak pouzivam - treba pro ruzny HW, displeje... Ale moc mi teda 
> > nesedi pouziti C++ pro MCU.
> > Spis jsem mel na mysli styl napsat v tom jejich IDE nejaky skript dle 
> > nejakeho navodu, ktery pouziva interne nejake C++ moduly o kterych 
> > nevim vubec nic a kdyz se nevhodne nakombinujou, tak se to muze chovat 
> > vselijak. U jednoducheho AVR je to jeste v pohode ale u STM bude 
> > problem vyuzit nejake speciali vlastnosti periferii, vubec netusim, 
> > jak to pouziva DMA, preruseni atp... To bych asi dost zkoumal. A to uz 
> > pak nemusim pouzivat cely jejich framework ale u STM mohu zacit treba 
> > s jejich HAL, ktery mi v poslednich verzich pripada uz dost dobry. IDE 
> > je take uplne jinde a navic moznost plnohodnotneho ladeni. A skutecne 
> > dobre funguje prenositelnost kodu mezi ruznymi radami MCU (samozrejme, 
> > pokud nepouziju nejaky HW, co v nizsi rade neni k dispozici).
> > Pro rychle vyzkouseni neceho to je asi ale pouzitelne, pokud to 
> > funguje na prvni dobrou a nejak stabilne, proc ne.
> >
> > Dne 22.02.2021 v 6:51 Pavel Brychta napsal(a):
> >> Ale ne, tohle je okamžik, kdy člověk musí začít studovat a je úplně 
> >> jedno, jestli se rozhodne pro Arduino framework, nebo cokoliv jiného. 
> >> Co se týče Arduino frameworku, tak doporučuji přejít na PIO (jak už 
> >> tady zaznělo), umožní Vám to mít k projektu vlastní verzi core, 
> >> kterou si přiohnete ke své potřebě. Obecně platí, že GPIO funkčnost 
> >> se dá modifikovat snadno (odpovídající soubor variant.cpp/h), pokud 
> >> Vám stačí funkčnost standardních knihoven, pokud ne, tak si holt 
> >> budete muset dopsat vlastní. To chování máte pod kontrolou úplně 
> >> stejně, jako když začnete programovat "normálně" (ať už to znamená 
> >> cokoliv) - překladač "pod kapotou" bude nejspíš identický a, pokud 
> >> vynecháte Arduino Builder, máte k dispozici běžnou C/C++ platformu s 
> >> podporou široké palety knihoven (ano, některé jsou lepší, některé 
> >> zase horší, ale občas se i ty horší dají použít pro inspiraci) - v 
> >> obou případech to je o znalostech.
> >>
> >> Pavel Brychta
> >>
> >> Dne 19. 02. 21 v 11:38 Jaroslav Buchta napsal(a):
> >>> Tak tohle je presne okamzik, kdy je IMHO lepsi hodit arduino po 
> >>> psovi a zacit programovat normalne, pokud mate nejake nestandardni 
> >>> pozadavky nebo chcete mit dokonce chovani systemu pod kontrolou ;-)
> >>>
> >>> Dne 19.02.2021 v 11:20 Vláďa Anděl napsal(a):
> >>>> Děkuju moc, už tam svojí destičku najdu. Takže u arduina vlastně 
> >>>> uživatel neřeší konfiguraci procesoru, jen nastaví správný typ 
> >>>> desky. A co kdybych tu konfiguraci chtěl změnit? Budu tam používat 
> >>>> úsporné režimy - nevím, jak tady fungují ty dva oscilátory, jestli 
> >>>> na ten 32 KHz běží jen nějaké samostatné RTC, nebo se na něj 
> >>>> přepíná celý procesor. Je možné si tu konfiguraci upravit? Jsou na 
> >>>> to nástroje?
> >>>> Anděl
> >>>>
> >>>> Dne 18.2.2021 v 23:11 HUDA napsal(a):
> >>>>> Omlouvám se, správný odkaz je
> >>>>> https://chiptron.cz/articles.php?article_id=155
> >>>>> HUDA
> >>>>>
> >>>>> ______________________________________________________________
> >>>>>> Od: "Vláďa Anděl" <vaelektronik na vaelektronik.cz>
> >>>>>> Komu: "konfera" <hw-list na list.hw.cz>
> >>>>>> Datum: 18.02.2021 22:50
> >>>>>> Předmět: dotaz - arduino
> >>>>>>
> >>>>>> Dobrý den,
> >>>>>>
> >>>>>> Doufám, že tady je někdo, kdo umí s arduinem a prosím o dobrou 
> >>>>>> radu. Po
> >>>>>> dlouhém odmítání arduina jsem usoudil, že bude pohodlnější využít
> >>>>>> co už
> >>>>>> někdo vymyslel a je to hotové. Ztáhnul jsem si IDE s tím, že bych 
> >>>>>> chtěl
> >>>>>> něco zkusit s destičkou Blue Pill STM32F103C8
> >>>>>>
> >>>>>> https://www.laskarduino.cz/bluepill-arm-stm32-stm32f103c8-vyvojova-deska/ 
> >>>>>>
> >>>>>>
> >>>>>> Ztáhnul jsem si do IDE podporu stm32, jak je to popsané na
> >>>>>>
> >>>>>>
> https://navody.dratek.cz/navody-k-produktum/vyvojova-deska-arm-stm32f103c8t6-stm32.
> html 
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Jenže v nabídce "Vývojová deska" se mi mělo objevit"generic 
> >>>>>> STM32F103C
> >>>>>> series"
> >>>>>>
> >>>>>> a místo toho mi to nabízí Arduino due (Programming port) a Native 
> >>>>>> USB port.
> >>>>>>
> >>>>>> Našel jsem ještě 
> >>>>>> https://iotta.cz/levny-kit-se-stm32f103c8-plus-arduino/
> >>>>>> kde dává odkaz přímo na knihovnu Arduino_STM32, ale ztažený 
> >>>>>> soubor je
> >>>>>> stejný, jaký našlo IDE. V čem může být problém? Jemu to nechodilo s
> >>>>>> verzí IDE 1.6.8 a rozběhlo se to až po updatu na 1.6.9. Já mám teď
> >>>>>> aktuální 1.8.13. Není problém v tom?
> >>>>>>
> >>>>>> Anděl




Další informace o konferenci Hw-list