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 ARM9 Cortex R ARM7 Cortex M 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 2006: LPC23xx SchB, Csp BME MIT 2011. 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 CPU Cortec M3 System Bus Idata bus Icode bus DMA DMA Periféria RAM FLASH Periféria RAM RAM FLASH Periféria Periféria SchB, Csp BME MIT 2011. 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 Handler mód: Ha átváltja magát nem privilegizáltba csak a Handler tudja visszaváltani 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 (privilege out of reset) Stacks (Main out of reset) Handler - An exception is being processed Privileged execution Full control Main Stack Used by OS and Exceptions Thread - No exception is being processed - Normal code is executing Privileged/Unprivileged Main/Process 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><y><z> <cond> <x><y><z>: lehet T:Then, E: else <cond>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. Exception Type 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 7-10 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 Gyártó specifikus 16 256 Interrupt #0.. Interrupt#240 7.. 247 settable settable settable External Interrupt #0.. External Interrupt #240 SchB, Csp BME MIT 2011. Csak belsı használatra! 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 Sleep on Exit 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 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