Belépés címtáras azonosítással
magyar nyelvű adatlap
angol nyelvű adatlap
Beágyazottszoftver-fejlesztés
A tantárgy angol neve: Embedded Software Development
Adatlap utolsó módosítása: 2024. január 12.
C programozási nyelv
Digitális technikai alapismeretek
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ó.
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, annakbemutatá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öveteltszerkezet é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-kfelépítésének bemutatása. Törekvés a szabványosításra, CMSIS-Driver API, kódolási, elnevezési éskommentezési szabályok bevezetése. A standard C környezet és a beágyazott környezet közöttikapcsoló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ó folyamatokismertetése, a vektoros megszakításkezelés szoftveres alapjainak bemutatása. Tipikusanmegszakí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 alapjainakbemutatása. A tipikus DMA átvitelnél megadandó paraméterek ismertetése. A hatékony DMAkezelés és a rendszerarchitektúra felépítésének összefüggései. Alkalmazási minták mutatása DMAalapú 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 magasabbszintű absztrakció létrehozása a mikrovezérlő absztrakció fölé. Minták, szabványosítási törekvésekmutatá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, failreduced, 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ódokszerepé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. Egyipari diagnosztikai protokoll tulajdonságainak rövid bemutatása: XCP (Universal Measurement andCalibration Protocol).
9. hét: A beágyazott szoftver debuggolása, tesztelése: Modern mikrovezérlők által nyújtott debuglehető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 traceképességei és az azokból nyerhető információk: DWT, ITM képességek és ezek megjelenése afejlesztő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): Akö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áraalkalmazott 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): Aszálak közötti kommunikáció eszközeinek és azok elméleti működésének bemutatása. Aszemaforok és queue-k szerepe a szálak közötti és a szálak és megszakítások közöttikommunikációban.
13. hét: A párhuzamos programozás alapjai (jellemző problémák): A közös memóriaterületenosztozó szálak jellemző problémái és azok elméleti kezelése: stack problémák és kezelésimódjaik. Ütemezési és ütemezhetőségi problémák. A szálak jellemző időzítési tulajdonságainakbemutatá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 egyproject 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ányosmemó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 azegyszerű perifériák kezelésére. GPIO és UART kezelési példák. A LibC portolása az UART kimenetenkeresztüli printf használathoz.
4.hét: Perifériakezelés IT használatával: Interrupt rutin megvalósítása egy kiválasztott perifériakezelé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 buszoshőmérő). API készítése a szenzorhoz, a megfelelő kezelési mód: interruptos, vagy DMA módkiválasztása.
7.hét: Energiatakarékos üzemmódok kipróbálása: Üzemmódfüggő fogyasztás vizsgálata, melyikré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, hogyhogyan 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. Aközös erőforrás-használat során alkalmazott védelmi eljárások bemutatása, példák Mutex-ekalkalmazá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 ésqueue-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 éskezelése: Stack elfogyás demonstrálása és stack védelem. Az időzítés és ütemezés nyomkövetése akernel műszerezésével.
14. hét: szünetek, vagy konzultáció
Szorgalmi időszakban: a félév során egy házi feladat elkészítése és ZH.
Vizsgaidőszakban: írásbeli vizsga.
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ó. Otthonifeladat vizsgaidőszakban nem pótolható, zárthelyivel nem helyettesíthető.