Transcript ARM tanfolyam
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 – 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 - 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 – 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/Thumb 2 – 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!
– 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)