( asch | 2021. 06. 07., h – 11:35 )

+1

A mikrovezérlőnek az az előnye a komplexebb gépekkel szemben, hogy real-time követelményeket meg lehet valósítani vele. Ellenben egy interpretált rendszerrel ez a lehetőség hamar elhalványul a sokkal nagyobb késleltetések miatt. Ezért írtam én C-t, persze úgy értettem, hogy fordítani kell, nem interpretálni azt is. Persze értem az igényt szkript nyelvekre is.

Én a saját hobbi karrieremben elég gyorsan elértem az Arduino lib határait is, és hamarosan bare metál programozásra tértem át azért, mert real-time-ra szinte teljesen alkalmatlan az Arduino library is. Például egy pin billentés kb 100x lassabb a standard Arduino hívással, mint lehetne. Vagy szabályzót csináltam volna, és debug értékeket ki akartam küldeni serial out-on. A bitrate-be bele fért volna periodusonként 1-2 érték kiiratása, de mivel az Arduino serial szinkron hívás, ezért nem lehet real time programból használni. Ehhez hasonló korlátok miatt lassan minden komponensét újra kellett írnom már, amikor nagyobb teljesítmény kellett.  Az Arduino hardver viszont lényegében csak egy mikrokontroller, az tökéletes.

Ha túrja az ember az Arduino-s fórumokat, akkor tele van olyan javaslatokkal, hogy egyszerű kis számítás igényű feladatokkal is teljesítmény problémába ütköznek emberek, és az első hozzászólás mindig az, hogy vegyen az illető egy gyorsabb MCU-t, és azzal dolgozzon! Miközben aki ért hozzá az tudja, hogy a feladatot bare metál az adott MCU röhögve tudja, csak éppenséggel Arduino-ban programozva nem fog működni.

Nem tudom milyen rendszer kell ahhoz, hogy a C fordító önmagán futhasson, de nekem úgy tűnik, hogy egy ilyen rendszer vezérlőnek meg már overkill volna. A legtöbb fordítót/interpreters óriási erőfeszítés lehet oprendszer nélküli beágyazott rendszerre portolni. Talán van amit eleve erre terveztek, azt talán egyszerű (Lua). De a többséggel én nem küzdenék, hogy Linux nélkül elindítsam.

Esetleg olyat tudnék elképzelni, hogy duál CPU-s rendszer van egyetlen kártyán: egy mini Linux képes SBC, ami GUI képes is (USB hoszt és HDMI kimenet), és mellé egy mikrokontroller, ami valami UART-on fixen fel van drótozva a Linuxos procira, illetve a programozása is működik. A program fordítása/előfeldolgozása így egy Linux rendszeren történne, ami már apt-get install szerűen összerakható a legtöbb vezérlőhöz. Mindezt meg lehetne úgy is csinálni, hogy a mikrokontroller egy csatlakozón keresztül kapcsolódik az SBC-re, így ha a "termék" elkészült, akkor ki lehet venni az alap gépből, én önállóan működhet tovább. Kb mintha az RPI-hez adnál egy HAT-et, amin meg egy mikrokontroller van.