( bucko | 2019. 09. 19., cs – 04:30 )

Ettől kezdve nem is scifi, amikor a farmer megépítette a fészerben az űrhajót. ;)

Bocsi, ez csak poénkodás volt minden bántó célzás nélkül.
Azért csak elmodom a véleményemet és nem hiszem, hogy egyetértesz vele.

Ha már mikrokontrollerről meg hordozhatóságról beszélünk, akkor nézzük először a hordozhatóság oldalát!
Az a kérdés, hogy a mikrokonrollerre készült entitást mikor kell hordozni? Egy picike 8 bites mcu esetén előfordulhat-e olyan, hogy egy sokkal nagyobb platformra kerüljön ugyanaz a kód? Esetleg olyan jót írtál arduinóra, hogy át kell tenni rpire - és ott ugyanolyan perifériák lesznek-e?
Avagy mennyire kell egy 100 soros assembler programnak hasonlítania egy RTOS alá megírt szoftverhez?
Egy pillanatra zárjuk ki a hobbiprojektet, ahol rpivel ledet villogtatsz, aduinoval meg bonyolult számításokat és vezérléseket végzel, hálózatot és monitort hajtva. Vagyis tegyük fel, hogy az alkotóelemek megválasztása mögött üzleti döntések állnak.

Ha van egy határvonal a kis és nagy feladat között, akkor valószínűleg mindegyikhez a megfelelő eszköztárat érdemes használni. A kis feladatoknál zavaró, ha egy egyszeű programocskából operációs rendszer szerűen kezeled a perifériákat. Nagyobb rendszernél meg éppen igény van rá.

Ugyanide tartozik az embedded rendszer fogalma is, aminek a mibenlétét már oly sok topic taglalta, bár elég sokszínű véleménnyel. Mégis itt húzom meg a határt. Az embedded rendszeren mondjuk operációs rendszer fut, a kissebbeken meg firmvare, ami működhet önállóan vagy kapcsolódhat valamihez.

Eljutottunk a HAL és az RTOS fogalmakig. Ezek a rövidítések operációs rendszer és szoftver környezetben fordulnak elő. Kisebb rendszeren megírom pl. a TIMER1 inicializálását 6 utasítással, az indítást és leállítást meg 1-1 utasítással. Ezeket esetleg elrakom egy makróba, ha zavarnak. Másik mcu-ra vagy változatlan lesz a forrás, vagy írok egy másik makrót is. De csak egyszer, mert utána készen van. Tehát ezen a szinten az "alacsony szintű device drivert" csak egyszer kell megírni, de ez nem is az. Hiszen csak egy TIMER, ami megfelelően működik, lehet használni is. Utána a főprogramban (ok, legyen business logic ;)), már csak ennyi látszik: "írj az eepromba egy blokkot innen oda" vagy "küldj egy blokkot az usb-re innen". Ettől kezdve írhatod C-ben, de C# ban is. ;)
De ez nem HAL vagy device driver, csak függvény illetve szubrutin hívás.

A bonyolultabb főprogram részletet vagy függvényt - ha szükséges - megírom awk-ban és kipróbálom. Utána az awk scriptet bemásolom az assembler forrásba és átírom. ;) Se emulátor, se debugger.

Most már talán én sem tudom mit akartam mondani... ;)