Nagyteljesítményű mikrovezérlők
2015 tavasz
ARM magokkal foglalkozik, elég érdekes tárgy. aborokon gyakorlatban mikrovezérlőket programoztunk. IDE-ként Coocox-ot használtunk, legtöbbet az LPC1768-as, és a Silabs EFM32 modulját használtuk. A félév során egy házit kellett elkészítenünk, ahol gyakorlatban használtuk azt amit órán tanultunk. A házira fajta jegyet kaphattál:
- OK: 1 tetszőleges kérdés max. pontra elfogadva.
- Jó: 2 tetszőleges kérdés max. pontra elfogadva
- Szuper: 3 tetszőleges kérdés max. pontra elfogadva
Vizsga pontozás:
- 40%-tól elégséges, a többi lineáris.
Vizsgához kérdések
- kérdéslista: kb. 60 kérdés
- Vizsgán 10 random kérdés a listából
- HF beszámítása a vizsgába
Vizsga kérdés válasz: Kerdes-Valasz2015
Ellenőrző kérdések a „Nagyteljesítményű mikrovezérlők” tárgyhoz
1. Mutassa be, a mikrovezérlő piac alakulását és fő trendjeit az ARM Cortex magú vezérlők megjelenéséig. Milyen főbb vezérlő családok jelentek meg, ezeknek milyen jellegzetességeik voltak!
1976: Intel 8048, 8049
- 8 bit
- 10 MHz
- 1-2k ROM, 64-256 byte RAM
1980: Intel 8051
- 8 bit ALU és adat
- 16bit cím
- UART
- Power saving mode
- 128 byte RAM, 4kByte ROM, 4*8 bi-dir I/O, 2*16bit counter/timer
1993: PIC
- EEPROM alkalmassá teszi amatőr felhasználásra
- 1K EEPROM program, 64byte EEPROM adat, 36 byte SRAM
1997: Atlem IPS Flash
- AVR mag
- In-System programozható normál feszültségen
- 8kB Flash, 512B SRAM, 512B EEPROM, UART, SPI, PWM, 32 I/O
2003: Első ARM7-es alapú mikrovezérlő
- 2006: Cortex M3
2. Mutassa be az ARM cég filozófiáját és a hagyományos ARM magok: ARM7, ARM9, ARM11 jellegzetességeit
- Processzor magok tervezésével foglalkozik, közvetlenül nem gyárt
- Széles termékskála, legelterjedtebb 32bit-es család
- ARM7-9-10-11-> növekvő teljesítmény és fogyasztás
- ARM7 -> Cortex M
- ARM9 -> Cortex R
- ARM 10/11 -> Cortex A
3. Ismertesse az ARM7 magok jellemzőit: utasításkészlet, architektúra működési módok. Interrupt kezelés!
- Kevés utasítás, kis komplexitás
- 3 elemű pipeline
- Load-Store Architektúra, általános regiszterek
- 5 működési mód
- FIQ
- Supervisor
- Abort
- IRQ
- Undefined
- Alacsony szintű interrupt kezelés
- 2 utasításkészlet:
- 32 bit ARM
- 16 bit THUMB (30%-kal kisebb, 40%-kal lassabb)
4. Hasonlítsa össze a 8bites és 32bites mikrovezérlők lábszámának és Flash memóriájának, valamint árának a változását az elmúlt 5-10 évben!
5. Hasonlítsa össze a 8bites és 32bites mikrovezérlők sleep fogyasztásának és mőködési feszültség tartományának, valamint perifériakészletének alakulását az elmúlt 5-10 évben!
6. Ismertesse a 8bites és 32bites mikrovezérlők választása mellett és ellen szóló legfőbb érveket!
8bit:
- Alacsonyabb ár
- Erre specializált 8bites esetén alacsonyabb fogyasztás
- A 8bites mindig robusztusabb
- Erős gyári támogatás, egyszerűbb chip, egyszerűbb fejlesztés
32bit:
- Az árkülönbség egyre csökken
- mA/MIPS-ben sokkal jobb, mint a 8bites
- Lemaradás sleep-áramfelvételben és feszültségtartományban folyamatosan csökken
7. Mutassa be az ARM Cortex mag sorozatának (M, R, A) jellegzetességeit! Melyik Cortex-es sorozat melyik hagyományos mag sorozat kiváltására készült!
8. Mutassa be a Cortex M3 processzor mag fő jellemzőit (architektúra, főbb blokkok,újdonságok az ARM7-hez képest)!
- THUMB-2 Utasítás készlet: Nincs külön ARM és THUMB, egyszerre tartalmaz 16 és 32 bites utasításokat
- Egyszerűbb programozó modell az ARM7-hez képest
- Nagyobb teljesítményű utasítások, mint az ARM7-en
- Hozzáférési módok
- Privileged (volt Supervisor, minden erőforráshoz hozzáfér)
- Unprivileged (Felhasználói mód, néhány utasítás letiltva, System control Space regiszterek nem hozzáférhetőek)
- Működési módok
- Thread mód (normál, lehet privilegizált és nem is)
- Handler mód (Kivétel / Interrupt kezelés, privilegizált)
- 2 külön Stack -> rosszul működő alkalmazás nem tudja kilőni az oprendszert
- Main stack: OS-nek és interruptoknak fenntartva
- Process stack: Thread mód számára
9. Mutassa be röviden a Cortex M3 alapú vezérlők memória szervezésének jellemzőit.Milyen főbb cím tartományok vannak, mi az a bit banding, mi a non-aligned memóriahozzáférés. Mik a főbb különbségek az ARM7 alapú vezérlőkkel szemben!
10. Mutassa be a Cortex M3 utasítás végrehajtását (pipe-line), programozói modelljét(load and store), regiszter készletét!
11. Mutassa be a Cortex M3 mőködési módjait és hasonlítsa ezeket össze az ARM7mőködési módjaival!
12. Mutassa be a Cortex M3 standard perifériáit (System timer, NVIC, debugg blokkok) és az ezek által nyújtott előnyöket!
13. Mutassa be a piacon kapható legelterjedtebb Cortex M3 alapú mikrovezérlő sorozatokat!
14. Mutassa be a legelterjedtebb ARM7 magú és Cortex M3 magú sorozatok belső felépítésének fejlődését az elmúlt 8 évben!
15. Mutassa be a Reset és elindulás folyamatát az STM32F107 és az LPC1768 vezérli esetében!
16. Mi az a Flash gyorsító modul, miért szükséges. Mutassa be röviden a hasznát és a működését!
17. Mutassa be egy tipikus Cortex M3 magú vezérlő órajel hálózatát. Magyarázza meg az egyes órajel osztások értelmét és szükségességét.
18. Mutassa be röviden a CMSIS-t (Cortex Microcontroller Software Interface Standard)
Layer a User Application Code és MCU között.
CMSIS Core
- Hardware abstraction Layer: Minden Cortex M variánshoz standardizált periféria és regiszter kezelés
- Rendszer kivétel nevek: Kivételekhez, interruptokhoz való hozzáférés definiálása
- Header File szervezés definíciók: Elnevezési konvenciók az interruptokhoz és header fileokhoz.
- Rendszer indítás: Független inicializáló függvény interfész, SystemInit()
- Speciális utasítások támogatása
- System Clock frekvencia meghatározása
device.h: Perifériák definíciója. Include-olhatja a többi szükséges headert.
19. Mutassa be egy általános 32 bites mikrovezérlő GPIO lábainak kezelését. Milyen a 8bites vezérlőkre nem jellemző problémák léphetnek fel az STM32F107 esetében a GPIO lábak kezelésénél?
- Pin direction
- Data Read
- Data Write
- Port funkció regiszter - sokszor alternetív funkciójuk van
- Külön órajel generáló blokk
20. Mutassa be egy modern Timer blokk által nyújtott lehetiségeket. Milyen Timer megvalósítások lehetségesek egy 32 bites vezérlőnél?
21. Mutassa be az SPI kommunikáció jellegzetességeit és mutasson példát tipikus SPI buszon keresztül kommunikáló perifériákra.
22. Mutassa be az I2C kommunikáció jellegzetességeit és mutasson példát tipikus I2C buszon keresztül kommunikáló perifériákra.
23. Mutassa be az USART periféria tipikus felhasználási lehetőségeit!
24. Mutassa be a mikrovezérlőkben található AD és DA átalakítók tipikus tulajdonságait és működését.
25. Hasonlítsa össze a Cortex M3 NVIC-ét az ARM7 megszakításkezelési lehetőségeivel.
ARM7: 2 interrupt vonal, nem determinisztikus kiszolgálás, nincs nested IT támogatás hardveresen. Cortex M: Nested Vector Interrupt Controller
- Gyártó független standard
- A Thumb2 több órajeles utasításai megszakíthatóak, így determinisztikus
- Nested IT támogatása
- Megszabható a bemenő vonalak száma
26. Mutassa be az NVIC interrupt vektor tábla szervezésének főbb jellegzetességeit (nem kell tudni fejből az IT tábla felépítését). Hány periféria megszakítást támogat az NVIC, mindegyiket ki szokták ezek közül használni?
Ugrótábla:
- Azonosító
- Exception Type
- Priority
- Type of priority
- Leítás
240 külső periféria interruptot támogat, de erőforrás minimalizálás miatt megszabhatják a tervezők a bemeneti vonalak számát.
27. Mutassa be az NVIC priorítás kezelésének alapjait. Mire jók a megszakításmaszk regiszterek, és mi az értelme a Vector Table offset regiszternek?
Az alap belső kivételeknek fix prioritása van. A többi megszakításhoz 3-8 bites prioritás regiszter kapcsolódik [06-9]. 127 preempciós szint + szubprioritás, a legalacsonyabb fut le először.
Megszakításmaszk regiszterek: bizonyos interruptok érvényre jutását lehet megakadályozni (Primask, faultmask, basepri
Vector Table Offset Register: )
28. Mutassa be a Cortex M3 NVIC-jének megszakítás végrehajtási folyamatát! Mi az a tail-chaining, mi történik ilyenkor?
29. Mutasson példát a DMA kezelés használatára! Milyen átviteli és működési lehetőségeket kínál egy általános DMA blokk. Milyen paramétereket kell általában beállítani egy DMA átvitelhez?
30. Mutassa be röviden az STM32F1xx vezérlők DMA blokkjának működését. Milyen problémákat okozhat a memória – memória átvitel esetében a cirkuláris buffer beállítás használata? Hogyan próbálják a DMA hatékonyságát növelni az új sorozatú vezérlőknél (memória elrendezés)?
31. Röviden mutassa be a beágyazott operációs rendszerek és az asztali operációs rendszerek közötti különbségeket! Miért célszerű egy operációs rendszer porttal kezdeni egy 32 bites vezérli fejlesztését, milyen járulékos dolgokat hoz általában magával egy kész operációs rendszer port?
32. Röviden mutassa be a µC-OS felépítését és jellegzetességeit!
33. Röviden mutassa be az eCos felépítését és jellegzetességeit!
34. Röviden mutassa be a FreeRTOS felépítését és jellegzetességeit!
35. Mutassa be, hogy milyen lehetőségeink vannak a mikrovezérlők aktív fogyasztásának befolyásolására 8 bites és 32 bites mikrovezérlők esetében. Hasonlítsa össze nagyvonalakban a 8 bites és 32 bites mikrovezérlők aktív fogyasztásának alakulását az elmúlt pár évben.
36. Mutassa be, hogy egy általános 8 bites és 32 bites mikrovezérlőnek milyen energiatakarékos módjai vannak (általánosan jellemzi módok kellenek, nem kell tudni, hogy melyik vezérlőnél hogy hívják ezeket).
37. Tipikusan miért vannak hátrányban a 32 bites vezérlők a 8 bites társaikhoz képest az energiatakarékos fogyasztás (passzív állapotok) tekintetében. Milyen technikákat, trükköket vetnek be ezek kompenzálására?
38. Mi az a ROM monitor (más néven GDB stub), tradicionálisan hogy és hol lehet használni, miért nem a legjobb megoldás a modern 32 bites mikrovezérlők esetében?
39. Mi az a GDB, milyen jellegő parancsok használhatóak a GDB-ben a target debuggolására? Mi az a GDB RSP, milyen tulajdonságai vannak, miért játszik fontos szerepet a beágyazott rendszerek debuggolásában!
40. Mi az az Open-OCD, milyen főbb komponensekből áll, mire kell odafigyelni, amikor kész Open-OCD forításokat próbálunk használni saját eszközünkhöz?
41. Mutassa be nagyvonalakban, hogy milyen lépések játszódnak le akkor, amikor egy Eclipse-es GDB, alapú debugger felületen le szeretnénk egy debugg állapotban lévi target egy változójának értékét kérdezni az OpenOCD segítségével!
42. Mutassa be, hogy milyen blokkokból áll a Cortex M3 Coresight debug rendszere, mennyivel nyújtanak ezek a blokkok több lehetiséget egy tradicionális hibakereséshez képest.
43. Mik azok az SD kártyák, milyen főbb típusaik vannak? Milyen alapvető lehetőségek vannak a fizikai illesztésüknél, és mik ezeknek az előnyei és hátrányai?
Secure Digital Memory Card. Standard (-2GB), SDHC (4-32GB) és SDXC(32GB-2TB) változatok elérhetőek. Az interfészek között van különbség, de lefelé kompatibilisek.
Típusai:
- SD Card - 32 x 24 mm
- MiniSD Card - 21.5 x 20 mm
- microSD Card - 15 x 11 mm
Minimális sebesség: 8 Mb/s, Class szám adja meg a sebességet. Leggyorsabb a Class 10. Kommunikációs módok:
- One-bit SD mode: Külön parancs és adat csatotrna
- Four-bit SD mode: Extra adattáblák
- SPI mode: Egyszerűsített kommunikációs elsősorban mikrokontrolllerek részére
44. Mutasson egy rövid példát az SD kártyák kezelésére SPI módban: írás, olvasás, törlés (nem kell a pontos parancsszámokat tudni, elég, egy átviteli ábra mindegyikből)!
Az SPI Frame 6 byte-ból áll, a CRC kikapcsolható.
45. Mutassa be a FAT file rendszer felépítését, röviden foglalja össze, hogy mi az a FAT tábla, és mi az a Directory tábla!
- A partíciók egyenlő clusterekre vannak bontva
- Minden file egy vagy több clustert foglal el. Egy file a clusterek láncolt listájával megadható.
- Sokszor az összetartozó clusterek nem egymás mellett vannak -> Fragmentálódás
Boot sector:
- Bootloadert tartalmaz
- Nem mindig az első szektor
FS Information sector:
- Csak FAT32-ben
- Szabad terület gyors nyilvántartása
File allication Table (FAT) Table
- Leíró lista, ami térképet ad a partíció clustereihez
- Tartalmazza
- Következő cluster száma
- End of Clusterchain jelzés
- Bad Cluster jelzés
- Reserved Cluster jelzés
- 0 Ha a cluster nem használt
Directory Table
- Speciális file
- Minden file vagy directory egy 32byte-os blokkal azonosítódik
- Tartalmazza: Név, Kiterjesztés, Attribútumok, Utolsó hozzáférés, Cluster cím, Méret
46. Milyen felépítése van a ChanFatFS programcsomagnak, milyen szolgáltatásokat nyújt, és tipikusan milyen funkcionalitásokat kell egy ilyen programnál portolni, ha saját rendszerünkben szeretnénk használni?
Tipikusan beágyazott rendszerekhez létrehozott FAT fájlrendszer, platformfüggetlen. Application -> FatFS module -> (LowLevel disk I/O, RTC Clock)
Portolás: Disk drive inicializáció, Disk drive státusz lekérdezés, szektor olvasás. Ha nem readonly Szektorírás és Disk specifikus tulajdonságok (disk_ioctl). get_fattime: rendszeridő lekérdezés.