ARM tanfolyam 1. előadás
Történeti kitekintés ARM konzorcium Architektúrákat tervez és licenszel, de nem gyárt NXP, ATMEL, ST, EnergyMicro, TI, Apple … Manapság a 32bites mikrovezérlők több mint 90%-a ARM alapú - Hatékony architektúra Olcsó A buszrendszer jól kidolgozott Perifériakészlet Spec utasításkészletek
Az ARM architektúra RISC tulajdonságok Load/store architektúra Csak szóhatárhoz illeszkedő(aligned) memória hozzáférés Ortogonális utasítások (minden címzési mód egységes) Nagy (31x31 bit) regiszterblokkok Egyszerű 32 bites utasítások 1 utasítás 1 órajelperiódus (pipeline)
Az ARM architektúra Egyedi ARM jellemzők Utasítások feltételes végrehajthatósága Megadható hogy az utasítás állítsa-e a flageket Barrel shifter (1-32bit eltolás) Sok magasszintű nyelveket támogató címzési mód Többféle megszakítás típus
ARM családok ARM7TDMI ARM9TDMI/ARM9JE ARM11TDMI Thumb+Debug+Multiplier+ICE Thumb utasításkészlet bevezetése (16 bit korlátozásokkal) ARM9TDMI/ARM9JE Jazelle technológia (8 bites Java byte code HW támogatása) MMU (OS támogatás, linux) cache (8k/16k) ARM11TDMI Thumb2 utasításkészlet (16 bit és 32 bit vegyesen, korlátozások nélkül) NEON technológia, SIMD utasítások (DSP migráció, MPEG-4, JPEG) VFP (Vector Floating Point) lebegőpontos regiszterek, ARM CortexM/R/A sorozat
Betűszavak feloldása Mit tudnak az egyes magok? T - Thumb architecture extension D - Core has debug extensions M - Core has enhanced multiplier I - Core has EmbeddedICE Macrocell Extension E - Core has Enhanced DSP instructions J - Core has Jazelle Java Byte code HW acceleration S - synthesiable Core
Cortex család A: Application R: Real-time M: Microcontroller High-end alkalmazások (tablet, mobil, TV stb) MMU, OS támogatás R: Real-time Valósidejű alkalmazások M: Microcontroller Low cost, kisebb teljesítményű
Thumb mód Sokszor az adatbusz 16bit szélességű, ezért feleslegesek a 32bites operandusok A kódsűrűség növelése érdekében az utasítások és az adat bitszáma 16 bitre csökkenthetű Hátrány: bizonyos utasítások paraméterezhetősége csökken pl: feltételes utasításvégrehajtás, feltételes ugró utasítások
Thumb-2 A Thumb mód javítása Keverten találhatók 16 és 32 bites utasítások Csak azon utasítások hosszát csökkentik, ahol veszteségmentesen megtehető
VFP Vector floating point Egyszeres illetve dupla pontosságú lebegőpontos számábrázolás Mobil és Tablet piaci alkalmazások egyre növekvő számítási igénye követelte meg Később a NEON technológia váltotta fel
NEON DSP jellegű kiegészítés SIMD műveletek támogatása Kép és videófeldolgozási algoritmusok 64 és 128 bites kombinált regiszterkészlet
Jazelle A JAVA bytekód utasításszintű támogatása A JAVA virtuális gép részleges hardveres megvalósítása Mobil és PDA piac igényelte
Az előbbi technológiák összefoglalása
AMBA busz hiearchia
Cortex M széria M: mikrovezérlős feladatokra Pipeline Opcionális: Systick timer MMU
Cortex M0 Cortex M3 Cortex M4 ARMv6-M 3 lépcsős pipeline Hiányos Thumb és Thumb2 utasításkészlet Szorzó M0+ 2 lépcsős pipeline MPU (opcionális) Cortex M3 ARMv7-M 3 lépcsős pipeline Elágazás becslés Teljes Thumb/Thumb2 MPU (opc.) Garantált IT késleltés (12cikl) Szorzó Cortex M4 ARMv7E-M DSP utasítások MPU (opc) FPU (opc)
Egy CortexM3 MCU felépítése (LPC17xx) Buszmátrix AHB busz APB busz
Memória térkép (LPC17xx)
Memória térkép A kódolás megkezdése előtt ismerni kell! Ezzel lehet kiválasztani hogy milyen mikrovezérlőt raktál a panelba
Órajel előállítás (STM32F103)
Órajel konfigurálás (STM32F103) Ezen kívül a perifériáknak órajel adás, de azt majd máskor...
GPIO port felépítése (STM32)
GPIO funkciók
Fejlesztőkörnyezet ARM-GCC! Atollic True Studio (méretkorlát) KEIL ARM Mentor graphics: Codesourcery G++ Lite Eclipse CDT Eclipse ARM plugin Atollic True Studio (méretkorlát) KEIL ARM Crossworks
CMSIS Cortex Microcontroller Software Interface standard - Könnyebb használat, és felkonfigurálás - Nagyobb kódméret - Lassabb futás - Hibák lehetnek
CMSIS minták
Kód feltöltése,debug Feltöltés: - Bootloader (CAN, USB, UART) Debuggolás - OpenOCD (FT2232) - Gyártó specifikus eszköz (STLinkV2)
Köszönjük a figyelmet!