K-INFO
HU
EN
Belépés

Beágyazottszoftver-fejlesztés

Embedded Software Development
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Tantárgy neve (magyarul, angolul)
Beágyazottszoftver-fejlesztés
Embedded Software Development
Tantárgykód BMEVIMIAC17
Tantárgyjelleg
Képzési szint
Kurzustípusok és óraszámok (heti/féléves)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 2 2 0
jelleg (kapcsolt/önálló) kapcsolt
Tanulmányi teljesítmény/értékelés típusa vizsga
Tantárgy kreditértéke 5
Tantárgyfelelős
Dr. Orosz György
beosztás: egyetemi docens
Tantárgyat gondozó oktatási szervezeti egység
Mesterséges Intelligencia és Rendszertervezés Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala http://www.mit.bme.hu/oktatas/targyak/VIMIAC17
Tantárgy elsődleges mintatantervi jellege
Közvetlen előkövetelmények – Erős előkövetelmény nincs
Közvetlen előkövetelmények – Gyenge előkövetelmény nincs
Közvetlen előkövetelmények – Párhuzamos előkövetelmény nincs
Közvetlen előkövetelmények – Mérföldkő előkövetelmény nincs
Közvetlen előkövetelmények – Kizáró feltétel nincs

Célkitűzés

Tantárgyprogram

Az előadások részletes tematikája

1. hét: A beágyazottszoftver-fejlesztés C nyelvű alapjai: A keresztfordítás lépései és sajátosságai,
C kód fordítása beágyazott vezérlőre. Kód elindulásának folyamata egy mikrovezérlőn, annak
bemutatása, hogy mi történik a main() függvény meghívása előtt.

2. hét: Memóriába leképezett regiszterek, perifériák kezelése: Hagyományos, egyedi mutatókra
épülő megoldások. Általánosított, a perifériákat blokk szintjén kezelő struktúraalapú megoldások,
és ezek szabványosítása: a CMSIS-Core bemutatása. A CMSIS core szabvány által megkövetelt
szerkezet és kódolási minta bemutatása.

3. hét: Hardware absztrakciós rétegek: A mikrovezérlő szintű absztrakció: a mikrovezérlő szintű
absztrakció feladatának és szükségességének bemutatása. A modern firmware library-k
felépítésének bemutatása. Törekvés a szabványosításra, CMSIS-Driver API, kódolási, elnevezési és
kommentezési szabályok bevezetése. A standard C környezet és a beágyazott környezet közötti
kapcsolódási pontok bemutatása.

4. hét: Perifériák interrupt-alapú kezelése: A megszakításkezelés során lejátszódó folyamatok
ismertetése, a vektoros megszakításkezelés szoftveres alapjainak bemutatása. Tipikusan
megszakításalapú perifériakezelést igénylő esettanulmányok mutatása.

5. hét: Perifériák DMA (Direct Memory Access) alapú kezelése: A DMA átvitel elméleti alapjainak
bemutatása. A tipikus DMA átvitelnél megadandó paraméterek ismertetése. A hatékony DMA
kezelés és a rendszerarchitektúra felépítésének összefüggései. Alkalmazási minták mutatása DMA
alapú perifériakezelésre.

6. hét: Hardware absztrakciós rétegek (board szintű absztrakció): A board szintű absztrakció
szükségessége és lehetséges felületei. Annak bemutatása, hogy miért szükséges egy magasabb
szintű absztrakció létrehozása a mikrovezérlő absztrakció fölé. Minták, szabványosítási törekvések
mutatása a board szintű absztrakcióra.

7. hét: A beágyazott szoftverek tipikus üzemmódjai: A beágyazott szoftverben megvalósítandó
tipikus üzemmódok és jellemzőik ismertetése: energiatakarékos módok, hibamódok: fail stop, fail
reduced, kalibrációs és diagnosztikai üzemmódok. A modern mikrovezérlők jellemző
energiatakarékos módjainak bemutatása, alkalmazásuk szoftveres és programszervezési kérdései.

8. hét: A beágyazott szoftverek tipikus üzemmódjai: A kalibrációs és diagnosztikai üzemmódok
szerepének bemutatása: tesztelési támogatás, működés közbeni monitorozás, konfigurálás,
hibaesemények tárolása stb. A távoli programfrissítési lehetőségek (bootloader) ismertetése. Egy
ipari diagnosztikai protokoll tulajdonságainak rövid bemutatása: XCP (Universal Measurement and
Calibration Protocol).

9. hét: A beágyazott szoftver debuggolása, tesztelése: Modern mikrovezérlők által nyújtott debug
lehetőségek, a debug kapcsolat bemutatása a mikrovezérlőtől az IDE-ig: debug hardware (CMSIS-
DAP mint általánosítási kísérlet), GDB szerver, GDB RSP, GDB parancssor. Modern vezérlők trace
képességei és az azokból nyerhető információk: DWT, ITM képességek és ezek megjelenése a
fejlesztőkörnyezetben.

10. hét: Nem preemptív szoftverarchitektúrák bemutatása, bevezetés az RTOS-ekbe: Round-Robin, megszakításokkal kiegészített Round-Robin, függvénysor alapú nem preemptív ütemezők.
A beágyazott operációs rendszerek jellemzőinek bemutatása a FreeRTOS-en keresztül: felépítés,
működés, ütemezési jellemzők, az egyes szálak üzemmódjai.

11. hét: A párhuzamos programozás alapjai (közös erőforrások használata és kölcsönös kizárás): A
közös erőforrások használatából adódó problémák bemutatása. A közös erőforrások használatára
alkalmazott elméleti megoldások, például mutex-ek működési alapjainak ismertetése.

12. hét: A párhuzamos programozás alapjai (szinkronizáció és kommunikáció a szálak között): A
szálak közötti kommunikáció eszközeinek és azok elméleti működésének bemutatása. A
szemaforok és queue-k szerepe a szálak közötti és a szálak és megszakítások közötti
kommunikációban.

13. hét: A párhuzamos programozás alapjai (jellemző problémák): A közös memóriaterületen
osztozó szálak jellemző problémái és azok elméleti kezelése: stack problémák és kezelési
módjaik. Ütemezési és ütemezhetőségi problémák. A szálak jellemző időzítési tulajdonságainak
bemutatása: végrehajtási idő és válaszidő. A végrehajtási idő mérésének módszerei, a válaszidő
számításának feltételei és módszerei.

14. hét: szünetek vagy konzultáció

 

A gyakorlatok és laborok részletes tematikája

1.hét: Ismerkedés a fejlesztői környezettel és fejlesztőkártyával: A kiválasztott környezetben egy
project létrehozása. A kód fordulás lépéseinek és a program indítási folyamatának megértése.

2.hét: Egyszerű periféria kezelése, GPIO láb kezelése: Egyszerű perifériakezelés hagyományos
memóriamutatók és a CMSIS-Core alapú struktúrák használatával.

3.hét: Perifériakezelés firmware library alapon: Firmware library függvények használata az
egyszerű perifériák kezelésére. GPIO és UART kezelési példák. A LibC portolása az UART kimeneten
keresztüli printf használathoz.

4.hét: Perifériakezelés IT használatával: Interrupt rutin megvalósítása egy kiválasztott periféria
kezelésére. Gyakorlat szerzése a megszakításkezelés területén.

5.hét: Perifériakezelés DMA használatával: A DMA vezérlő felprogramozása egy memória -
periféria átvitel megvalósítására. Az interrupt-os és DMA alapú működés összehasonlítása.

6.hét: Board szintű absztrakció létrehozása: Egy külső szenzor kezelése (például egy I2C buszos
hőmérő). API készítése a szenzorhoz, a megfelelő kezelési mód: interruptos, vagy DMA mód
kiválasztása.

7.hét: Energiatakarékos üzemmódok kipróbálása: Üzemmódfüggő fogyasztás vizsgálata, melyik
részei a processzornak maradnak ébren bizonyos módokban. Egyszerű program készítése timerre,
vagy nyomógombra történő működésre.

8.hét: Diagnosztikai üzemmód: Egy meglévő protokoll (XCP) portolása, egy egyszerű CLI (Command Line Interface) létrehozása.

9.hét: Debuggolási gyakorlat: Hagyományos debug lehetőségek, annak végigkövetése, hogy
hogyan jut el a debug parancs a fejlesztő környezetből a kártyára. Watch, Live watch alkalmazása,
trace lehetőségek: IT követés, Trace konzol beépülése a fejlesztő környezetekbe.

10.hét: Beágyazott OS: FreeRTOS elindítása a demókártyán. Egyszerű, 1-2 szálat megvalósító
demó program létrehozása.

11.hét: Kölcsönös kizárás: Közös változó/erőforrás használat problémájának demonstrálása. A
közös erőforrás-használat során alkalmazott védelmi eljárások bemutatása, példák Mutex-ek
alkalmazására.

12.hét: Szálak közötti szinkronizáció és kommunikáció: Szál - szál közötti szinkronizáció és szál -
megszakítás közötti szinkronizáció eszközei. Jelzések és üzenetek továbbítása szemaforok és
queue-k használatával.

13.hét: A beágyazott OS-ek használatánál előforduló lehetséges problémák demonstrálása és
kezelése:
Stack elfogyás demonstrálása és stack védelem. Az időzítés és ütemezés nyomkövetése a
kernel műszerezésével.

14. hét: szünetek, vagy konzultáció

A tárgy elsődleges célja a hallgatók bevezetése a beágyazott szoftverek fejlesztési témakörébe. A tárgy keretén belül ismertetésre kerülnek a beágyazott fejlesztés C nyelvű alapjai, a keresztfordítás sajátosságai, a C kód fordításának lépései és feltételei beágyazott vezérlők esetén. A hallgatók megismerik a memóriába leképezett perifériák elérési módszereit és az erre vonatkozó szabványosítási törekvéseket, mint például a CMSIS-Core-t. Bemutatásra kerülnek a beágyazott szoftverekben alkalmazott hardware absztrakciós rétegek kezdve az alacsony szintű, mikrovezérlő szintű absztrakciókkal, firmware könyvtárakkal, folytatva az erre épülő magasabb board szintű absztrakciókkal, valamint az absztrakciós rétegek létrehozásához tartozó általános szabályokkal: kommentezési, elnevezési, nyelvi készletet korlátozó (MISRA-C) szabályok és rétegszervezési minták. Ismertetjük a perifériák lekérdezése, megszakítása és DMA (Direct Memory Access) alapú kezelési elveit és a LibC függvénykönyvtár portolását. A tárgy ismerteti a beágyazott szoftverekben általánosan alkalmazott üzemmódokat, ezeken belül hangsúlyozottan bemutatásra kerül a diagnosztikai és energiatakarékos üzemmód. A hallgatók megismerhetik a fejlesztés során sokszor alkalmazott debugolási folyamatok lépéseit és felépítését, valamint a modern vezérlők által nyújtott trace és debug lehetőségeket. A tárgy a szoftverütemezés témakörével zárul. Bemutatásra kerülnek az egyszerű ütemező architektúrák úgymint a Round-Robin és függvénysoralapú ütemezés, és részletesen foglalkozunk a beágyazott operációs rendszerekkel. A FreeRTOS-en keresztül ismertetésre kerülnek a párhuzamos programozás alapjai és problémái: szálak létrehozása, közös erőforrások használata, kölcsönös kizárás, szálszinkronizáció, egyéb OS szolgáltatások. Példákkal illusztráljuk a beágyazott OS-ek használatának tipikus nehézségeit: stack problémák, időzítési, ütemezési problémák.

Tanulmányi eredmények

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Tudás

Nincsenek rögzített tanulási eredmények.

Képességek

Nincsenek rögzített tanulási eredmények.

Attitűd

Nincsenek rögzített tanulási eredmények.

Autonómia és felelősség

Nincsenek rögzített tanulási eredmények.

Oktatási módszertan

Előadás, ezt kiegészítve az egyes előadás témakörökhöz gyakorlati/demonstráció alapú oktatással.

Tanulástámogató anyagok

Online források
Elektronikus segédanyag a tárgy honlapján.

A tantárgy teljesítéséhez ajánlott előzetes ismeretek

Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
C programozási nyelv Digitális technikai alapismeretek
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
C programozási nyelv Digitális technikai alapismeretek
Általános szabályok
Követelmények: Szorgalmi időszakban: a félév során egy házi feladat elkészítése és ZH. Vizsgaidőszakban: írásbeli vizsga. Pótlási lehetőségek: A ZH egyszer pótolható a szorgalmi időszakban. Otthoni feladat a pótlások hetének végéig különeljárási díj befizetése mellett pótolható. Otthoni feladat vizsgaidőszakban nem pótolható, zárthelyivel nem helyettesíthető. Idegen nyelvi részteljesítés követelményei: 2 kreditpontért a ZH és vizsga sikeres teljesítése.
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Szorgalmi időszakban végzett teljesítményértékelések részaránya

Nincs megadva részarány.

Vizsgaidőszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Vizsgarészek részaránya

Nincs megadva részarány.

Érdemjegy megállapítása

Nincs megadva érdemjegy határ.

Jelenléti és részvételi követelmények

Nincs megadva jelenléti követelmény.

Javítás, ismétlés és pótlás különös szabályai

Nincs megadva.

Rövid leírás

Nincs megadva.

Részletes leírás
IMSc program: A félév során az iMSC hallgatók számára eltérő nehézségű házi feladat kiadása iMSC pontokért. IMSc pontok: A házi feladatra kapható 25 IMSc pont.
Ajánlott tantárgyak
A programozás alapjai 1
A tantárgy elvégzéséhez szükséges tanulmányi munka

Nincs megadva munkaidő bontás.

Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
Tantárgykövetelmények hatályosságának vége:
Tantervi elhelyezés

Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.