Scherer Balázs, Csordás Péter
Nagyteljesítményő mikrovezérlık Cortex M3 mag Elıadásvázlat Kézirat
Csak belsı használatra!
2011. © SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 1
ARM magok migrációja
ARM11 Cortex A ARM10
Cortex R
ARM9
Cortex M
ARM7
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 2
Új generációs ARM magok • Cortex A – Application magok – A8: Mobil eszközökhöz optimalizált alacsony fogyasztás. – – – – – – –
600MHz-tıl – 1+GHz-ig Superskalár (utasítás szintő párhuzamosítás, Intel pentium pro) Java-ra és Multimédia alkalmazásokra optimalizálva Level1, Level2 cache-ek Elágazás becslés Apple IPhone3G 2000 DMIPS
– A9: Több magú változat 1-4 mag. – Lényegesen erısebb az A8-nál akár 8000 DMIPS
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 3
Új generációs ARM magok • Cortex R: Realtime – – – – – – –
Realtime alkalmazások R4, R4F (lebegıpontos támogatás) Elágazás becslés Hibatőrı kialakítás (Error Correcting Coding) Egyik fı célterület az autóipar 200-400MHz kb. 800 DMIPS. TMS570 – Dual processzor egymást ellenırzı kialakításban – SIL3 szintő megbízhatóság
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 4
Új generációs ARM magok • Cortex M: Mikrovezérlı – M0: Ultra low power – Nagyon egyszerő – 85µWatt/MHz – 8 bites kiváltás – ZigBee
– M1: FPGA-ra optimalizált – M3: Általános mikrovezérlı – 0,19mW/MHz – Max kb. 150MHz
– M4: DSP utasításokkal kibıvített verzió
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 5
A Cortex M3 mag
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 6
A Cortex M3 mag, és Cortex M3 processzor Cortex M3 mag – ALU – Instruction fetch unit – Regiszter bank
Cortex M3 processzor – Interupt Controller – Debug rendszer – Bus Interconnect
Mikrovezérlı – Perifériák – Memória – Órajel források © SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 7
A Cortex M3 Részletes felépítése
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 8
A Cortex M3 alapok • ARMv7M Architektúra (Az ARM7 az ARMv4-es architektúrát használta) • Harvard architektúra – Külön Utasítás és adat busz. Párhuzamos utasítás felhozást és adattárolást tesz lehetıvé
• Thumb-2 Utasítás készlet, nincs külön ARM és Thumb mód – A Thumb2 16 és 32 bites utasításokat tartalmaz. Elég nagy kódsőrőséget eredményezve.
• Egyszerőbb programozó modell, mint az ARM7-nél • Nagyobb teljesítményő utasítások
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 9
Busz elrendezés
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 10
AZ ARM7 magú vezérlık belsı magjának fejlıdése
2003: LPC210x © SchB, Csp BME MIT 2011.
2006: LPC23xx Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 11
Mintaelrendezés egy Cortex M3 alapú processzorra
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 12
Buszok Neumann architektúra
Harvard architektúra
DMA Periféria
Periféria RAM
FLASH
RAM
RAM
FLASH
Periféria
Periféria
© SchB, Csp BME MIT 2011.
Idata bus
System Bus DMA
Icode bus
Cortec M3
CPU
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 13
Busz elrendezés
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 14
A Cortex M3 memóriatérképe • Az ARM7, ARM9-es ellentétben itt pontosan specifikálva van az egységes memóriatérkép. • 4 Gbyte címtartomány – 1 Gbyte Code és SRAM terület – 0,5 G Code terület optimalizálva az I-Code busz számára – 0,5 G SRAM terület – Code lehet az SRAM-ból is végrehajtva (lassabb)
– 0,5 Gbyte On chip periféria – 2 Gbyte Külsı memória és külsı egységek – 0,5 Gbyte Cortex regiszterek és mikrovezérlı gyártó specifikus részek
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 15
Elıre kiosztott memória tartományok
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 16
Bit banding • Direkt bit vezérlés nincs szükség AND, OR maszkolásra
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 17
Bit band memória területek • Az SRAM és a periféria blokk elsı 1Mbyte-ja – Nincs szükség többre
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 18
Aligment nélküli memória hozzáférés • ARM7,ARM9 aligned (csak adott címeken kezdıdhetnek), Cortex M+ non-aligned memóriakezelés – Kellemetlenségek (Vektor CCP), kihasználatlan terület (akár 25%)
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 19
Utasítás végrehajtás és regiszterek
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 20
A Cortex M3 pipeline-ja • Három lépcsıs Pipeline
• Elágazás becslés: Feltételes ugrásnál mindkét iránynak az utasításait elkezdi felhozni. – Jelentısen növeli a teljesítményt az ARM7-hez és ARM9-hez képest
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 21
16 és 32 bites utasítások • Nem minden ciklusban kell feltétlenül utasítást felhoznia a magnak
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 22
Pipeline részleteiben
• PC = ADR + 4 az utasítás végrehajtásakor (függetlenül attól, hogy 16bites, vagy 32bites utasítások vannak) • Nem minden ciklusban kell feltétlenül utasítást felhoznia a magnak
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 23
A Cortex M3 programozói modellje • Load and Store architektúra – Minden adatot elıször be kell mozgatni a memóriából a regiszterekbe. Utána lehet mőveletet végrehajtani, majd a végén ki kell írni a mőveletek eredményét a regiszterbıl a memóriába. – Semmi különbség az ARM7, ARM9-hez képest
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 24
A Cortex M3 regiszterei • 16 darab 32 bites regiszter • Mint az ARM7, ARM9 esetében, itt is: – R13 a Stack pointer – R14 a link regiszter (visszatérési cím) – R15 a PC (utasítás számláló közvetlenül írható olvasható)
• Az R13 egy „bank”-olt regiszter, hogy a processzor két stacket használhasson a Process Stack-et és a Main Stack-et.
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 25
A Cortex M3 Extended program status register • Az xPSR Nem része a regiszter banknak, csak speciális utasítássokkal kezelhetı
• Van 3 alias regisztere: • APSR (Application PSR) : Condition code flags (Negatív, Carry, Overflow, Saturated math overflow) • IPSR (Interrup PSR): Az aktuális megszakítás száma • EPSR (Execution PSR), – T: Thumb state, mindig 1, nem lehet törölni. – IF-THEN field – Lehetıség van a Thumb2-ben egyszerő IF-THEN blokkokat megvalósítani
– Interrupt continuable instruction field – PL a Load, Store multiple utasítások nem egy órajel alatt hajtódnak végre – A determinikus IT kezeléshez ezeket is meg kell szakítani – Ebben a részben tárolja a megszakított Load, Store multiple utasítás következı paraméterét © SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 26
Egyébb speciális regiszterek • PRIMASK: Megszakítás tiltás. 1 bites regiszter, ha be van kapcsolva, akkor csak a NMI és a Hardfault kivételek jutnak érvényre • FAULTMASK: Hibajelzés tiltás. 1 bites regiszter, ha be van kapcsolva, akkor csak a NMI és az interruptok váltanak ki megszakítást a hibák nem. • BASEPRI: A megadott érték alatti prioritású IT-ket tiltja. • CONTROL: Stack használat megadása, Privilégizált mód megadása
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 27
Hozzáférési és mőködési módok
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 28
ARM7 Mőködési módok
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 29
A Cortex M3 hozzáférési módjai • A Cortex kétféle hozzáférési módot specifikál – Privileged mőködés – Nevezik supervizor módnak is – Automatikusan ez aktív reszet után – Kivétel, vagy interrupt hatására automatikusan ebbe lép a processzor – Minden processzor erıforráshoz hozzáférést biztosít
– Unprivileged operation – Hívják felhasználói hozzáférési módnak is – Korlátozott hozzáférés – Néhány utasítás típus letiltva, például az xPSR-t manipulálók – Nem lehet a System Control Space (SCS) regiszterekhez hozzáférni. Ilyen például az NVIC (vektoros interrupt kezelı) és SysTick (Rendszer timer) © SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 30
A Cortex M3 mőködési módjai • Egyszerősített két mőködési mód – Thread mód: – Normál mőködés – Lehet privilegizált, vagy nem privilegizált hozzáférésben – Ha átváltja magát nem privilegizáltba csak a Handler tudja visszaváltani
– Handler mód: – Kivétel kezelés – Interrupt kezelés – Mindig privilegizált végrehajtás
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 31
A Cortex M3 stackjei • Main stack – Operációs rendszer és a kivételek részére fenntartva
• Process stack – Elsısorban a thread mód számára (A Thread mód használhatja a Main stacket is. Szoftverben választható hogy a Thread mód a Main, vagy a Process stacket használja).
• A jól különválasztott stack biztosíthatja, hogy az alkalmazás nem tudja kilıni az Oprendszert, ez biztonságkritikus rendszereknél nagyon fontos.
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 32
Minta a privilégizált és user mód használatára
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 33
A Cortex M3 mőködési módok összefoglalása
Operations
Stacks
(privilege out of reset)
(Main out of reset)
- An exception is being processed
Privileged execution Full control
Main Stack Used by OS and Exceptions
Thread
Privileged/Unprivileged
Main/Process
Handler
- No exception is being processed - Normal code is executing
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 34
Utasításkészlet
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 35
A Thumb2 utasításkészlet • Az ARM7, ARM9 processzorokhoz képest csak egy utasításkészlet a Thumb2 – 26%-kal tömörebb, mint az ARM 32bites utasításkészlet – 25%-kal hatékonyabb, mint a hagyományos Thumb – Hardveres szorzás, osztás
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 36
A Cortex M3 IF-THEN block • Maximum 4 utasítást lehet blokkba zárni – IT<x>
– <x>: lehet T:Then, E: else – normál feltételek: EQ: egyenlı, NE: nem egyelnı stb.
• Ha nem kell végrehajtani a blokkot akkor NOP ként hajtódnak végre. • Segíti a Pipe-Line kitöltését, nem kell üríteni újra tölteni az ugrások miatt.
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 37
Bit mezı törlés és beszúrás • Bit Field Clear (BFC), bármely bitmezı törölhetı • Bit Field Insert (BFI), tetszöleges bitmezı beszúrható egy másik regiszterbıl
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 38
Bitkinyerı utasítások • UBFX (zero extend) és SBFX (sign extend)
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 39
Egyéb különleges utasítások • Bit és byte sorrend felcserélés • 64 bites adatok két regiszteres transzferje – Egy utasításként mozgathatóak
• Egy utasításos ugrótábla • Elıjeles, vagy elıjel nélküli osztás
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 40
Belsı perifériák
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 41
System Timer • 24 bites lefelé számláló • Egységesített rendszerszámláló a Cortex M3 core-ra épülı mikrovezérlıkhöz. – Elsısorban RTOS Heart-beat timer-nek szánták.
• Rendszer órajelrıl, vagy annak 1/8-áról mehet • Három regiszter – Számláló – Reload – Status: – IT engedélyezés – Timer konfig, Start stop
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 42
Cortex M3 Megszakítás kezelés • ARM7, ARM9 két interrupt vonal – IRQ: Normál priorítású IT – FIQ: Fast IT saját regiszter blokkal – A vektoros megszakításkezelés gyártó specifikus – Nem volt determinisztikus az interrupt kiszolgálás: attól függött a megszakítás kiszolgálása, hogy éppen milyen utasítás hajtódott végre. – Az ARM7, ARM9 hardware-esen nem támogatta az ún. Nested IT-ket. (IT-t megszakító IT)
• A Cortex M3 megszakítás kezelıje a fenti korlátokra próbál megoldást adni.
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 43
Cortex M3 NVIC • Nested Vector Interrupt Controller – Gyártó független standard tartozék, ebbıl következıen gyártó független interrupt struktúra. – Könnyő portolhatóság
– A Thumb2 utasításkészlet több órajelig tartó utasításai megszakíthatóak, így az IT kezelés determinisztikus. – Nested interuptokat támogatja – Az STM32-n 16 priorítási szint van.
– Bár az NVIC processzor független, az erıforrás használat minimalizálása miatt a processzor tervezık megszabhatják NVIC bemenı vonalainak számát. – Az NVIC képes: 1 nem maszkolható +240 külsı periféria + 15 belsı Cortex-es IT vonal forrást kezelni – Az STM32 43-at használ. © SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 44
Az NVIC ugrótábla •
Az ugrótábla a címtartomány alján a 0x00000004-rıl indul. – A 0x00000000-án a kezdı stack pointer van, hogy minél hamarabb lehessen C-t használni. No.
Priority
Type of Priority
Descriptions
1
Reset
-3 (Highest)
fixed
Reset
2
NMI
-2
fixed
Non-Maskable Interrupt
3
Hard Fault
-1
fixed
Default fault if other hander not implemented
4
MemManage Fault
0
settable
MPU violation or access to illegal locations
5
Bus Fault
1
settable
Fault if AHB interface receives error
6
Usage Fault
2
settable
Exceptions due to program errors
Reserved
N.A.
N.A.
11
SVCall
3
settable
System Service call
12
Debug Monitor
4
settable
Break points, watch points, external debug
13
Reserved
N.A.
N.A.
14
PendSV
5
settable
Pendable request for System Device
15
SYSTICK
6
settable
System Tick Timer
16
Interrupt #0
7
settable
External Interrupt #0
7-10
Gyártó specifikus
Exception Type
…… 256
………………….. Interrupt#240
© SchB, Csp BME MIT 2011.
………………….. 247
Csak belsı használatra!
settable settable
………………….. External Interrupt #240
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 45
A reset utáni elindulás folyamata
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 46
Egyéb specialitások
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 47
Alacsony fogyasztási módok • Sleep mód – Processzor inaktív – Az NVIC egy része aktív így a processzor felébreszthetı
• Sleep now – WFI utasítás: Wait For Interrupt – Powerdown-ba megy és egy megszakítás ébreszti fel.
– WFE utasítás: Wait For Event – Periféria megszakítás vonal, ami felébreszti a processzort, de nem kell tényleges IT kiszolgálást csinálni, hanem a fıprogram folytatódik
• Sleep on Exit – IT után rögtön visszaalszik megint, takarékos eseményvezérelt mőködés
• Deep Sleep – A Cortex M3 core jelzi a külsı gyártó specifikus egységeknek, hogy menjenek energiatakarékos módba. Ilyenkor lehet a perifériákat és a PLL-t lekapcsolni.
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 48
Debug rendszer
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 49
Cortex M3 összefoglalás
© SchB, CsP BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 50
Újdonságok az ARM7 maghoz képest • • • • • •
NVIC és IT rendszer (Wake-up interupt kontroller) System Timer Fejlesztett Debugg rendszer Memória térkép Unaligned adathozzáférés Bit banding
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 51
ARM7, Cortex M3 összehasonlítás
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 52
ARM7, Cortex M3 összehasonlítás
© SchB, Csp BME MIT 2011.
Csak belsı használatra!
Nagyteljesítményő mikrovezérlık – Az ARM Cortex M3 mag- 53