Beágyazott információs rendszerek
VIMIAD04 | Mérnökinformatikus BSc | Félév: 6 | Kredit: 5
A tantárgy célkitűzése
A tantárgy célja a fizikai, biológiai, kémiai környezetükkel aktív, valós-idejű információs kapcsolatban álló beágyazott rendszerek létrehozásához és működtetéséhez szükséges, az informatikai alapműveltségen túlmutató speciális tudás és készségek fejlesztése gyakorlati példákon keresztül. A tantárgy elsősorban azokra a vonatkozásokra mutat rá, amelyek - a környezetünk folytonos és párhuzamos jelenségei, valamint az azt befolyásolni igyekvő számítástechnika kifejezetten szekvenciális jellegéből adódóan - fokozott odafigyelést és alaposabb felkészültséget igényelnek. Ennek érdekében kiemelten szerepel a valós-idejű működés, valamint kisebb mértékben a szolgáltatásbiztonság követelményeit figyelembe vevő tervezési elvek bemutatása.
A tantárgy az ismereteket egykártyás számítógépes platformon, beágyazott Linux környezetben demonstrálja, és ebben a környezetben rendszer- és szoftverfejlesztési ismereteket is nyújt. Ugyanakkor a tárgy kitér a mikrovezérlőket alkalmazó egyszerűbb beágyazott rendszerek jellegzetességeire is, beleértve a szoftver aspektusokra is, mint pl. az MCU-on futtatható beágyazott operációs rendszerek (pl. FreeRTOS) és a Linux különbségeire, a HW platform és OS választás részleteire stb.

Kovácsházy Tamás
docens
tárgyfelelős
A tantárgy részletes tematikája
1. hét: Bevezetés. A beágyazott rendszerek alkalmazásai, alkalmazási példák. A beágyazó fizikai környezet jellegzetes tulajdonságai, az azokból származó speciális követelmények. Valós-idejű (real-time) rendszer és biztonságkritikus rendszer fogalmak bevezetése, és az azokkal kapcsolatos HW és SW elvárások, következmények. Kiberfizikai rendszer koncepció. A beágyazott rendszer, mint erőforrás korlátozott környezet, erőforrásokkal történő hatékony gazdálkodás, beleértve az energiát (low-power).
2. hét: A beágyazott információs rendszerek jellegzetes rendszerarchitektúrái, komponensek, elosztott beágyazott rendszerek. Fizikai kapcsolat a külvilággal (interdiszciplináris, multidomén, pl. mechanika, fizika, kémia, biológia, stb.), szenzorok és beavatkozók, humán interfész (user interface, szerviz interfész, stb.). Kapcsolat a fizikai beágyazó környezettel rendszerszinten, ANSI/IEC 60529-2004 és MIL-STD-810. Fizikai beágyazó környezetből származó információ jellegzetes tulajdonságainak elemzése.
3. hét: A beágyazott rendszerekben alkalmazott végrehajtó egységek. Mikrovezérlők, alkalmazás processzorok, azok összehasonlítása a mobil, asztali (desktop) és szerver processzorokkal. Homogén és heterogén többprocesszoros rendszerek és SW támogatásuk, rendszerchipek (System on a Chip, SoC). Memória alrendszer, fizikai memória és virtuális tárkezelés, cache szerepe beágyazott környezetben, Linux példákkal. Spekulatív végrehajtás és a memória alrendszer hatása a végrehajtási időre, worst-case végrehajtás fontosságának kiemelése.
4. hét: Jellegzetes beágyazott perifériák és azok alkalmazásai. GPIO, A/D és D/A, I2C/SPI/I2S buszok, timerek. GPIO alkalmazásai, jelszint-illesztési megoldások nagyteljesítményű perifériák vezérlésére. Jel-integritás és elektromágneses-interferencia elkerülésének a fontossága.
5. A beágyazott rendszerek tipikus szoftver komponensei, periféria könyvtárak és Board Support Package (BSP), beágyazott operációs rendszer (típusaik, típusra jellegzetes felépítésük), köztes rétegek (middleware). Beágyazott Linux és FreeRTOS összehasonlítása, használati-esetek. Beágyazott virtualizáció különböző formái és megvalósítása Linux példákkal.
6. hét: Periféria kezelés tipikus SW megoldásai, GPIO, A/D és D/A átalakító, I2C/SPI/I2S chipek közötti kommunikációs megoldások SW alrendszerei beágyazott Linux-ban. Jellegzetes beágyazott perifériák bemutatása és kezelése magas szinten (user-space). A user-space és kernel-space beágyazott periféria kezelése összehasonlítása, elemzése. A kernel programozás előnyei és hátrányai, kerülésének indokai.
7. hét: Polling és interrupt alapú perifériakezelés, és azok összehasonlítása, jellegzetességeik ezek megjelenése a beágyazott Linux-ban. Valós-idejű periféria kezelés megoldásai, elemzése és vizsgálata. Esemény-vezérelt szoftver architektúrák, és azok megjelenése a Linux operációs rendszerben. Esemény-vezérelt és többszálú programozás mintái (select, poll rendszerhívások), szálak közötti szinkronizáció a gyakorlatban, közös erőforrások kezelése.
8. hét: Ütemező, ütemező választás, ütemező befolyásolása, valós-idejű ütemezés. Folyamatok és szálak használata és alkalmazásának a következményei. Rendszerindítás és folyamatmenedzsment alapjai (systemd és alternatívái, hosszú távú ütemezés).
9. hét: Hálózatba kapcsolt beágyazott rendszerek, szenzorhálózatok, biztonságkritikus és valós-idejű működés nehézségei elosztott rendszerekben. Elosztott rendszerek idő-vezérelt működése, az idő-vezérelt működés összehasonlítása az esemény-vezérelt megközelítéssel. Valós-idejű kommunikációs megoldások beágyazott rendszerekben.
10. hét: Idő kezelése elosztott rendszerben, óra- és frekvencia szinkronizáció problémái, szükségessége és megoldásai. Globális óraszinkronizáció (GNSS). Network Time Protocol (NTP) működése és korlátai. Óraszinkronizáció a telephelyen (pl. lokális hálózatban), IRIG és IEEE 1588, valamint annak a profiljai.
11. hét: Időérzékeny hálózatok (Time-Sensitive Networks, TSN), alapműködés, szolgáltatások. Valós-idejű köztesrétegek, alkalmazási réteg protokollok beágyazott információs rendszerekben. Publish-Subscribe megoldások és azok vizsgálata biztonságkritikus, valós-idejű beágyazott rendszerekben. MQTT és a valós-idejűség, OPC-UA és annak a TSN leképzése, Data Distribution Service (DDS).
12. hét: Heterogén többprocesszoros rendszerek alkalmazástechnikája, aszimmetrikus többprocesszoros rendszerek ütemezése. Edge rendszerek, edge és cloud kapcsolata. Edge compute HW és SW lehetőségei, számábrázolás hatása a számítási teljesítményre és a fogyasztásra. MI Edge Compute esettanulmány.
13. hét: Beágyazott rendszerek fejlesztése, hibakeresés beágyazott rendszerekben. Keresztplatformos fejlesztés, programletöltés és program nyomkövetése beágyazott rendszerekben. Oszcilloszkóp és logikai analizátor alkalmazása szoftver hibakeresés során, műszere programozott elérése esettanulmány.
A laborok részletes tematikája
1. hét: A laborok során használt fejlesztőkörnyezettel történő ismerkedés.
2. hét: Ismerkedés a valós-idejűség fogalmával Linux alatt egyszerű példaprogramokon keresztül, teljesítmény vizsgálat.
3. hét: Tárkezelés, és azon belül is a virtuális tárkezelés tulajdonságaival történő ismerkedés Linux alatt, memória alrendszer hatása a valós-idejűségre, teljesítmény vizsgálat.
4. hét: GPIO és A/D periféria villamos tulajdonságainak a vizsgálata kész szoftver felhasználásával.
5. hét: I2C periféria villamos működésének a vizsgálata kész szoftverrel.
6. hét: GPIO periféria interfész programozása beágyazott Linux alatt, a különböző megoldások időzítési viszonyainak vizsgálata.
7. hét: Eseménykezelés (pl. poll() rendszerhívás) és többszálú programozás mintáinak vizsgálata beágyazott alkalmazásban.
8. hét: Linux ütemezés befolyásolása, a valós-idejű ütemezési osztályok használata, és azok alkalmazásának hatása GPIO kezelés esetén.
9. hét: Rendszerindítási folyamat vizsgálata, egyszerű systemd script készítése beágyazott Linux program indítására.
10. hét: Beágyazott alkalmazási-réteg protokollok vizsgálata valós-idejűség szempontjából (MQTT és DDS összehasonlítása), késleltetés mérés az alkalmazási rétegben.
11. hét: Időkezelés Linux alatt, Linux rendszerórák és timerek használata. Időbélyegek kezelése.
12. hét: NTP és IEEE 1588 óraszinkronizációs megoldások a gyakorlatban.
13. hét: RemoteProc és RPMsg alkalmazása heterogén többprocesszoros környezetben egyszerű példával.