Beágyazott operációs rendszerek

A tantárgy angol neve: Embedded Operating Systems

Adatlap utolsó módosítása: 2022. december 27.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Villamosmérnöki szak, MSc képzés       
Számítógép-alapú rendszerek főspecializáció      
B tantárgy       

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIAUMB06   2/1/0/v 5  
3. A tantárgyfelelős személy és tanszék Dr. Vajk István,
A tantárgy tanszéki weboldala https://www.aut.bme.hu/Course/VIAUMB06
4. A tantárgy előadója
 Név:
 Beosztás: Tanszék, intézet:
 Dr. Vajk István
 egyetemi tanár
 Automatizálási és Alkalmazott
 Informatikai Tanszék
 Bányász Gábor
 egyetemi tanársegéd
 Automatizálási és Alkalmazott
 Informatikai Tanszék
 Szabó Zoltán
 mérnöktanár
 Automatizálási és Alkalmazott
 Informatikai Tanszék
5. A tantárgy az alábbi témakörök ismeretére épít A C és C++ nyelv, valamint az objektum orientált szoftverfejlesztési elvek ismerete és alkalmazása.
6. Előtanulmányi rend
Kötelező:
NEM
(TárgyEredmény( "BMEVIAUMA08", "jegy" , _ ) >= 2
VAGY TárgyEredmény("BMEVIAUMA08", "FELVETEL", AktualisFelev()) > 0)

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

Ajánlott:
-
7. A tantárgy célkitűzése A tantárgy célkitűzése bemutatni azokat az operációs rendszereket, ill. a hozzájuk kapcsolódó eszközöket, amelyek a korszerű beágyazott rendszerekben megvalósítandó komplex szoftverrendszerek hatékony végrehajtását lehetővé teszik. A tantárgy egyrészt a kisebb – mikrokontroller kategóriájú – eszközökön alkalmazható operációs rendszereket mutatja be, melyek segítségével egyszerűbb szenzorok, IoT eszközök szoftverrendszerei megvalósíthatók. Kitér ezek legfőbb tulajdonságaira, szolgáltatásaira, alkalmazási lehetőségeikre. Másrészt a kifejezetten komplex, akár többprocesszoros rendszerekben alkalmazható Linux operációs rendszert részletesen ismerteti. A Linux operációs rendszerrel kapcsolatban bemutatja a rendszer alapvető felépítését, működését, a hatékony driver és alkalmazásfejlesztés sajátosságait. A megszerzett ismeretek használatával a hallgatók képesek lesznek komplex rendszerek (pl. mobil robotok, autonóm járművek, stb.) különböző komponenseinek Linux alapon történő megvalósítására, ill. a rendszerhez illesztésére.
8. A tantárgy részletes tematikája

I. Az előadások részletes tematikája:

1.  Beágyazott szoftver architektúrák. Operációs rendszerek alapvető szolgáltatásai, a beágyazott rendszerekben történő alkalmazásuk sajátosságai.

2.  Operációs rendszerek elterjedtsége, kiválasztási szempontjaik. Operációs rendszerek alkalmazása többprocesszoros rendszerekben. A uCos-II, uCos-III operációs rendszerek felépítése és szolgáltatásai. Ütemező algoritmus, taszkok nyilvántartása, elérhető szolgáltatások, taszkok közötti kommunikáció.

3.  A FreeRTOS operációs rendszer felépítése és szolgáltatásai. Ütemező algoritmus, taszkok nyilvántartása, elérhető szolgáltatások, taszkok közötti kommunikáció. Heap kezelés, stack overflow detektálás és kezelése.

4.  A GNU/Linux operációs rendszer általános jellemzőinek bemutatása. Megismerkedés a Kernel legfőbb jellemzőivel úgymint ütemezés, memóriakezelés, taszkok nyílvántartása. Az operációs rendszer felépítésének elemzése.

5.  Az alapvető Unix parancsok áttekintése. A BASH shell parancssori és programozási funkciónak részletes tárgyalása. A klasszikus jogosultság kezelés. Egyszerű reguláris kifejezések.

6.  A minimális beágyazott Linux rendszert felépítő legfontosabb komponensek bemutatása. Boot manager, Linux Kernel, glibc, busybox, konfigurálásának és fordításának lépései. Állományrendszerek típusai és a kezelésük.

7.  Automatizált beágyazott Linux rendszert generáló eszközök áttekintése úgy mint Buildroot, OpenEmbedded, Yocto Project. A Yocto Project rendszer felépítésének bemutatása.

8.  A Yocto Project rendszer generálási folyamatába saját komponensek, kiegészítések, javítások beillesztése. Az SDK generálása. Az SDK generálás kiegészítése az egyéni komponensekkel. Szimulációs rendszer létrehozása fejlesztéshez, teszteléshez.

9.  Ismerkedés a fejlesztő eszközökkel: fordító (gcc), fejlesztői könyvtárak, Makefile szintaktikája, autotools.

10.  Az állományabsztrakció bemutatása, és az állománykezelő rendszerhívások áttekintése, beleértve az i-node kezelő függvényeket, I/O multiplexálást, az ioctl rendszerhívást is. Socket kezelés.

11.  A Linux kernel fejlesztés alapjai. Kernel modulok írása, fordítása, használata. Paraméterátadás a modul számára. Karakteres eszközvezérlő felépítésének rövid bemutatása. Megszakítás kezelés.

12.  Linux eszközvezérlő modell bemutatása, GPIO, I2C, SPI buszokra kapcsolódó eszközök Kernel-space drivereinek felépítése, megvalósítása. Eszköz erőforrás menedzsment.

13.  Device Tree bemutatása. Device Tree támogatás implementálása az eszközmeghajtókban. Kernel szálak. Megszakítás kezelés kernel szálakkal. Konkurencia kezelés a kernelben: atomi műveletek, spinlock, semaphore, mutex.

II. A gyakorlatok részletes tematikája:

1.  uCos-II, uCos-III, FreeRTOS operációs rendszerek implementációs sajátosságai, konfigurálása.

2.  FreeRTOS operációs rendszer használata egy mérési adatgyűjtő alkalmazás megvalósításához.

3.  Ismerkedés a Linux rendszerrel. Állományrendszer felépítése. A rendszer konfigurációs állományainak áttekintése. A shell programozás és a jogosultság kezelés gyakorlása.

4.  A Yocto Project rendszer használatának gyakorlati bemutatása. Linux rendszer elkészítése egy megadott eszközre az első lépésektől a kész rendszerig.

5.  Alkalmazás fordítás a gyakorlatban. Hibakeresés eszközei (gdb, malloc debugerek, valgrind, AddressSanitizer, strace), integrált fejlesztői környezetek. BitBake recept készítés az alkalmazáshoz.

6.  Egyszerű Linux eszközmeghajtó példák az előadáson elhangzottak bemutatására. Hibakeresés módszerei.

7.  Gyakorlati I2C, SPI Kernel driverek bemutatása. A Yocto Project rendszerben az SDK kiegészítése a Kernel modulok különálló fordításához. A driver beillesztése a Yocto Project rendszer generálási folyamatába.

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) A tárgy anyaga előadásokon és gyakorlatokon kerül ismertetésre. Az előadások és a gyakorlatok az anyag ütemében váltogatják egymást, a gyakorlatokon példák és esettanulmányok formájában kerül elmélyítésre az előadásokon elhangzott elméleti tananyag.
10. Követelmények

Szorgalmi időszakban:

Az ismeretek átfogó és részletes áttekintését a szorgalmi időszak alatt egy alkalommal nagyzárthelyivel mérjük. Az aláírás megszerzésének feltétele a zárthelyi elfogadható (legalább elégséges szintű, azaz minimum 45%-os) megoldása. A vizsgára bocsátás feltétele az aláírás megléte.

Vizsgaidőszakban:

A vizsga írásbeli. A kreditpont megszerzésének feltétele: legalább elégséges vizsgaosztályzat elérése.
A tárgyból szerzett érdemjegy 30%-ban a zárthelyin, 70%-ban a vizsgán elért eredményből (pontszámból) kerül meghatározásra.
11. Pótlási lehetőségek

A zárthelyihez a TVSz előírásai szerint a szorgalmi időszakban 1 pótlási lehetőséget biztosítunk. Második pótlás lehetősége csak indokolt esetben, egyéni egyeztetést követően biztosítható.

A vizsgák a TVSz előírásai szerint pótolhatók.
12. Konzultációs lehetőségek Órák előtt és után, valamint a számonkérésekhez kapcsolódóan egyeztetés szerint.
13. Jegyzet, tankönyv, felhasználható irodalom
  • Bányász G., Szabó Z.: Beágyazott operációs rendszerek (Elektronikus jegyzet). BME AUT, 2023.
  • Tevesz G., Szabó Z.: Mikrokontroller alapú rendszerek (Elektronikus jegyzet). BME AUT, 2022.
  • Richard Barry: Mastering the FreeRTOS Real Time Kernel, Real Time Engineers Ltd., 2016.
  • Asztalos Márk, Bányász Gábor, Levendovszky Tihamér: Linux programozás, Szak Kiadó 2013.
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra39
Félévközi készülés órákra 24
Felkészülés zárthelyire 32
Házi feladat elkészítése -
Kijelölt írásos tananyag elsajátítása 19
Vizsgafelkészülés 36
Összesen 150
15. A tantárgy tematikáját kidolgozta
 Név:
 Beosztás: Tanszék, intézet:
 Dr. Vajk István
 egyetemi tanár
 Automatizálási és Alkalmazott
 Informatikai Tanszék
 Bányász Gábor
 egyetemi tanársegéd
 Automatizálási és Alkalmazott
 Informatikai Tanszék
 Szabó Zoltán
 mérnöktanár
 Automatizálási és Alkalmazott
 Informatikai Tanszék