32-bitni mikrokontroleri i primena - MS1BMP
description
Transcript of 32-bitni mikrokontroleri i primena - MS1BMP
32-bitni mikrokontroleri i primena - MS1BMP
2013Nenad Jovičić
Organizacija kursa
• Predavači:– Prof. Dr Dragan Vasiljević [email protected] – As. Dr Nenad Jovičić [email protected]
• Web: tnt.etf.rs/~ms1bmp
• Ispit: Demonstracija projekta + diskusija
Projekat• Implementacija jednostavnog hardversko-softverskog sistema/uređaja na
Cortex-M3 razvojnoj platformi.• Projekat ne treba da bude obiman po broju korišćenim periferija, ali treba da
bude detaljan u ispitivanju mogućnosti izabranih periferija. Ide se u dubinu a ne u širinu.
Projekat - rokovi• danas - 17.10.2013. – Prikupljanje predloga projekata.• 17.10.2013. Izveštaj 1. - Idejno rešenje.• 17.10.2013. - 31.10.2013. – Definisanje spiska potrebnih
komponenti. • 31.10.2013. Izveštaj 2. - Dizajn hardvera na nivou
električne šeme. Dizajn softvera na nivou osnovnih softverskih blokova i dijagrama toka.
• 31.10.2013. - 28.11.2013. – Nabavka komponenti.• 28.11.2013. - Realizacija/finalizacija projekta.• Ispitni rok januar 2014 – Finalni izveštaj.
Literatura
• ARM System-on-Chip Architecture, Steve Furber, Addison-Wesley, 2000.
• ARM System Developer's Guide: Designing and Optimizing System Software, Andrew N. Sloss, Dominic Symes, Chris Wright and John Rayfield, Elsevier, 2004.
• The Definitive Guide to the ARM Crotex-M3, Joseph Yiu, Elsevier, 2010.
ARM
• Holding osnovan 1990 godine, kao zajedničko preduzeće kompanija Accorn, Apple i VLSI Technology.
• ARM ne proizvodi čipove već se bavi dizajnom arhitekture i procesora, tj. IP-a.
• Skoro svi vodeći proizvođači elektronskih komponenti otkupljuju licence od ARMa i na osnovu njih proizvode svoje varijante mikrokontrolera i mikroprocesora.
• Osnovna ideja je da procesorsko jezgro bude standardizovano (ARM), a da svaki proizvođač dodaje svoje specifične periferije.
ARM partneri
Aplikacije
Najmanji ARM računar
A CB
Wirelessly networked into large scale sensor arrays
Battery Solar Cells
Processor, SRAM and PMU
University of Michigan
Sensors, timers
Cortex-M0 +16KB RAM 65nmUWB Radio antenna
10 kB Storage memory ~3fW/bit
12µAh Li-ion Battery
Wireless Sensor Network
Cortex-M0; 65¢
Najveći ARM računar
4200 ARM poweredNeutrino Detectors
Work supported by the National Science Foundation and University of Wisconsin-Madison
2.5km
70 bore holes 2.5km deep
60 detectors per stringstarting 1.5km down
1km3 of active telescope
1km
Lider u sferi mobilnih računara
Progres u oblasti namenski računarskih (embedded) sistema
ARM – evolucija arhitektura
ARM – evolucija arhitektura
Cortex familije
Cortex-R4
Cortex-A8
SC300™
Cortex-M1
Cortex™-M3
...2.5GHzx1-4
Cortex-A9
12k gates...Cortex-M0
x1-4
Cortex-A5
x1-4
Cortex-A15ARM Cortex-A family (v7-A):Applications processors for full OS and 3rd party applications
ARM Cortex-R family (v7-R):Embedded processors for real-time signal processing, control applications
ARM Cortex-M family (v7-M):Microcontroller-oriented processors for MCU and SoC applications
Cortex familije
Šta je arhitektura?
Cortex-M3 – procesor baziran na ARMv7-M arhitekturi
RISC procesor Harward arhitektura
Cortex-M3 core periferije• NVIC (Nested Vector Interrupt Controller) – integrisani prekidni kontroler koji
omogućava procesiranje prekida sa malim kašnjenjem• WIC (Wakeup Interrupt Controller) – opcioni kontroler zahteva za buđenje iz
režima smanjene potrošnje.• SYSTICK – sistemski tajmer tj. 24bitni brojač na dole namenjen za podršku
generisanju sistemskog prekida za operativne sisteme.• MPU (Memory Protection Unit) – opciona jedinica za kontrolu pristupa
pojedinim regionima u memoriji• ETM (Embedded Trace Macrocell) – modul koji obezbeđuje logovanje
izvršavanja instrukcija• DWT (Data Watchpoint and Trace Unit) – modul koji implementira data
watchpoint • FPB (Flash Patch and Breakpoint Unit) – modul koji omogućava preusmeravanje
izvršavanja programa iz CODE memorije u nekid rugi deo memorije.
Magistrale za pristup instrukcijama i podacima
• ICode memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos instrukcija iz Code adresnog prostora (0x00000000 do 0x1FFFFFFF).
• Dcode memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos podataka iz Code adresnog prostora (0x00000000 do 0x1FFFFFFF).
• System memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos i instrukcija i podataka iz System adresnog prostora (0x20000000 do 0xDFFFFFFF i 0xE0100000 do 0xFFFFFFFF).
• PPB magistrala – pristup internim i eksternim privatnim periferijama.
Tipična arhitektura Cortex-M3 mikrokontrolera
AMBA – advanced microcontroller bus architecture
AHB – advanced high-performance bus APB – advanced peripheral bus
High PerformanceARM processor
High-bandwidthon-chip RAM
HighBandwidthExternalMemoryInterface
DMABus Master
APBBridge
Keypad
UART
PIO
TimerAHB
APB
Visoke performanseProtočni prenosBurst prenosiVišestruki masteri
Niska potrošnjaMala brzinaJednostavan interfejsVeza sa Slave periferijama
Registri procesoraRegistri opšte namene:
– 13 registara opšte namene, r0-r12– Pokazivač steka SP (r13)– Link registra LR (r14)– Programski brojač PC (r15)– Registri r0-r7 (niži registri) su dostupni
preko svih instrukcija– Registri r8-r12 (viši registri) su dostupni
preko svih 32-bitnih instrukcija.
Specijalni registri:– Programski statusni registar xPSR– Registri za kontrolu prekida PRIMASK,
FAULTMASK, BASEPRI– Kontrlni registra CONTROL
SP – Stack pointer• Registar koji se fizički realizuje kao dva 32-bitna registra. • Main Stack Pointer (MSP) – ovaj registar je podrazumevani registar posle
reseta i mogu da ga koriste i korisnički program i prekidne rutine. U slučaju korišćenja operativnog sistema, ovaj registar koriste Kernel i prekidi, kao i neki delovi korisničkih Thread-ova sa posebnim privilegijama.
• Process Stack Pointer (PSP) – ovaj registar je namenjen za korišćenje od strane neprivilegovanih delova softvera. Na primer, to su korisnički Thread-ovi u Operativnom sistemu.
• U zavisnosti od odgovarajućeg konfiguracionog bita u CONTROL registru pristupa se jednom ili drugom od ova dva registra.
• Kod Cortex-M3 familije stek je realizovan kao Full Descending Stack, što znači da stek raste prema nižim adresama i pokazuje na poslednju zauzetu adresu.
LR – Link Register
• LR se koristi za čuvanje adrese povratka iz potprograma - na primer kada je skok izvršen BL (Branch with Link) instrukcijom:
Statusni rigistri• Application Program Status Register, APSR
– Sadrži flegove koje koristi korisnički neprivilegovani aplikativni softver
• Interrupt Program Status Register, IPSR – Sadrži broj izuzetka/prekida koji se trenutno izvršava
• Execution Program Status Register, EPSR– Sadrži specijalne flegove koji kontrolišu rad procesora. Na primer
biti ICI/IT se koriste za kontrolu prekidanja uslovnih blokova instrukcija i instrukcija koje rade višestruke Load/store operacije (LDM/STM)
Registri za kontrolu prekida
• Setovanje PM bita u PRIMASK registru maskira sve prekide osim NMI i HardFault prekida.
• Setovanje FM bita u FAULTMASK registru maskira sve prekide osim NMI prekida.
• BASEPRI registra definiše nivo prioriteta prekida kojima je dozvoljeno generisanje.
Pristup registrima kontrole prekida
• Iz C-a:
• Iz Asembler-a:
CONTROL registar
• Control registar poseduje samo dva bita.• Njime se kontroliše korišćenje steka i nivo privilegije
softvera.
Protok podataka kroz CPU
RegisterBank Mul/Div
AddressIncrementer
ALU
B
A
INTADDR
I_HADDR
AddressRegister
BarrelShifter
Writeback
ALU
Read DataRegister
Write DataRegister
InstructionDecode
I_HRDATA
D_HWDATA
D_HRDATA
AddressIncrementer
D_HADDRAddressRegister
Pipeline
• Pipeline u tri nivoa – tako zvana trostepena protočna obrada.
• Pretetch jedinica može da unapred učita do tri 32-bitne instrukcije.
Branch forwarding & speculation
1st Stage - Fetch 2nd Stage - Decode 3rd Stage - Execute
Execute stage branch (ALU branch & Load Store Branch)
Fetch(Prefetch)
AGU
Instruction Decode &
Register Read
Branch
Address Phase & Write
Back
Data Phase Load/Store &
Branch
Multiply & Divide
Shift ALU & Branch
Write
Značaj prefetch buffer-a
Optimalni pipeline
• Sve instrukcije su nad registrima• Efektivno dobijamo instrukciju po ciklusu
Pipeline sa instrukcijom skoka
• 3 ciklusa su potrebna da se završi skok
Modovi rada procesora kod najnaprednijih ARM arhitektura (ARMv7-A)
Modovi rada kod Cortex-M3 procesora
• Cortex-M3 poznaje dva režima rada:– Thread mode – u
kojem se procesor nalazi nakon reseta.
– Handler mode – u kojem se procesor nalazi kada se izvršava prekidna rutina.
ARM Cortex-M3
Application code
OS
System Call (SVCall)Undefined Instruction
Privileged
Memory
Instructions & Data
AbortsInterruptsReset
Non-Privileged
Supervisor
User
Handler Mode
Thread Mode
Modovi “rada” softvera• Privilegovani mod:
U njega se automatski prelazi ulaskom u prekid.
Potpuno su dostupni svi sistemski resursi.
U ovom modu je moguće menjati nivo privilegije.
• Neprivilegovani mod: Uobičajeni režim običnog
programa. Nisu dostupni svi sistemski
resursi. Promena nivoa privilegija
moguća samo nakon prekida.
Privilegovani/neprivilegovani rad• Promena nivoa privilegije je moguća samo u privilegovanom modu rada.• U prekidu je moguće uticati na nivo privilegije prilikom povratka u thread
režim procesora.OS aplikacije
Jednostavne aplikacije
Arhitektura instrukcijskog setaISA Instruction set architecture
“Instruction set architecture (ISA) is the structure of a computer that a machine language programmer (or a compiler) must understand to write a correct (timing independent) program for that machine”
IBM introducing 360 in 1964
Razvoj instrukcijskog seta
32-bitni instrukcijski set
16-bitni instrukcijski set
Pomešan 16-bitni i 32-bitni instrukcijski set
Poređenje performansi instrukcijskih setova
• Instrukcijski set promenljive dužine– ARM instrukcije su bile isključivo 32-bitne– Thumb instrukcije su bile isključivo 16-bitne– Thumb-2 instrukcije mogu da budu i 16-bitne i
32-bitne,
• Thumb-2 daje za oko 26% veću gustinu koda od ARM
• Thumb-2 daje za oko 25% veće performanse u odnosu na Thumb
Kako je nekada rađeno
• Kod ranijih ARM arhitektura prebacivanje sa jednog na drugi instrukcijski set je posedovalo značajan overhead.