Az integrált fejlesztőkörnyezet (IDE - Integrated Development Environment) olyan szoftveres eszköz, melynek feladata megkönnyíteni a fejlesztést. Tulajdonképpen egy szövegszerkesztő, de a dokumentumok formázása helyett a programfejlesztést segíti különböző komponensekkel. Szintaxis alapján színezi és automatikusan kiegészíti a szöveget, beépített hibakeresővel, verziókezelővel és parancssorral is rendelkezhet.
Visual Studio, VS Code, PyCharm, Android Studio, Xcode ...
A beágyazott rendszerek fordítóprogramos nyelvekkel programozhatók, amelyek használata néhány alapszintű lépésből áll. A lépések részleteikben nagyon eltérők lehetnek IDE-től függően, de megközelítőleg azonosak.
Első lépésként a programozó elkészíti a kódot valamilyen magasszintű programnyelv alkalmazásával. Közben figyel az átlátható struktúrára, megjegyzésekkel látja el a kódot. Lehetséges, hogy a projekt több fájlban van, amelyek még eltérő kiterjesztésűek is lehetnek. A szükséges formátumokat a fejlesztőkörnyezet adja meg.
A fordítás előtt az IDE elvégez egy előfeldolgozást a kódon, például felülírja a makrókat, ellenőrzi a feltételes fordításra vonatkozó parancsokat. Az előfeldolgozó direktívák a C nyelvben kettőskereszttel (#) kezdődnek.
Előfeldolgozás után a fordítóprogram (compiler) lefordítja a forráskódot egy köztes formátumra, például az assembly nyelvre, közben ellenőrzi a szintaktikai hibákat, optimalizálja a kódot, és létrehozza a gépi kódot tartalmazó objektumfájlokat. A program több forrásfájlból állhat, minden fájlt külön-külön lefordít a rendszer.
A linker kapcsolja össze a fordítást követően a különálló objektumfájlokat, valamint a külső és beépített függvénykönyvtárakat. Meghatározza azt is, hogy a kód és az adatok mely memóriaterületekre kerüljenek. Az eredmény egy olyan fájl, amely tartalmazza az összes szükséges függvényt és erőforrást.
A linker által létrehozott végrehajtható fájlt át kell alakítani egy eszközspecifikus bináris formátumra. Ez a fájl már feltölthető a célhardverre, és tartalmazza a futtatásához szükséges kódot és adatokat. Le is lehet akár tölteni egy működő eszközről ezt a bináris fájlt, majd feltölteni egy másik eszközre, az eredeti forráskód nem visszanyerhető. Az idegen forrásból származó kódok futtatását a Secure boot funkció előzi meg.
Az eddigi lépésekhez nem volt szükséges a hardver megléte, csak annak ismerete. A feltöltéshez már szükség van a mikrovezérlőre, amit valamilyen módon csatlakoztatni kell a számítógéphez. Bizonyos vezérlőkhöz egy külső programozóegység kell (pl. AVR, PIC), mások beépített bootloader-rel rendelkeznek (pl. ESP).
Sok népszerű programnyelv eltér a fordítóprogramos vagy gépi nyelvektől. Ezek az úgynevezett szkriptnyelvek futás közben vannak értelmezve egy interpreter által. Nincsenek előzetesen lefordítva, azonnal futtathatók, cserébe lassabbak. Használatukkal könnyen készíthetők platformfüggetlen applikációk, viszont nem lehet a a felhasználó elől elrejteni a forráskódot. Beágyazott rendszerek esetében hardverekhez nem, de teszteléshez vagy egyéb automatizálási feladatokhoz széles közben használnak szkriptnyelveket.
Python, JavaScript, Lua, R, PHP
Arduino IDE letöltése: https://www.arduino.cc/en/software
ESP32 Core telepítése: https://docs.espressif.com/.../installing.html