ARM Cortex magú mikrovezérlők
A tantárgy angol neve: ARM Cortex Core Microcontrollers
Adatlap utolsó módosítása: 2023. június 22.
Villamosmérnöki szak
Mérnök informatikus szak
Scherer Balázs
mestertanár
BME MIT
Beágyazott rendszerek, hardverközeli programozás, C programozási nyelv, alapszintű mikrovezérlős ismeretek.
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ó.
A tantárgy célkitűzése, hogy alapfokú beágyazott rendszeres ismeretekkel rendelkező hallgatók tudását kiegészítse a modern, nagy teljesítményű mikrovezérlős rendszerek felhasználásához, megértéséhez szükséges ismeretekkel. A tárgy részletesen bemutatja a 32 bites ARM Cortex architektúrákon alapuló mikrovezérlő-családok működését, tartalmazza az ezekkel való tervezéshez és fejlesztéshez szükséges hardver- és szoftverismereteket, illetve az elengedhetetlen tesztelési és debuggolási technológiákat. A tárgy feltételezi, hogy a hallgatók legalább alapszinten ismerik az egyszerűbb 8-bites mikrovezérlők felépítését, vagy hallottak már áttekintőbb jelleggel a 32 bites mikrovezérlők használatáról. A tárgy teljesítéséhez továbbá ajánlott a C programozási nyelvben legalább alapszintű jártassággal rendelkezni.
A mikrovezérlők rövid történelme. A 8 bites mikrovezérlők fejlődése, a 32 bites mikrovezérlők megjelenése. A jelenleg piacon kapható generációk felbukkanása és fejlődése. A legelterjedtebb architektúrák felsorolása, várható jövőbeli trendek bemutatása. Az ARM7 processzormag mint a Cortex M sorozatok közvetlen elődjének bemutatása: belső felépítés, utasításkészlet, regiszterek, megszakítás-kezelés stb.
Az ARM Cortex M magok fő jellemzői: architektúra (Miért Neumann architektúra az M0, M0+ és miért Harvard a többi M sorozat?), THUMB2 utasításkészlet (milyen utasítások vannak, miben tér el egymástól az M0, M3, M4, M7 utasításkészlete?), pipeline felépítések és különbségek (Cortex M7 pipeline különbségei a többi M sorozathoz képest). Memóriaszervezési jellemzők: egységes címtartomány, mi a bit-banding, mi a non-aligned memória-hozzáférés? A Cortex M sorozatok programozói modellje: működési és hozzáférési módok és felhasználásuk. A Cortex M sorozatok standard perifériáinak rövid átnézése (fontosabb blokkok részletes elemzése később): system timer, NVIC, debugg blokkok. A standard perifériakészlet által nyújtott előnyök bemutatása. Az ARMv8-M architektúra (M33, M23) által hozott újdonságok: TrustZone és alkalmazhatósága.
Belső busz architektúra változása: az egyszerű AHB-APB szerkezet után az egyre bonyolultabb, több busz mastert igénylő elrendezések miatt az AHB buszmátrix kialakulása. A főbb belső busz struktúrák és a periféria-elhelyezési megoldások különböző generációi. Az SRAM tartományok több részre bontásának értelme és folyamata az egyes generációknál. Különbségek az M0, M3, M4, M7 sorozatú vezérlők belső felépítésében. A belső felépítés elbonyolódásának hatása a rendszer többi részére. Az új M33, M23 magú vezérlők belső felépítésének újdonságai.
A flash gyorsító modul megjelenése és változása a különböző ARM Cortex generációknál. A bonyolult belső felépítéshez tartozó órajel-hálózatok megjelenése és főbb funkciói. A reset utáni elindulás folyamata, a tipikusan választható boot opciók ismertetése.
Az ARM Cortex M mikrovezérlő sorozatok bemutatása: TI, NXP, ST, Silabs, Atmel sorozatainak különbségei. Az egyes sorozatok jellegzetességei, elhelyezkedésük a teljesítmény, programmemória, perifériakészlet, ár, fogyasztás koordinátarendszerben. Benchmark eredmények az egyes sorozatok teljesítményének összehasonlítására.
Cortex Microcontroller Software Interface Standard (CMSIS) felépítése, a verziói által lefedett terület fejlődése. A CMSIS core feladatai: a rendszer header fájlok szerepe, a SystemInit függvény működése, és a startup file felépítése. A Core peripheral függvények szerepe, a mikrovezérlő gyártók által a perifériák kezeléséhez nyújtott támogatás szabályozása. A CMSIS szabvány fejlődése az évek során: Driver API, DSP library stb.
Labor (2 óra): a CMSIS szabvány támogatására alapuló egyszerű feladatok. Mi történik a mikrovezérlő elindulásakor, hogyan áll össze a C környezet, hogyan jut el a program a main kulcsszóig. Egy egyszerű perifériakezelés programozása CMSIS definíciók alapján. A bit-band funkcionalitás és a speciális utasítások alacsony szintű kezelésének gyakorlása.
Gyakorlat (2 óra): Az egyes gyártók által nyújtott perifériakezelő firmware library támogatások bemutatása. A CMSIS Driver API lehetséges jövőbeli szerepe. Az ST Cube platformjának perifériakezelés támogatása, a Silabs firmware library-je által nyújtott lehetőségek hasonlóságai és különbségei. A különböző fejlesztőkörnyezetek közötti különbségek. Az STCube IDE fejlesztőkörnyezet tulajdonságai, rövid bemutatása. Különböző programozói modellek bemutatása: privilégizált végrehajtás alkalmazása, TrustZone alkalmazása.
Labor (6 óra): egyszerű perifériakezelés firmware library támogatással, valamint bonyolultabb feladatok ellátása megszakításkezeléssel és DMA átvitellel. Az USB device és host működést támogató könyvtári stack-ek használata a gyakorlatban. Grafikus user interfész fejlesztő könyvtárak és alkalmazásuk. Különböző programozói modellek bemutatása: privilégizált végrehajtás alkalmazása, TrustZone alkalmazása.
Gyakorlat (2 óra): A CMSIS RTOS API felépítése és definíciói, third party operációs rendszerek portolása a Cortex M mikrovezérlőkre és a CMSIS RTOS API-hoz. Kapcsolatok a programozói modellekel: privilégizált végrehajtás és TrustZone alkalmazása.
Labor (4 óra): portolásra és alapszintű funkciók, valamint olyan magasabb szintű trükkök szemléltetésére, mint a memóriakezelési támogatás, a futásidő-monitorozás és stackméret-figyelés. Kapcsolatok a programozói modellekel: privilégizált végrehajtás és TrustZone alkalmazása.
Gyakorlat (2 óra): Az Matlab Simulink alapú kódgenerálás alapjai. Kódgenerálás blokk szintű támogatása, saját blokkok készítése. A kódgenerálás szerepe a fejlesztési folyamatban.
Labor (2 óra): egyszerű a kódgenerálás hatékonyságát szemléltető feladat elvégzése.
Labor (2 óra): Az mbed fejlesztőkörnyezet bemutatása. Célok és koncepciók fejlődése az online compilertől a kiexportálható verzióig. Az mbed szoftverarchitektúra réteges szerkezete, az mbed OS által nyújtott IoT (Internet of Things) irányba mutató támogatások bemutatása, az mbed Device Server szerepe. Az mbed HDK hardware development kit felépítése és alkalmazása. Egy egyszerű feladat elvégzése az mbed környezetben.
A tradicionális ROM monitor alapú debug rendszerek hatása a mostani rendszerekre. Egy modern debug lánc felépítése: a SWD és JTAG alapú DP-ok, az AHB-AP szerepe és tulajdonságai, a mikrovezérlő belső debug blokkjainak tulajdonsága.
Gyakorlat (1 óra): A GNU GDB-n keresztüli debuggolás folyamata, az RSP protokoll szerepe és tulajdonsága, az Open-OCD debug szerver működése. A CMSIS-DAP tulajdonságai is szerepe.
Az ARM CoreSight rendszer trace blokkjainak működése: az 1 bites SWV és 4 bites trace interfész, a TPIU blokk működése, az ITM, DWT és ETM blokkok által nyújtott funkcionalitások.
Gyakorlat (1 óra): A trace funkciók mködésének gyakorlati szemléltetése.
A tradicionálisan 8 bites vezérlőkben alkalmazott energiatakarékos módok és az ARM Cortex vezérlők energiatakarékos módjai közötti különbségek. A jelenleg elterjedt vezérlők milyen aktív és passzív energiafogyasztási karakterisztikákkal rendelkeznek? Miből adódnak az eltérések, mi a szerepe a back-up domaineknek? Hogyan támogatja a Cortex M sorozat mag szinten az energiahatékonyságot? Hogyan lehet aktív módban és passzív módban a fogyasztást csökkenteni? A Silabs Peripheral Reflex System megoldásának működése.
Labor (2 óra): a különböző energiatakarékos működések megvizsgálására, kipróbálására.
A piacon kapható heterogén, több magú vezérlők működése, az NXP4300-as, az STM32H7 sorozatának felépítése a több Cortex M mag együttes alkalmazása.
Gyakorlat (2 óra): Több magú mikrovezérlők használatának gyakorlati bemutatása.
A Cortex R sorozat belső felépítése: regiszterkészlet, pipe-line, utasításkészlet, memóriatartomány. A lock-step core-ok működése. A piacon kapható R sorozatú mikrovezérlő magok elemzése. Hogyan támogatják ezek a magok a nagy megbízhatóságot? Milyen beépített hibavédelmi és hibadetektálási, önteszt funkciókkal rendelkeznek?
A főbb Cortex A sorozatok tulajdonságai és képességei, a legelterjedtebb A sorozatú vezérlők felépítése és képességei. Szoftverfejlesztési módszerek az A sorozatú vezérlőkre.
Előadás, gyakorlat és laboratóriumi gyakorlatok.
a. Az aláírás megszerzésének feltétele: házi feladat elfogadható szintű teljesítése.
Az házi feladat háromféle módon teljesíthető: szoftver-/alkalmazásfejlesztés meglévő 32 bites demó panelre; egyszerű, saját panel készítése és élesztése; komplexebb hardver tervezése és részszoftver írása egy meglévő fejlesztőkártyára.
b. A vizsgaidőszakban: írásbeli vizsga.
Megbeszélés szerint.
Az oktatók által készített prezentációk, segédletek, internetes források.
Ajánlott könyvek:
Joseph Yiu: The Definitive Guide to the ARM Cortex-M0, ISBN-13: 978-0123854773
Joseph Yiu: The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors, ISBN-13: 978-0124080829
MIT
Dr. Tóth Csaba
t. docens