Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Beágyazott Linux és platformjai

    A tantárgy angol neve: Embedded Linux and its Platforms

    Adatlap utolsó módosítása: 2023. február 6.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Alapképzés (BSc), villamosmérnöki szak
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIMIAC19 5 2/2/0/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Kovácsházy Tamás,
    A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/VIMIAC19
    4. A tantárgy előadója Dr. Kovácsházy Tamás
    Szántó Péter
    5. A tantárgy az alábbi témakörök ismeretére épít

    Programozás C/C++ nyelven

    Beágyazottszoftver-fejlesztés

    Mikrokontroller alapú rendszerek

    Számítógép architektúrák

    Operációs rendszerek

    Számítógép hálózatok

    6. Előtanulmányi rend
    Ajánlott:
    Beágyazottszoftver-fejlesztés

    Mikrokontroller alapú rendszerek
    7. A tantárgy célkitűzése A tárgy elsődleges célja a hallgatók bevezetése a beágyazott Linux alkalmazás (user-space)
    fejlesztés részleteibe, beleértve a platform választást is. A platformok tekintetében érintjük a
    klasszikus PC (x86) platformot, de elsősorban a modern heterogén architektúrájú rendszerchipekre
    (SoC) és az FPGA platformra összpontosítunk.
    Ismertetjük a beágyazott Linux user-space szoftver lehetőségeit, a fejlesztés menetét, a tipikus
    alapfeladatokat, pl. parancssor és konfiguráció feldolgozás, programvégrehajtás és életciklus
    menedzsment részletei (systemd), párhuzamos és valós-idejű végrehajtás (multicore és heterogén
    környezetben). Ezen kívül sor kerül még az fájlrendszerrel való ismerkedésre és a hálózatkezelésre
    is bevezető szinten.
    Kitérünk a Linux videó alrendszerére (V4L2), a hardver gyorsított kép- és videó feldolgozást
    támogató magas szintű megoldásokra (GStreamer, FFmpeg, OpenCV), valamint a párhuzamos
    végrehajtó egységek (grafikus processzorok, FPGA-k) programozási lehetőségeire (OpenCL, CUDA).
    Ismertetjük a komplex, heterogén System-on-Chip (SoC) megoldások jellemző felépítését (pl. TI
    AM3x/4x/5x/6x, NXP i.MXx, NVIDIA Jetson), az újrakonfigurálható SoC-k (pl. Xilinx MPSoC, Versal)
    architektúráját. Bemutatjuk az újrakonfigurálható hardverek szoftver környezetének kialakítását,
    valamint az egyedi, hardver gyorsított alkalmazásfejlesztés lehetőségeit.
    8. A tantárgy részletes tematikája

    Előadás

    1. Beágyazott Linux bevezető, a Linux felépítése és platformjai (SoC, FPGA, stb.), SW végrehajtási
    modell és memória menedzsment (virtuális tárkezelés és annak következményei), perifériák kezelés lehetőségei és következményei Linuxban (user- és kernel-space).

    2. Shell használta. Linux programok alapjai, parancssor és konfiguráció kezelése. Fájlrendszer és
    használata, beleértve /proc, /sys, stb. fájlrendszereket. Soros port (UART) használata programozott
    módon.

    3. Ütemező, ütemező befolyásolása, valós-idejű ütemezés. Folyamatok és szálak használata és
    alkalmazásának a következményei. Eseményvezérelt programozás mintái (select, poll, epol).
    Rendszerindítás és folyamatmenedzsment alapjai (systemd és alternatívái).

    4. Kölcsönös kizárás, kommunikáció és szinkronizáció Linux-ban. Megoldások közös memória
    esetén (folyamat kontextusában futó szálak között). Mutex, readers-writer lock, user-space
    spinlock, conditional variable és azok használata.

    5. Folyamatok közötti kommunikáció (IPC) alacsony szinten és magas szinten (DBUS).
    Eseménykezelés, csővezetékek, folyamatok közötti osztott memória és annak ahasználata, file
    locking, DBUS alapok.

    6. Beágyazott perifériák kezelésére alkalmas alrendszerek, rövid bevezetés a Device Tree-be. GPIO
    kezelése Linux-ban és a programozási modelleknek a hatása a teljesítményre. A/D és D/A kezelés,
    I2C, SPI és CAN kezelése Linux-ban, a kapcsolódó alrendszerek felépítése.

    7. User-space driverek, USB kezelés és TUN/TAP felhasználói módban. Memóriába leképzett
    perifériák elérése felhasználói módban, előnyök és hátrányok.

    8. Alacsony (socket) és magas szintű (HTTP, stb.) hálózatkezelés, köztes rétegek (Middleware).

    9. Heterogén architektúra támogatása, feladatütemezés és kommunikáció külső HW gyorsítókkal
    (valós-idejű magok, AI gyorsítás, OpenCV gyorsítás példával, etc).

    10. A Linux multimédia alrendszere: Video for Linux (V4L2). Multimédia keretrendszerek
    áttekintése: Gstreamer, FFmpeg.

    11. SoC, fogalma, jellemző felépítése. Fix funkciós és programozható hardver egységek, ezek
    rendszerbe illesztése. GPU-k felépítése.

    12. Heterogén rendszerek programozási modellje: OpenCL és CUDA.

    13. FPGA alapú SoC eszközök jellemzői (Intel, Lattice, Xilinx). Processzoros alrendszer,
    programozható logika és egyéb rendszer elemek ismertetése. FPGA alapú gyorsítók magas szintű
    leírása: OpenCL és HLS.

    Gyakorlat

    1. gyakorlat: Fejlesztő Rendszer összeállítása

    2. gyakorlat: Shell programozás és parancssor kezelés, soros port kezelése termio-val.

    3. gyakorlat: Folyamat és szál létrehozása, ütemezés befolyásolása (RT és CPU affinitás),
    folyamatkezelés systemd-vel

    4. gyakorlat: Select és poll/epol alapú komplex SW architektúrák

    5. gyakorlat: Kölcsönös kizárás és szinkronizáció közös memóriában, IPC megoldások használata

    6. gyakorlat: GPIO (GPIO user-space könyvtárral és memóriába leképezve) kezelése felhasználói
    programban, I2C és SPI kezelése (user-space saját driver megírása és létező kernel driver
    használata)

    7. gyakorlat: User-space USB periféria kezelése (periféria MCU-n megvalósítva, kész kóddal, kommunikációs specifikációval)

    8. gyakorlat: Socket programozás, HTTP kliens programozás (információ letöltése programból
    szerverről)

    9. gyakorlat: Remoteproc és rpmsg a gyakorlatban, OpenCV heterogén rendszerchip-en
    (remoteproc és rpmsg magas szinten)

    10. gyakorlat: V4L2 user space API használata.

    11. gyakorlat: Gstreamer használata.

    12. gyakorlat: OpenCL/CUDA alapok: hoszt kód és egyszerű kernel.

    13. gyakorlat: OpenCL/CUDA: kernel programozás.

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás elméleti anyaggal és az anyagrészek gyakorlatban történő demonstrációjával és gyakorlat.
    10. Követelmények

    Szorgalmi időszakban

    Részvétel a gyakorlatokon: A gyakorlatokon a részvételt ellenőrizzük, a
    megrendezésre kerülő gyakorlatok minimum 2/3-án a részvétel
    kötelező az az aláíráshoz és a vizsgára bocsáthatósághoz.
    Házi feladat elkészítése: A házi feladat elfogadható szintű teljesítése
    szükséges az aláíráshoz és a vizsgára bocsáthatósághoz.
    A házi feladat egy beágyazott Linux-t használó funkcionális rendszer
    elkészítése. A feladat specifikációját a 4. oktatási hét végéig le kell adni.
    A 8. feladat terveit és a kulcskoncepciókat bemutató prototípusokat a 8.
    hétig lehet bemutatni. A teljes, működőképes feladatot a
    dokumentációval a szorgalmi időszakban lehet leadni.

    Vizsgaidőszakban

    Szóbeli vizsga.

    11. Pótlási lehetőségek

    A gyakorlatok nem pótolhatók, azoknak legalább a 2/3-án a megjelenés kötelező (13 vagy 14
    gyakorlat esetén 9-en, 12 esetén 8, az aktuális szám a félév beosztásától függ).

    A specifikációt a 8. hétig, a házi feladat terveit és kulcskoncepcióit bemutató prototípusokat a 14.
    hétig lehet pótolni (következő ütemezett feladatrész leadási határidejéig). A végleges házi feladat
    leadása a pótlási héten pótolható, ha ez előzetes dokumentációk leadásra kerültek az azokra
    megadott pótlási feltételekkel.

    A házi feladat zárthelyivel nem helyettesíthető.

    12. Konzultációs lehetőségek Az előadókkal és gyakorlatvezetőkkel kérésre előre egyeztetett időpontban lehetséges a konzultáció.
    13. Jegyzet, tankönyv, felhasználható irodalom

    W. Richard Stevens (Author), Stephen A. Rago, „Advanced Programming in the UNIX Environment
    (3rd Edition) (Addison-Wesley Professional Computing Series, 2013.

    Asztalos Márk, Bányász Gábor, Levendovszky Tihamér, „Linux programozás, Második, átdolgozott
    kiadás", 2013.

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra56
    Félévközi készülés órákra0
    Felkészülés zárthelyire0
    Házi feladat elkészítése30
    Kijelölt írásos tananyag elsajátítása20
    Vizsgafelkészülés44
    Összesen150
    15. A tantárgy tematikáját kidolgozta Dr. Kovácsházy Tamás
    Szántó Péter
    IMSc tematika és módszer Az IMSc program hallgatói számára emelt szintű házi feladat elkészítését tesszük lehetővé.
    Alapvető célunk az, hogy a hallgatókat a tananyag mélyebb megismerésére ösztönözzük, és
    nagyobb választási lehetőségeket is kínáljunk számukra. Ezen kívül az előadásokon rendszeresen
    rámutatunk a tárgy tematikáját kiegészítő, emelt szintű, önállóan elsajátítható, kiegészítő
    ismeretekre, amelyek bemutatását a szóbeli vizsgán figyelembe vesszük az értékelés során.
    IMSc pontozás

    A tantárgyból maximum 25 IMSc pont szerezhető.

    Ebből 15 IMSc pont szerezhető az emelt szintű házi feladat vállalásával (ennek igényét a
    hallgatónak a félév elején jeleznie kell) és kiemelkedő műszaki szinten történő elkészítésével. Az
    emelt szintű házi feladatok értékelését a tárgyfelelős és a házi feladat konzulense együtt végzi.
    A szóbeli vizsgán 10 IMSc pont szerezhető a vizsgán érintett tématerületekből megadott kiegészítő
    anyagrészek ismeretéért.

    Az IMSc pontok gyűjtése csak a kiemelkedően elkészített házi feladat és jeles vizsga esetén
    lehetséges, az extra feladatok megoldásával. Ezen pontok megszerzése nélkül is jeles szinten
    teljesíthetők a tantárgy követelményei. Az IMSc pontok megszerzése az IMSc programban nem
    résztvevő hallgatók számára is biztosított.