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.