MS1BMP - University of Belgrade

Download Report

Transcript MS1BMP - University of Belgrade

32-bitni mikrokontroleri i
primena - MS1BMP
2013
Nenad 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
Wireless Sensor Network
Battery
Solar Cells
Sensors, timers
Cortex-M0 +16KB RAM 65nm
UWB Radio antenna
10 kB Storage memory ~3fW/bit
12µAh Li-ion Battery
A
B
C
Processor, SRAM and PMU
Wirelessly networked into large scale
sensor arrays
Cortex-M0; 65¢
University of Michigan
Najveći ARM računar
4200 ARM powered
Neutrino Detectors
70 bore holes 2.5km deep
60 detectors per string
starting 1.5km down
1km3 of active telescope
Work supported by the National Science Foundation and University of Wisconsin-Madison
Lider u sferi mobilnih računara
Progres u oblasti namenski računarskih
(embedded) sistema
ARM – evolucija arhitektura
ARM – evolucija arhitektura
Cortex familije
x1-4
ARM Cortex-A family (v7-A):
Applications processors for full OS
and 3rd party applications
Cortex-A15
...2.5GHz
x1-4
Cortex-A9
Cortex-A8
x1-4
Cortex-A5
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-R4
SC300™
Cortex™-M3
Cortex-M1
Cortex-M0
12k gates...
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
High Performance
ARM processor
High
Bandwidth
External
Memory
Interface
AHB
APB
UART
Timer
APB
Bridge
Keypad
High-bandwidth
on-chip RAM
DMA
Bus Master
PIO
AHB – advanced high-performance bus
APB – advanced peripheral bus
Visoke performanse
Protočni prenos
Burst prenosi
Višestruki masteri
Niska potrošnja
Mala brzina
Jednostavan interfejs
Veza sa Slave periferijama
Registri procesora
Registri 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
I_HRDATA
Instruction
Decode
Write Data
Register
Address
Incrementer
D_HADDR
D_HWDATA
D_HRDATA
Read Data
Register
Address
Register
B
Address
Incrementer
Register
Bank
Mul/Div
Barrel
Shifter
ALU
I_HADDR
A
Address
Register
Writeback
INTADDR
ALU
Pipeline
• Pipeline u tri nivoa – tako zvana trostepena
protočna obrada.
• Pretetch jedinica može da unapred učita do tri
32-bitne instrukcije.
1st Stage - Fetch
2nd Stage - Decode
AGU
Fetch
(Prefetch)
Instruction
Decode &
Register Read
Branch forwarding & speculation
Branch
Execute stage branch (ALU branch & Load Store Branch)
3rd Stage - Execute
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
Supervisor
Privileged
Handler Mode
OS
System Call (SVCall)
Undefined Instruction
Non-Privileged
Application code
Memory
Instructions & Data
User
Thread Mode
Aborts
Interrupts
Reset
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 seta
ISA 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
instrukcijsk
i set
16-bitni
instrukcijsk
i 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.