Beágyazottszoftver-fejlesztés
A tantárgyleírás hatályossága
| 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) |
|
||||||||||||
| 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
elérhetőség:
orosz.gyorgy@vik.bme.hu
|
||||||||||||
| 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
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ó
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
Tanulástámogató anyagok
Online források
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Általános szabályok
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
Ajánlott tantárgyak
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
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.