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
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.