Beágyazottszoftver-fejlesztés

A tantárgy angol neve: Embedded Software Development

Adatlap utolsó módosítása: 2024. január 12.

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
VIMIAC17 5 2/2/0/v 5  
3. A tantárgyfelelős személy és tanszék Dr. Orosz György,
A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/VIMIAC17
4. A tantárgy előadója Dr. Orosz György, docens, MIT
Scherer Balázs, mestertanár, MIT
Naszály Gábor, mestertanár, MIT
5. A tantárgy az alábbi témakörök ismeretére épít

C programozási nyelv

Digitális technikai alapismeretek

6. Előtanulmányi rend
Ajánlott:
A programozás alapjai 1
7. A tantárgy célkitűzése 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.
8. A tantárgy részletes tematikája

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ó

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Előadás, ezt kiegészítve az egyes előadás témakörökhöz gyakorlati/demonstráció alapú oktatással.
10. 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.

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

12. Konzultációs lehetőségek Igény szerint, előzetesen egyeztetett konzultációs időpontokban.
13. Jegyzet, tankönyv, felhasználható irodalom Elektronikus segédanyag a tárgy honlapján.
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ákra10
Felkészülés zárthelyire8
Házi feladat elkészítése36
Kijelölt írásos tananyag elsajátítása8
Vizsgafelkészülés32
Összesen150
15. A tantárgy tematikáját kidolgozta Dr. Orosz György, docens, MIT
Scherer Balázs, mestertanár, MIT
Naszály Gábor, mestertanár, MIT
Dr. Kovácsházy Tamás, docens, MIT
IMSc tematika és módszer 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 pontozás A házi feladatra kapható 25 IMSc pont.
Idegen nyelvi részteljesítés követelményei 2 kreditpontért a ZH és vizsga sikeres teljesítése.