Download - Corso ARM

Transcript
Page 1: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

1/102

Microprocessori e Microcontrollori Corso di progettazione su Corso di progettazione su SoCSoC ARM ARM

Prof. N. MasaroneLab.: St. 132 (S2DEL – Solid State and Diamond Electronics Lab.)e.mail: [email protected]

Architettura ARM

Page 2: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

2/102

Hardware Software

Soluzione del problema

Sistema desktop

Sistema embeddedHardware Firmware

Page 3: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

3/102

Identificazione dell'hardware necessario

SBC

DSP

µC

FPGA

Page 4: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

4/102

elaborazione

μP011001...

D/A101101...

main(){ ...

101101...

A/D

conversione A/D conversione D/A

registrazione

Esempio di sistema misto analogico-digitale per applicazioni audio

Page 5: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

5/102

Breve storia del processore ARM (Advanced Risc Machine)●Il concetto RISC (Reduced Instruction Set Computer) risale a programmi di ricerca realizzati negli anni '80 presso le Università di Stanford e Berkeley (CA – USA).

● ARM viene sviluppato presso la Acorn Computers Limited di Cambridge (UK) tra il 1983 e il 1985 (Acorn Risc Machine).

● Acorn aveva acquisito una forte posizione sul mercato britannico, specialmente nel mondo scolastico, grazie al microcomputer BBC (basato sul processore 8-bit 6502, presente anche in Apple II) realizzato per una serie televisiva della BBC.

● Per migliorare il microcomputer, nel 1983, gli ingegneri Acorn prendono in considerazione vari processori commerciali CISC 16-bit, ma nessuno risulta soddisfacente (specialmente nel tempo di risposta agli interrupt, punto di forza del vecchio 6502).

● Acorn prende in considerazione l'eventualità di sviluppare in proprio un processore, ma l'impegno previsto risulta enorme, sia in termini di forza lavoro che in termini di conoscenze tecniche.

● L'articolo sul processore RISC I della Berkeley University propone una soluzione vincente sviluppata da pochi studenti universitari in meno di un anno.

● La semplicità di esecuzione dell'architettura RISC onora il vincolo richiesto di velocità nella risposta agli interrupt.

●L'ARM diventa il componente centrale della produzione Acorn ed è il primo processore RISC commerciale (1985).

●Nel 1990 nasce ARM Limited (Advanced Risc Machine) come società autonoma, venditrice di proprietà intellettuale (IP); ARM è quindi una società fabless, cioè non produce silicio.

● Ad oggi, più di 10 miliardi di processori ARM sono stati consegnati nel mondo intero dagli oltre 200 partners di ARM Limited.

● La consegna continua incessante ad una velocità di 90 processori al secondo.

ARM Milestones: http://www.arm.com/aboutarm/milestones.html

Page 6: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

6/102

5V TechnologiesActel CorporationAlchip Technologies, Inc.Altera CorporationAnalog Devices IncAnyka Technologies CorporationAtmelAvago TechnologiesBroadcom CorporationCelestial Semiconductor, Ltd.Chipnuts Technology (Shanghai) Inc.ChipXCirrus LogicConexantDatang Microelectronics Technology Co., LTD.eASICEnergy Micro ASeSilicon CorporationFreescale SemiconductorFujitsu Microelectronics America, Inc.GENS Logic Co., Ltd.HiSilicon Technologies Co., Ltd.INDILINXIntel CorpInternational Business MachinesISINE INC.Kawasaki MicroelectronicsLuminary Micro, Inc

Marvell Semiconductor, Inc.Micronas GmbHMobilEye Vision Technologies LtdNEC Electronics (Europe) GmbHNeoMagic CorporationNVIDIANXPOberthur Card SystemsOki Electric Industry Co.,Ltd.ON Semiconductor (Formerly AMI Semiconductor)Open-SiliconOxford SemiconductorPixim, Inc.Samsung Electronics Co., LtdShanghai Huahong Integrated Circuit Co., Ltd.Shanghai Jade Technologies Co, Ltd.Shanghai Silicon IP Technologies Co.,Ltd.Shenzhen ZTE IC Design Co.LtdSpansion IncSpreadtrum Communications Inc.STEPMINDSTMicroelectronicsTexas InstrumentsToshiba America Electronic ComponentsWinbond Electronics CorporationXi'an HuaXun Microelectronics Inc.Zoran Corporation© ARM Ltd

Partners ARM Ltd.

Page 7: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

7/102

© ARM Ltd

Page 8: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

8/102

Nintendo DS LiteARM Processor: ARM 7, ARM 9

ARM Processor: ARM 9ESony Playstation 3 (60GB)

ARM Processor: ARM 9Sony PlayStation Portable - PSP

Sharp Aquos LCD TVARM Processor: ARM 7

Humax RG-100 Digital Satelite Set-top-boxARM Processor: ARM 9

Kodak EASYSHARE Z1275 Zoom Digital CameraARM Processor: ARM926EJ-S© ARM Ltd

Page 9: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

9/102

Apple iPod Nano

ARM Processor: Dual ARM7TDMI

Apple iPhone

ARM Processor: ARM1176JZF-SARM7TDMI-SARM926EJ-S

ARM 9

Nokia N70 3G Phone

ARM Processor: ARM9

Hewlett Packard iPaq 6320 PDA

ARM Processor: ARM925

Tom Tom Go 300 GPS Portable Navigation system

ARM Processor: ARM920T

© ARM Ltd

Page 10: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

10/102

Verbatim Store ‘n Go Pro DiskOnKey

ARM Processor: ARM7

HP Deskjet 5940

ARM Processor: ARM946E-S

Netgear WGR614 Wireless Router

ARM Processor: ARM9

D-Link DVC 2000 Broadband Internet VideoPhone

ARM Processor: ARM9

Opengear CM4000remote control server

ARM Processor: ARM9

© ARM Ltd

Page 11: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

11/102

Dynon Avionics EFIS-D10A - Electronic Flight Information System

ARM Processor: ARM7TDMI

Artega GT (Dual-Dashboard Display)

ARM Processor: ARM926EJ-S

ExaDigm XD2100SP Mobile Payment system

ARM Processor: ARM7

Hewlett Packard HP 50g Scientific Calculator

ARM Processor: ARM920T

Sonosite MTurbo (Portable Ultrasound Device)

ARM Processor: ARM926

© ARM Ltd

Page 12: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

12/102

© 2000 Addison Wesley

address

instructions

processor

memory

registers

instructions

data

00..0016

FF..FF16

and data

Schema di computer con programma memorizzato

Page 13: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

13/102

opcode S

12 bits4 bits

Instruction Opcode Effect

LDA S 0000 ACC := mem16[S]

STO S 0001 mem16[S] := ACC

ADD S 0010 ACC := ACC + mem16[S]

SUB S 0011 ACC := ACC - mem16[S]

JMP S 0100 PC := S

JGE S 0101 if ACC >= 0 PC := S

JNE S 0110 if ACC !=0 PC := S

STP 0111 stop

© 2000 Addison Wesley

Il set di istruzioni MU0

Page 14: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

14/102

function op 1 addr. op 2 addr. dest. addr. next_i addr.

n bitsn bitsn bitsn bitsf bits

function op 1 addr. op 2 addr. dest. addr.n bitsn bitsn bitsf bits

function op 1 addr. dest. addr.

n bitsn bitsf bits

function op 1 addr.n bitsf bits

function

f bits

istruzione a 4 indirizzi

istruzione a 3 indirizzi

istruzione a 2 indirizzi

istruzione a 1 indirizzo

istruzione a 0 indirizzi

Formato indirizzi delle istruzioni

ARM Mode

Thumb Mode

© 2000 Addison Wesley

Page 15: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

15/102

Uso dinamico tipico delle istruzioni

Instruction type Dynamic usage

Data movement 43%

Control flow 23%

Arithmetic operations 15%

Comparisons 13%

Logical operations 5%

Other 1%

© 2000 Addison Wesley

Page 16: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

16/102

Architettura RISC(Reduced Instruction Set Computer)

Set di istruzioni ridotto: lunghezza fissa, un solo ciclo per l'esecuzione (pipeline). Il peso

dell'elaborazione è spostato sul compilatore;

l'hardware esegue istruzioni semplici ad alta velocità.

Funzionalità load/store: il

processore lavora solo su dati presenti nei

registri, limitando gli accessi alla

memoria (collo di bottiglia per la

velocità di esecuzione) per le

sole istruzioni specifiche di load e

di store.

Esecuzione in pipeline: il

processore spezza ogni istruzione in

più fasi che interessano parti

diverse dell'hardware.

(Fetch, Decode, Execute) con un

miglioramento del throughput.

Ampio banco di registri: validi sia

per il contenimento di dati che di

istruzioni, permettono

un'esecuzione più veloce del

programma, limitando gli accessi alla

memoria principale.

Page 17: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

17/102

Stato ARM (32 bit) e stato Thumb (16 bit)●Il codice Thumb utilizza circa il 40% di istruzioni in più rispetto al codice ARM●Il codice Thumb utilizza il 30% in meno di potenza della memoria esterna

Il codice Thumb occupa circa il 70% dell'equivalente

codice ARM

Con memoria a 16-bit il codice Thumb risulta 45% più veloce del codice ARM

Con memoria a 32-bit il codice ARM risulta 40% più

veloce del codice Thumb

16-bit mem

32-bit mem

Page 18: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

18/102

Modi di funzionamento del processore ARM

Page 19: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

19/102

= banked register

Registri generali e Program Counter nello stato ARM

r0r1r2r3r4r5r6r7r8r9r10r11r12r13

r14 (LR)r15 (PC)

CPSR

User | Systemr0r1r2r3r4r5r6r7

r8_fiqr9_fiqr10_fiqr11_fiqr12_fiqr13_fiq

r14_fiq (LR)r15 (PC)

CPSR

FIQ

SPSR_fiq

r0r1r2r3r4r5r6r7r8r9r10r11r12

r13_svcr14_svc (LR)

r15 (PC)

CPSR

Supervisor

SPSR_svc

r0r1r2r3r4r5r6r7r8r9

r10r11r12

r13_abtr14_abt (LR)

r15 (PC)

CPSR

Abort

SPSR_abt

r0r1r2r3r4r5r6r7r8r9r10r11r12

r13_irqr14_irq (LR)

r15 (PC)

CPSR

IRQ

SPSR_irq

r0r1r2r3r4r5r6r7r8r9

r10r11r12

r13_undr14_und (LR)

r15 (PC)

CPSR

Undefined

SPSR_und

Exception modes

Priviliged modes

program status register nello stato ARM

Register bank: 31x32-bit registers + 6 status registers

Page 20: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

20/102

Registri generali e Program Counter nello stato Thumb

User | System FIQ Supervisor Abort IRQ Undefined

Exception modes

Priviliged modes

= banked register

r0r1r2r3r4r5r6r7SPLRPC

CPSR

r0r1r2r3r4r5r6r7

SP_fiqLR_fiq

PC

CPSRSPSR_fiq

r0r1r2r3r4r5r6r7

SP_svcLR_svc

PC

CPSRSPSR_svc

r0r1r2r3r4r5r6r7

SP_abtLR_abt

PC

CPSRSPSR_abt

r0r1r2r3r4r5r6r7

SP_irqLR_irq

PC

CPSRSPSR_irq

r0r1r2r3r4r5r6r7

SP_undLR_und

PC

CPSRSPSR_und

Program status register nello stato Thumb

Register bank: 21x16-bit registers + 6 status registers

Page 21: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

21/102

r0r1r2r3r4r5r6r7r8r9

r10r11r12

Stack pointer (r13)Link register (r14)

Program counter (r15)

ARM state

Current program status register(CPSR)

Saved program status register(SPSR)

Thumb state

r0r1r2r3r4r5r6r7

Stack pointer (r13)Link register (r14)

Program counter (r15)Current program status register

(CPSR)Saved program status register

(SPSR)

Relazione tra registri dello stato thumb e registri dello stato ARM

Copyright © 2001 ARM Limited

Page 22: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

22/102

Modi e registri visibili nello stato Thumb e ARM

Copyright © 2001 ARM Limited

Page 23: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

23/102

CPU08 opcode map (CISC) © Freescale Semiconductor, Inc.

Page 24: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

24/102

ARM instruction set

summary (RISC)

Copyright © 2001 ARM Limited

Page 25: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

25/102

Program status register (CPSR - SPSR_exc)

0

Z C V Q Res JN Reserved Reserved E A F T M[4:0]IGE[3:0]

31 30 29 28 27 26 25 24 23 20 19 16 15 10 9 8 7 6 5 4

= reserved in ARM7/TDMI-S core

condition code flags control bits

oVerflow

Carry or borrow or extend

Zero

Negative or less than

IRQ disable

FIQ disable

Thumb/ARM

10000M[4:0]Mode

User

10001FIQ

10010IRQ

10011Supervisor

10111Abort

11011Undefined

11111System

Page 26: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

26/102

Istruzioni di spostamento

Copyright © 2001 ARM Limited ARM Architecture Reference Manual

Page 27: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

27/102

modifica di CPSR (modo di funzionamento):MRS r0, CPSR ; carica CPSR in r0BIC r0, r0, #0x1F ; cancella il modo corrente..ORR r0, r0, #0x13 ; .. ed entra in SupervisorMSR CPSR_c, r0 ; aggiorna CPSR

; ora in stato SVC

modifica di CPSR (flag di condizione):MRS r0, CPSR ; carica il valore di CPSR in r0BIC r0, r0, #0xF0000000 ; azzera le flag N, Z, C, VMSR CPSR_f, r0 ; aggiorna le flag in CPSR

modifica di CPSR (disabilita IRQ):MRS r0, CPSR ; carica il valore di CPSR in r0BIC r0, r0, #0x80 ; disabilita INTMSR CPSR_c, r0 ; aggiorna lo stato in CPSR

; ora in stato INTmodifica di CPSR (entra in modalità FIQ):

MRS r0, CPSR ; carica il valore di CPSR in r0BIC r0, r0, #0x1F ; azzera i bit di modalitàORR r0, r0, #0x11 ; imposta i bit come FIQMSR CPSR_c, r0 ; aggiorna la modalità in CPSR

; ora in stato FIQ ARM Architecture Reference Manual

Page 28: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

28/102

Istruzioni aritmetiche

Copyright © 2001 ARM Limited

ARM Architecture Reference Manual

Page 29: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

29/102

somma di due registri:ADD r5, r1, r3; addiziona r1 e r3 con risultato in r5

decrementa r2 e verifica se vale zero:SUBS r2, r2, #1; decrementa r2 e imposta CCBEQ LABEL ; salta se r2 vale zero.. ; .. altrimenti va oltre

moltiplica r0 per 5 (usando il barrel shifter):ADD r0, r0, r0, LSL #2 ; r0 * 4 + r0 = r0 * 5

subroutine che moltiplica r0 per 10 (usando il barrel shifter):MOV r0, #3BL TIM10..

TIM10 MOV r0, r0, LSL #1 ; x 2ADD r0, r0, r0, LSL #2 ; x 5MOV PC, r14 ; ritorna

addiziona un intero a 64 bit in r0, r1 ad un altro in r2, r3:ADDS r2, r2, r0; somma i meno significativi e salva il carryADC r3, r3, r1; somma i più significativi con carry

ARM Architecture Reference Manual

Page 30: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

30/102

ARM Architecture Reference Manual

031

00000

LSL #5

031

00000

LSR #5

031

11111 1

ASR #5 , negative operand

031

00000 0

ASR #5 , positive operand

0 1

031

ROR #5

031

RRX

C

C C

© 2000 Addison Wesley

Operazioni di shift in ARM

LSL: Logical Shift Left (0-31)LSR: Logical Shift Right (0-32)ASL: Arithmetic Shift Left = LSL (0-31)ASR: Arithmetic Shift Right (0-32)ROR: ROtate Right (0-32)RRX: Rotate Right eXtended (1)

Page 31: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

31/102

prodotto scalare di due vettori:MOV r11, #20 ; inizializza il contatore del cicloMOV r10, #0 ; inizializza il totale

LOOP LDR r0, [r8], #4 ; carica il primo elemento..LDR r1, [r9], #4 ; .. ed il secondoMLA r10, r0, r1, r10 ; r10 = r0 x r1 + r10SUBS r11, r11, #1 ; decrementa il contatore del cicloBNE LOOP ; se r11 <> 0 salta a LOOP .... ; .. altrimenti procede

esempi di moltiplicazioni:MUL r4, r2, r1 ; r4 = r2 x r1MULS r4, r2, r1 ; r4 = r2 x r1, set flag N e ZMLA r7, r8, r9, r3 ; r7 = r8 x r9 + r3SMULL r4, r8, r2, r3 ; r4 = bit 0 - 31 di r2 x r3

; r8 = bit 32 - 63 di r2 x r3UMULL r6, r8, r0, r1 ; r8, r6 = r0 x r1UMLAL r5, r8, r0, r1 ; r8, r5 = r0 x r1 + r8, r5

sottrazione a 64 bit (r0, r2 LSW mentre r1, r3 MSW):SUBS r4, r0, r2 ; r4 = r0 – r2 e imposta il carrySBC r5, r1, r3 ; r5 = r1 – r3 + carry -1

ARM Architecture Reference Manual

Page 32: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

32/102

Istruzioni logiche

Copyright © 2001 ARM Limited ARM Architecture Reference Manual

Page 33: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

33/102

Copyright © 2001 ARM Limited ARM Architecture Reference Manual

esempi di operazioni Booleane:AND r0, r1, r2 ; r0 = r1 and r2ORR r0, r1, r2 ; r0 = r1 or r2EOR r0, r1, r2 ; r0 = r1 xor r2BIC r0, r1, r2 ; r0 = r1 and not r2

esempi di operazioni di confronto:CMP r1, r2 ; imposta cc su r1 - r2CMN r1, r2 ; imposta cc su r1 + r2TST r1, r2 ; imposta cc su r1 and r2TEQ r1, r2 ; imposta cc su r1 xor r2

Page 34: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

34/102

Istruzioni di salto

Copyright © 2001 ARM Limited

cond 1 0 1 L 24-bit signed word offset

31 28 27 25 24 23 0

cond Rn0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 031 28 27 6 5 4 3 0

1L

B, BL

BX

CPSR5

T

31 0

0131 Rn

PC

ARM Architecture Reference Manual

Page 35: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

35/102

salto incondizionato:B LABEL ; salto incondizionato....

LABEL .. ; .. fin quiciclo 10:

MOV r0,#10; inizializza il contatore del cicloLOOP ..

SUBS r0, #1 ; decrementa il contatore impostando i CCBNE LOOP ; se il contatore <> 0 ripete il ciclo..

.. ; .. altrimenti escechiamata di soubroutine:BL SUB ; branch e link alla subroutine SUB

.. ; punto di ritorno

..SUB .. ; punto d'ingresso della subroutine

MOV PC,r14; ritornachiamata di soubroutine condizionale:

CMP r0, #5 ; se r0 < 5BLLT SUB1 ; chiama SUB1BLGE SUB2 ; chiama SUB2

salto incondizionato:BX r0 ; salta all'indirizzo in r0

; entra in stato Thumb se r0[0]=1

ARM Architecture Reference Manual

Page 36: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

36/102

Istruzioni di lettura singola da memoria

Copyright © 2001 ARM Limited ARM Architecture Reference Manual

Page 37: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

37/102

Istruzioni di scrittura singola in memoria

Copyright © 2001 ARM Limited

ARM Architecture Reference Manual

Page 38: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

38/102

esempi di load / store singoli:LDR r1, [r0] ; valore all'indirizzo r0 in r1 LDR r8, [r3, #4] ; valore all'indirizzo r3+4 in r8LDR r12, [r13, #-4] ; valore all'indirizzo r13-4 in r12STR r2, [r1, #0x100] ; salva r2 all'indirizzo r1 + 0x100LDRB r5, [r9] ; carica il byte all'indirizzo r9 in r5

; (3 byte superiori azzerati)LDRB r3, [r8, #3] ; carica il byte all'indirizzo r8+3 in r3

; (3 byte superiori azzerati)STRB r4, [r10, #0x200] ; salva byte r4 all'indirizzo r10+0x200LDR r11, [r1, r2] ; valore all'indirizzo r1+r2 in r11 STRB r10, [r7, -r4] ; salva byte r10 all'indirizzo r7-r4LDR r11, [r3, r5, LSL #2]; valore all'indirizzo r3+(r5x4) in r11LDR r1, [r0, #4]! ; valore indirizzo r0+4 in r1, poi r0=r0+4STRB r7, [r6, #-1]! ; salva byte r7 all'indirizzo r6-1,

; poi r6=r6-1LDR r3, [r9], #4 ; val. all'indirizzo r9 in r3, poi r9=r9+4 STR r2, [r5], #8 ; salva r2 all'indirizzo r5, poi r5=r5+8

ARM Architecture Reference Manual

Page 39: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

39/102

LDRSH r5, [r9] ; signed halfword dall'indirizzo r9 in r5LDRSB r3, [r8, #3] ; signed byte dall'indirizzo r8+3 in r3LDRSB r4, [r10, #0xC1] ; signed dall'indirizzo r10+0xC1 in r4LDRH r11, [r1, r2] ; halfword dall'indirizzo r1+r2 in r11STRH r10, [r7, -r4] ; halfword da r10 all'indirizzo r7-r4LDRSH r1, [r0, #2]! ; signed halfword dall'indirizzo r0+2

; in r1, poi r0=r0+2LDRSB r7, [r6, #-1]! ; signed byte dall'indirizzo r6-1 in r7,

; poi r6=r6-1LDRH r3, [r9], #2 ; halfword dall'indirizzo r9 in r3,

; poi r9=r9+2STRH r2, [r5], #8 ; halfword da r2 all'indirizzo r5,

; poi r5=r5+8

esempi di load / store singoli:LDR r0, [PC, #40] ; carica in r0 PC+0x40 (=indirizzo della

; istruzione LDR + 8 + 0x40)LDR r0, [r1], r2 ; valore all'indir. r1 in r0, poi r1=r1+r2LDRH r1, [r0] ; halfword ind. r0 in r1 (azzera 2 B sup.) LDRH r8, [r3, #2] ; halfword dall'indirizzo r3+2 in r8LDRH r12, [r13, #-6] ; halfword dall'indirizzo r13-6 in r12STRH r2, [r1, #0x80] ; halfword da r2 all'indirizzo r1+0x80

ARM Architecture Reference Manual

Page 40: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

40/102

Istruzioni di lettura multipla da memoria

Copyright © 2001 ARM Limited ARM Architecture Reference Manual

Page 41: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

41/102

Istruzioni di scrittura multipla in memoria

Copyright © 2001 ARM Limited

ARM Architecture Reference Manual

Page 42: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

42/102

copia di registri con uso dello stack:STMFD r13!, {r2-r9} ; salva r2-r9 sullo stackLDMIA r0!, {r2-r9} ; carica 8 word dall'indirizzo r0 in r2-r9STMIA r1, {r2-r9} ; salva r2-r9 all'indirizzo r1LDMFD r13!, {r2-r9} ; ripristina r2-r9 dallo stack

esempi di load store multipli:LDMIA r1, {r0, r2, r5} ; r0 := mem

32[r1]

; r2 := mem32[r1+4]

; r5 := mem32[r1+8]

STMFD r13!, {r0-r2, r14} ; salva r0-r2 e LR sullo stack LDMFD r13!, {r0-r2, PC} ; ripristina dallo stack r0-r2 e il PC

nota all'istruzione LDM tratta da ARM Architecture Reference Manual:The registers are loaded in sequence, the lowest-numbered register from the lowest memory address (start_address), through to the highest-numbered register from the highest memory address (end_address)

nota all'istruzione STM tratta da ARM Architecture Reference Manual:The registers are stored in sequence, the lowest-numbered register to the lowest memory address (start_address), through to the highest-numbered register to the highest memory address (end_address)

ARM Architecture Reference Manual

Page 43: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

43/102

stack

libera

heap

applicazione

memoria

r0r1r2r3r4r5r6r7r8r9r10r11r12

r13 (SP)r14 (LR)r15 (PC)

registri

copia di registri con uso dello stack:STMFD r13!, {r2-r9} ; salva r2-r9 sullo stackLDMIA r0!, {r2-r9} ; carica 8 word dall'indirizzo r0 in r2-r9STMIA r1, {r2-r9} ; salva r2-r9 all'indirizzo r1LDMFD r13!, {r2-r9} ; ripristina r2-r9 dallo stack

Scopo di queste istruzioni è copiare in area2 i dati presenti nell'area1, senza utilizzare istruzioni dirette di movimento dati in memoria. area1

area2

ARM Architecture Reference Manual

Page 44: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

44/102

STMFD r13!, {r2-r9} ; salva r2-r9 sullo stack

r0r1r2r3r4r5r6r7r8r9r10r11r12

r13 (SP)r14 (LR)r15 (PC)

0x00000B010x000000030x000002030x00000F040x00000A250x00002C080x00002C0D

bit 0bit 31

0x00005090

0x0000F200NN NN NN NN

0x0000F1FC

0x0000F1F8

0x0000F1F4

0x0000F1EC

0x0000F1F0

0x0000F1E8

0x0000F1E4

0x0000F1E0

00 00 0B 01

00 00 00 03

00 00 0302

00 00 0F 04

00 00 250A

00 00 2C 08

00 00 0D2C

00 00 50 90

registri memoria

0x0000F200 0x0000F1E0

ARM Architecture Reference Manual

Page 45: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

45/102

LDMIA r0!, {r2-r9} ; carica 8 word dall'indirizzo r0 in r2-r9

r0r1r2r3r4r5r6r7r8r9r10r11r12

r13 (SP)r14 (LR)r15 (PC)

0x0118AC020x5576E4CD0xAD4F21780x021243290x23282FE20x16CA43230x24FE3200

bit 0bit 31

0x1443AAD4

0x10000024NN NN NN NN

0x10000020

0x1000001C

0x10000018

0x10000010

0x10000014

0x1000000C

0x10000008

0x10000000

14 43 AA D4

24 FE 32 00

16 CA 2343

23 28 2F E2

02 12 2943

AD 4F 21 78

55 76 CDE4

01 18 AC 02

registrimemoria

0x10000000

0x0000F1DF

0x10000024

ARM Architecture Reference Manual

Page 46: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

46/102

STMIA r1, {r2-r9} ; salva r2-r9 all'indirizzo r1

r0r1r2r3r4r5r6r7r8r9r10r11r12

r13 (SP)r14 (LR)r15 (PC)

0x0118AC020x5576E4CD0xAD4F21780x021243290x23282FE20x16CA43230x24FE3200

bit 0bit 31

0x1443AAD4

0x20000024NN NN NN NN

0x20000020

0x2000001C

0x20000018

0x20000010

0x20000014

0x2000000C

0x20000008

0x20000000

14 43 AA D4

24 FE 32 00

16 CA 2343

23 28 2F E2

02 12 2943

AD 4F 21 78

55 76 CDE4

01 18 AC 02

registrimemoria

0x10000024

0x0000F1DF

0x20000000

ARM Architecture Reference Manual

Page 47: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

47/102

LDMFD r13!, {r2-r9} ; ripristina r2-r9 dallo stack

r0r1r2r3r4r5r6r7r8r9r10r11r12

r13 (SP)r14 (LR)r15 (PC)

0x00000B010x000000030x000002030x00000F040x00000A250x00002C080x00002C0D

bit 0bit 31

0x00005090

0x0000F200NN NN NN NN

0x0000F1FC

0x0000F1F8

0x0000F1F4

0x0000F1EC

0x0000F1F0

0x0000F1E8

0x0000F1E4

0x0000F1E0

00 00 0B 01

00 00 00 03

00 00 0302

00 00 0F 04

00 00 250A

00 00 2C 08

00 00 0D2C

00 00 50 90

registri memoria

0x0000F2000x0000F1E0

ARM Architecture Reference Manual

Page 48: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

48/102

r5r1

r9’

r0r9

STMIA r9!, {r0,r1,r5}

100016

100c 16

101816

r1r5r9

STMDA r9!, {r0,r1,r5}

r0

r9’ 100016

100c 16

101816

r5r9

STMDB r9!, {r0,r1,r5}

r1

r0r9’ 100016

100c 16

101816

r5r1r0

r9’

r9

STMIB r9!, {r0,r1,r5}

100016

100c 16

101816

Ascending Descending Full Empty Full Empty

Increment

Before STMIB STMFA

LDMIB LDMED

After STMIA STMEA

LDMIA LDMFD

Decrement

Before LDMDB LDMEA

STMDB STMFD

After LDMDA LDMFA

STMDA STMED

© 2000 Addison Wesley

Gestioni dello stack e relative istruzioni multiple

ARM Architecture Reference Manual

Page 49: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

49/102

Generalità sullo stack

ARM Architecture Reference Manual

SP (empty ascending) (full descending) SP

(empty descending) SP

Lo stack è un'area di memoria per la registrazione temporanea delle informazioni; può essere utilizzato, per es. all'inizio di una funzione, per salvare il valore corrente dei registri, al fine di utilizzarli nel corpo funzione scrivendovi altri dati. Al termine della funzione i registri possono essere ripristinati, recuperandone i valori precedenti dallo stack.Lo stack è una struttura dati di tipo LIFO (Last-In First-Out), ovvero di tipo pila: l'ultimo dato inserito nello stack è il primo ad essere recuperato dallo stack. Deve sempre essere disponibile un puntatore SP (Stack Pointer) che fornisce l'indirizzo di accesso allo stack.Con gli attributi ascending e descending indichiamo la possibilità di aggiungere elementi nello stack utilizzando indirizzi di memoria rispettivamente crescenti o descrescenti.Con gli attributi full ed empty indichiamo la possibilità che lo stack pointer punti ad un indirizzo rispettivamente vuoto (quindi privo di valore significativo) o pieno (cioè già utilizzato per il salvataggio di un valore utile).

SP (full ascending)

Page 50: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

50/102

Istruzioni di scambio, coprocessore e SWI

Copyright © 2001 ARM Limited ARM Architecture Reference Manual

Page 51: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

51/102

esempi di swap:SWP r12, r10, [r9] ; carica in r12 il valore all'indirizzo r9 e

; salva r10 nell'indirizzo r9SWPB r3, r4, [r8] ; carica un byte in r3 dall'indirizzo r8 e

; salva un byte da r4 all'indirizzo r8SWP r1, r1, [r2] ; scambia il valore in r1 e l'indirizzo

; in r2

esempio di SWI:SWI#0xABCDEF ; passa in modo Supervisor (privilegiato)

ARM Architecture Reference Manual

Page 52: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

52/102

ARM Architecture Reference Manual

esempio di semaforo: [r1] → 0xFF (rosso), 0x00 (verde)MOV r0, #0xFF ; valore per il rosso

loop SWPB r0, r0, [r1] ; carica in r0 il valore da [r1] e viceversaCMP r0, #0xFF ; verifica r0 e 0xFF (rosso)BEQ loop ; se r0=0xFF va in loop

r0r1

0x00 memoria0xFF

caso [r1] = 0x00 (semaforo verde)

r0r1

0xFF memoria0x00

r0r1

0xFF memoria0xFF

caso [r1] = 0xFF (semaforo rosso)

In questo caso rimane in loop fintantoché il semaforo è rosso

Page 53: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

53/102

ARM Architecture Reference Manual

bit 0bit 31

0x00 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN0xNN

0xNN 0xNN 0xNN 0xNN

0xFF 0xNN 0xNN0xNN

0xNN 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN0xNN

0xNN 0xNN 0xNN 0xNN

memoria condivisa

μP1

μP2L'area di memoria condivisa in rosso è

bloccata (p.e. da µP1) e può essere liberata

solo da questo.

L'area di memoria condivisa in verde è libera e può essere bloccata dal primo processore che la richiede.

Le memorie condivise sono aree dati accessibili da più task, in esecuzione sullo stesso processore o su processori diversi. Possono essere un modo semplice ed efficace per far comunicare i task tra loro; risulta però fondamentale il sincronismo delle operazioni di lettura/scrittura, al fine di garantire l'integrità delle informazioni memorizzate. A tal scopo si utilizzano i semafori.

Page 54: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

54/102

A R M c o n d i t i o n c o d e sO p c o d e[ 3 1 : 2 8 ]

M n e m o n i ce x t e n s i o n

I n t e r p r e t a t i o n S t a t u s f l a g s t a t e f o re x e c u t i o n

0 0 0 0 E Q E q u a l / e q u a l s z e r o Z s e t0 0 0 1 N E N o t e q u a l Z c l e a r0 0 1 0 C S / H S C a r r y s e t / u n s i g n e d h i g h e r o r s a m e C s e t0 0 1 1 C C / L O C a r r y c l e a r / u n s i g n e d l o w e r C c l e a r0 1 0 0 M I M i n u s / n e g a t i v e N s e t0 1 0 1 P L P l u s / p o s i t i v e o r z e r o N c l e a r0 1 1 0 V S O v e r f l o w V s e t0 1 1 1 V C N o o v e r f l o w V c l e a r1 0 0 0 H I U n s i g n e d h i g h e r C s e t a n d Z c l e a r1 0 0 1 L S U n s i g n e d l o w e r o r s a m e C c l e a r o r Z s e t1 0 1 0 G E S i g n e d g r e a t e r t h a n o r e q u a l N e q u a l s V1 0 1 1 L T S i g n e d l e s s t h a n N i s n o t e q u a l t o V1 1 0 0 G T S i g n e d g r e a t e r t h a n Z c l e a r a n d N e q u a l s V1 1 0 1 L E S i g n e d l e s s t h a n o r e q u a l Z s e t o r N i s n o t e q u a l t o V1 1 1 0 A L A l w a y s a n y1 1 1 1 N V N e v e r ( d o n o t u s e ! ) n o n e

c o n d

3 1 2 8 2 7 0

© 2000 Addison Wesley ARM Architecture Reference Manual

Page 55: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

55/102

B r a n c h c o n d i t i o n sB r a n c h I n t e r p r e t a t i o n N o r m a l u s e sBB A L

U n c o n d i t i o n a lA l w a y s

A l w a y s t a k e t h i s b r a n c hA l w a y s t a k e t h i s b r a n c h

B E Q E q u a l C o m p a r i s o n e q u a l o r z e r o r e s u l tB N E N o t e q u a l C o m p a r i s o n n o t e q u a l o r n o n - z e r o r e s u l tB P L P l u s R e s u l t p o s i t i v e o r z e r oB M I M i n u s R e s u l t m i n u s o r n e g a t i v eB C CB L O

C a r r y c l e a rL o w e r

A r i t h m e t i c o p e r a t i o n d i d n o t g i v e c a r r y - o u tU n s i g n e d c o m p a r i s o n g a v e l o w e r

B C SB H S

C a r r y s e tH i g h e r o r s a m e

A r i t h m e t i c o p e r a t i o n g a v e c a r r y - o u tU n s i g n e d c o m p a r i s o n g a v e h i g h e r o r s a m e

B V C O v e r f l o w c l e a r S i g n e d i n t e g e r o p e r a t i o n ; n o o v e r f l o w o c c u r r e dB V S O v e r f l o w s e t S i g n e d i n t e g e r o p e r a t i o n ; o v e r f l o w o c c u r r e dB G T G r e a t e r t h a n S i g n e d i n t e g e r c o m p a r i s o n g a v e g r e a t e r t h a nB G E G r e a t e r o r e q u a l S i g n e d i n t e g e r c o m p a r i s o n g a v e g r e a t e r o r e q u a lB L T L e s s t h a n S i g n e d i n t e g e r c o m p a r i s o n g a v e l e s s t h a nB L E L e s s o r e q u a l S i g n e d i n t e g e r c o m p a r i s o n g a v e l e s s t h a n o r e q u a lB H I H i g h e r U n s i g n e d c o m p a r i s o n g a v e h i g h e rB L S L o w e r o r s a m e U n s i g n e d c o m p a r i s o n g a v e l o w e r o r s a m e

© 2000 Addison Wesley ARM Architecture Reference Manual

Page 56: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

56/102

ARM instruction

0 0 0 0

2831 27 0

condition field (EQ)

CPSR (Current Program Status Register)

Z

2831 27 0

condition flags

Se Z==1 (EQ) esegue l'istruzione, altrimenti la salta

Esempio di istruzione condizionata EQ

ARM Architecture Reference Manual

Page 57: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

57/102

r1<==>ar2<==>b

Esempio: algoritmo massimo comune divisore

algoritmo con branch algoritmo con condizioni

ARM Architecture Reference Manual

Page 58: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

58/102

Esempio: algoritmo di ricerca del massimo

if (a > b) c=a; else c=b; // c = max (a , b)

CMP r0, r1 ; compara r0,r1MOVGT r2, r0 ; se r0>r1, r2=r0MOVLE r2, r1 ; se r0<=r1, r2=r1

MOV r2, r0 ; r2=r0CMP r0, r1 ; compara r0, r1MOVLE r2, r1 ; se r0<=r1, r2=r1

CMP r0, r1 ; compara r0, r1BLE ELSE ; se r0<=r1 salta a ELSEMOV r2, r0 ; r2=r0B ENDIF ; salta a ENDIF

ELSE MOV r2, r1 ; r2=r1ENDIF .. ; ..

posto che: a → r0, b → r1, c → r2

più efficienti, ma utili solo per if-else brevi

meno efficiente, ma utile per if-else lunghi

ARM Architecture Reference Manual

Page 59: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

59/102

ARM Architecture Reference Manual

Esempio: azzeramento di un vettore

for(i=0; i<10; i++){ a[i]=0 } // a[0] = ... = a[9] = 0

MOV r1, #0 ; valore da caricare in a[i]ADR r2, a[0] ; r2 punta alla locazione a[0]MOV r0, #0 ; i = 0

LOOP CMP r0, #10 ; i < 10 ?BGE EXIT ; if i>=10 EXITSTR r1, [r2,r0,LSL #2] ; a[i]=0 <--> [r2+r0*4]=r1ADD r0, r0, #1 ; i++B LOOP

EXIT .. ; ..

ADR è una pseudo-istruzione dell'assembler, che calcola automaticamente un indirizzo mediante istruzioni di tipo ADD o SUB applicate al Program Counter (PC)

Page 60: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

60/102

Core Architecture ARM1 v1ARM2 v2ARM2as, ARM3 v2aARM6, ARM600, ARM610 v3ARM7, ARM700, ARM710 v3ARM7TDMI, ARM710T, ARM720T, ARM740T v4TStrongARM, ARM8, ARM810 v4ARM9TDMI, ARM920T, ARM940T v4TARM9ES v5TEARM10TDMI, ARM1020E v5TE

Architetture ARM

ARM Architecture Reference Manual

Page 61: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

61/102

fetch decode execute

Esecuzione di istruzioni in tre fasi successiveSenza pipeline

Page 62: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

62/102

Esecuzione di istruzioni in pipeline a tre stadiCon pipeline

Page 63: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

63/102

t

instr. #1

instr. #2

instr. #3

ARM operazione della pipeline a 3 stadi con istruzione a ciclo singolo

fetch decode execute

fetch decode execute

fetch decode execute

latenza di tre cicli

il through-put è un'istruzione per ciclo

PC PC+4 PC+8

Page 64: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

64/102

fetch ADD decode execute

fetch STR decode calc. addr. data xfer

fetch ADD decode execute

fetch ADD decode execute

fetch ADD decode execute

t

instr. #1

instr. #2

instr. #3

instr. #4

instr. #5

= main memory access

ARM operazione della pipeline a 3 stadi con istruzione multi ciclo

Page 65: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

65/102

Differenza nel comportamento della pipeline in stato ARM e stato Thumb

Copyright © 2001 ARM Limited

Page 66: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

66/102

address register

register bank31x32-bit registers+ 6 status registers

32-bit ALU

32x8 multiplier

write data register

instruction pipelineread data register

thumb instruction decoder

instructiondecoder

andcontrollogic

addressincrementer

WDATA[31:0]

ADDR[31:0]

barrel shifter

RDATA[31:0]

ALU

bus

A b

us

B b

us

address register

PC

bus

incr

emen

ter

bus

ARM7TDMI-S core

Page 67: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

67/102

address register

register bank31x32-bit registers+ 6 status registers

32-bit ALU

32x8 multiplier

write data registerinstruction pipelineread data register

thumb instruction decoder

instructiondecoder

andcontrollogic

addressincrementer

WDATA[31:0]

ADDR[31:0]

barrel shifter

RDATA[31:0]

ALU

bus

A b

us

B b

us

address register

PC

bus

incr

emen

ter

bus

Data processing instruction (register

to register operation)cycle #1:

fetch instr. #1

PC = 0xXXXXXXXX

instr. #1

L'istruzione #1 viene caricata dalla memoria codice (fetch), all'indirizzo 0xXXXXXXXX; il program counter (PC), presente nel banco dei registri, è poi incrementato di 4 (ARM mode) passando al valore 0xXXXXXXXX + 4.

Page 68: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

68/102

address register

register bank31x32-bit registers+ 6 status registers

32-bit ALU

32x8 multiplier

write data registerinstruction pipelineread data register

thumb instruction decoder

instructiondecoder

andcontrollogic

addressincrementer

WDATA[31:0]

ADDR[31:0]

barrel shifter

RDATA[31:0]

ALU

bus

A b

us

B b

us

address register

PC

bus

incr

emen

ter

bus

Data processing instruction (register

to register operation)cycle #2:

decode instr. #1fetch inst. #2

PC = 0xXXXXXXXX + 4

instr. #2

L'istruzione #2 viene caricata dalla memoria codice (fetch), all'indirizzo 0xXXXXXXXX + 4; il program counter (PC), presente nel banco dei registri, è poi incrementato di 4 (ARM mode) passando al valore 0xXXXXXXXX + 8. L'istruzione #1 passa al decoder per la sua interpretazione.

Page 69: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

69/102

address register

register bank31x32-bit registers+ 6 status registers

32-bit ALU

32x8 multiplier

write data register

instruction pipelineread data register

thumb instruction decoder

instructiondecoder

andcontrollogic

addressincrementer

WDATA[31:0]

ADDR[31:0]

barrel shifter

RDATA[31:0]

ALU

bus

A b

us

B b

us

address register

PC

bus

incr

emen

ter

bus

Data processing instruction (register

to register operation)cycle #3:

execute instr. #1decode instr. #2

fecth instr. #3

PC = 0xXXXXXXXX + 8

instr. #3

L'istruzione #3 viene caricata dalla memoria codice (fetch), all'indirizzo 0xXXXXXXXX + 8; il program counter (PC), presente nel banco dei registri, è poi incrementato. L'istruzione #2 passa al decoder per la sua interpretazione. L'istruzione #1 va nella fase di execute, agendo solo sui registri (come in questo esempio) o anche sulla memoria esterna, nel caso d'istruzione di tipo load/store.

Page 70: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

70/102

Esecuzione d'istruzione in pipeline

fetch dec reg ALU mem res1

fetch dec reg ALU mem res

fetch dec reg ALU mem res

2

3

time

instruction

Problemi delle pipeline

© 2000 Addison Wesley

Page 71: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

71/102

Rischio pipeline Read-after-write

fetch dec reg ALU mem res1

fetch dec reg ALU mem res2

time

stall

instruction

© 2000 Addison Wesley

Page 72: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

72/102

Comportamento del salto in pipeline

fetch dec reg ALU mem res1 (branch)

fetch dec reg ALU mem res

fetch dec reg ALU mem res

2

3

time

instruction

fetch dec reg ALU mem res

fetch dec reg ALU mem res

4

5 (branch target)

© 2000 Addison Wesley

Page 73: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

73/102

Eccezioni

esecuzioneDurante l'esecuzione normale di un programma, il micro esegue le istruzioni una dopo l'altra, mediante il processo di fetch-decode-execute.

Le eccezioni sono eventi anomali che prevedono reazioni particolari del micro per gestire la nuova situazione.

Page 74: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

74/102

Eccezione

effetto diretto di un'istruzione

effetto indiretto di un'istruzione

derivante da una causa esterna

software interrupt (SWI)

undefined instruction

prefetch abort

data abort

reset

interrupt request (IRQ)

fast interrupt request (FIQ)

Page 75: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

75/102

C P S R [ 4 : 0 ] M o d e U s e R e g i s t e r s1 0 0 0 0 U s e r N o r m a l u s e r c o d e u s e r1 0 0 0 1 F I Q P r o c e s s i n g f a s t i n t e r r u p t s _ f i q1 0 0 1 0 I R Q P r o c e s s i n g s t a n d a r d i n t e r r u p t s _ i r q1 0 0 1 1 S V C P r o c e s s i n g s o f t w a r e i n t e r r u p t s ( S W I s ) _ s v c1 0 1 1 1 A b o r t P r o c e s s i n g m e m o r y f a u l t s _ a b t1 1 0 1 1 U n d e f H a n d l i n g u n d e f i n e d i n s t r u c t i o n t r a p s _ u n d1 1 1 1 1 S y s t e m R u n n i n g p r i v i l e g e d o p e r a t i n g s y s t e m t a s k s u s e r

© 2000 Addison Wesley

Page 76: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

76/102

cpsr spsr_exc

PC LR_exc

set cpsr (mode bits)

PCexc vector address

Gestione in ingresso dell'eccezione

Gestione in uscita dell'eccezione

spsr_exc cpsr

LR_exc PC

© 2000 Addison Wesley

E x c e p t i o n M o d e V e c t o r a d d r e s s R e s e t S V C 0 x 0 0 0 0 0 0 0 0 U n d e f i n e d i n s t r u c t i o n U N D 0 x 0 0 0 0 0 0 0 4 S o f t w a r e i n t e r r u p t ( S W I ) S V C 0 x 0 0 0 0 0 0 0 8 P r e f e t c h a b o r t ( i n s t r u c t i o n f e t c h m e m o r y f a u l t ) A b o r t 0 x 0 0 0 0 0 0 0 C D a t a a b o r t ( d a t a a c c e s s m e m o r y f a u l t ) A b o r t 0 x 0 0 0 0 0 0 1 0 I R Q ( n o r m a l i n t e r r u p t ) I R Q 0 x 0 0 0 0 0 0 1 8 F I Q ( f a s t i n t e r r u p t ) F I Q 0 x 0 0 0 0 0 0 1 C

ISR

istruzione atomica di tipo:MOVS pc, r14 ; returnSUBS pc, r14, #4 ; pc=r14-4SUBS pc, r14, #8 ; pc=r14-8

Page 77: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

77/102

L'eccezione SWI

N.B. : il modo SUPERVISOR è utilizzato anche al reset del processore

Page 78: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

78/102

instr. #1

SWI

instr. #3

instr. #4

instr. #5

instr. #6

execute

decode

fetcht

PC

PC - 4

PC - 8

SWI

L'eccezione SWI viene attivata, con apposita istruzione, dopo la conclusione della fase di decode; il registro r14_svc (LR) viene caricato con il PC corrente, che punta all'istruzione successiva a SWI. In seguito il CPSR viene salvato in SPSR_svc. Poi il processore imposta i bit di modalità di CPSR come Supervisor (10011), disabilita gli Interrupt ed imposta il PC a 0x08, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poiché il processore deve ritornare all'istruzione successiva a SWI, ricarica il valore di LR in PC. Infine ricarica il valore di SPSR_svc in CPSR, per tornare alla modalità precedente all'eccezione.

cond 1 1 1 1 24-bit (interpreted) immediate

31 28 27 24 23 0

r0r1r2r3r4r5r6r7r8r9

r10r11r12r13

r14 (LR)r15 (PC)

CPSR

User | Systemr0r1r2r3r4r5r6r7r8r9r10r11r12

r13_svcr14_svc (LR)

r15 (PC)

CPSR

Supervisor

SPSR_svc

(1)

(2)

0x08

(4)

F T 1 0 0 1 11

7 6 5 4 0

(3)

Page 79: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

79/102

L'eccezione Undefined

Page 80: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

80/102

instr. #1

undefined

instr. #3

instr. #4

instr. #5

instr. #6

execute

decode

fetcht

PC

PC - 4

PC - 8

Undefined instruction

r0r1r2r3r4r5r6r7r8r9

r10r11r12r13

r14 (LR)r15 (PC)

CPSR

User | System

(1)

(2)

0x04

(4)

F T 1 1 0 1 11

7 6 5 4 0

(3)

L'eccezione Undefined viene attivata quando il processore non riconosce un'istruzione (anche di coprocessore), dopo la conclusione della fase di decode; il registro r14_und (LR) viene caricato con il PC corrente, che punta all'istruzione successiva. In seguito il CPSR viene salvato in SPSR_und. Poi il processore imposta i bit di modalità di CPSR come Undefined (11011), disabilita gli Interrupt ed imposta il PC a 0x04, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poiché il processore deve ritornare all'istruzione successiva a quella Undefined, ricarica il valore di LR in PC. Infine ricarica il valore di SPSR_und in CPSR, per tornare alla modalità precedente all'eccezione.

r0r1r2r3r4r5r6r7r8r9

r10r11r12

r13_undr14_und (LR)

r15 (PC)

CPSR

Undefined

SPSR_und

Page 81: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

81/102

L'eccezione IRQ

N.B. : più periferiche possono essere collegate a IRQ e messe in priorità mediante il VIC 190

Page 82: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

82/102

IRQ

r0r1r2r3r4r5r6r7r8r9r10r11r12r13

r14 (LR)r15 (PC)

CPSR

User | System

(1)

(2)

(4)

F T 1 0 0 1 01

7 6 5 4 0

(3)

L'eccezione IRQ viene attivata dopo la fase di execute, su richiesta di una periferica esterna; il registro r14_irq (LR) viene caricato con il PC corrente, che punta all'istruzione dopo la successiva. In seguito il CPSR viene salvato in SPSR_irq. Poi il processore imposta i bit di modalità di CPSR come IRQ (10010), disabilita gli Interrupt ed imposta il PC a 0x18, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poiché il processore deve ritornare all'istruzione successiva, ricarica il valore di LR - 4 in PC. Infine ricarica il valore di SPSR_irq in CPSR, per tornare alla modalità precedente all'eccezione. In alternativa al vettore 0x18 si può caricare l'indirizzo 0xff0, se presente il VIC PL190.

instr. #1

instr. #2

instr. #3

instr. #4

instr. #5

instr. #6

execute

decode

fetcht

PC

PC - 8

PC - 4

r0r1r2r3r4r5r6r7r8r9

r10r11r12

r13_irqr14_irq (LR)

r15 (PC)

CPSR

IRQ

SPSR_irq

0x18(con VIC PL190 0xff0)

Page 83: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

83/102

L'eccezione FIQ

N.B. : pur essendo possibile collegare più periferiche a FIQ è preferibile collegarne una sola

Page 84: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

84/102

FIQ

r0r1r2r3r4r5r6r7r8r9r10r11r12r13

r14 (LR)r15 (PC)

CPSR

User | System

(1)

(2)

(4)

1 T 1 0 0 0 11

7 6 5 4 0

(3)

L'eccezione FIQ viene attivata dopo la fase di execute, su richiesta di una periferica esterna; il registro r14_fiq (LR) viene caricato con il PC corrente, che punta all'istruzione dopo la successiva. In seguito il CPSR viene salvato in SPSR_fiq. Poi il processore imposta i bit di modalità di CPSR come FIQ (10001), disabilita gli Interrupt, i Fast Interrupt ed imposta il PC a 0x1C, vettore di gestione dell'eccezione. In questo caso la routine di gestione potrebbe cominciare direttamente a questo indirizzo. Al termine della routine di gestione dell'eccezione, poiché il processore deve ritornare all'istruzione successiva, ricarica il valore di LR - 4 in PC. Infine ricarica il valore di SPSR_fiq in CPSR, per tornare alla modalità precedente all'eccezione.

instr. #1

instr. #2

instr. #3

instr. #4

instr. #5

instr. #6

execute

decode

fetcht

PC

PC - 8

PC - 4

0x1C

r0r1r2r3r4r5r6r7

r8_fiqr9_fiqr10_fiqr11_fiqr12_fiqr13_fiq

r14_fiq (LR)r15 (PC)

CPSR

FIQ

SPSR_fiq

Page 85: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

85/102

L'eccezione Abort

N.B. : gestisce sia Data Abort che Prefetch Abort

Page 86: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

86/102

abort

instr. #2

instr. #3

instr. #4

instr. #5

instr. #6

execute

decode

fetcht

PC

PC - 4

PC - 8

Data abort

r0r1r2r3r4r5r6r7r8r9r10r11r12r13

r14 (LR)r15 (PC)

CPSR

User | System

(1)

(2)

(4)

0 T 1 0 1 1 11

7 6 5 4 0

(3)

0x10

L'eccezione Data Abort viene attivata dopo la fase di execute, a seguito di un errore nell'accesso a un dato in memoria; il registro r14_abt (LR) viene caricato con il PC corrente, che punta all'istruzione dopo la successiva. In seguito il CPSR viene salvato in SPSR_abt. Poi il processore imposta i bit di modalità di CPSR come Abort (10111), disabilita gli Interrupt ed imposta il PC a 0x10, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poiché il processore deve ripetere l'istruzione abortita, ricarica il valore di LR - 8 in PC. Infine ricarica il valore di SPSR_abt in CPSR, per tornare alla modalità precedente all'eccezione.

r0r1r2r3r4r5r6r7r8r9

r10r11r12

r13_abtr14_abt (LR)

r15 (PC)

CPSR

Abort

SPSR_abt

Page 87: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

87/102

instr. #1

instr. #2

instr. #3

instr. #4

instr. #5

instr. #6

execute

decode

fetcht

PC

PC - 4

PC - 8

Prefetch abort

r0r1r2r3r4r5r6r7r8r9r10r11r12r13

r14 (LR)r15 (PC)

CPSR

User | System

(1)

(2)

(4)

0 T 1 0 1 1 11

7 6 5 4 0

(3)

0x0C

r0r1r2r3r4r5r6r7r8r9

r10r11r12

r13_abtr14_abt (LR)

r15 (PC)

CPSR

Abort

SPSR_abt

L'eccezione Prefetch Abort viene attivata dopo la fase di decode, a seguito di un errore durante il caricamento di un'istruzione; il registro r14_abt (LR) viene caricato con il PC corrente, che punta all'istruzione successiva. In seguito il CPSR viene salvato in SPSR_abt. Poi il processore imposta i bit di modalità di CPSR come Abort (10111), disabilita gli Interrupt ed imposta il PC a 0x0C, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poiché il processore deve ripetere l'istruzione abortita, ricarica il valore di LR - 4 in PC. Infine ricarica il valore di SPSR_abt in CPSR, per tornare alla modalità precedente all'eccezione.

Page 88: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

88/102

Vettori di eccezioni e livelli di priorità

Copyright © 2001 ARM Limited

Page 89: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

89/102

Copyright © 2005 ARM Limited

5.25 Declaring Attributes of FunctionsIn GNU C, you declare certain things about functions called in your program which helpthe compiler optimize function calls and check your code more carefully.The keyword __attribute__ allows you to specify special attributes when makinga declaration. This keyword is followed by an attribute specification inside doubleparentheses.

interruptUse this attribute on the ARM, AVR, C4x, CRX, M32C, M32R/D, MS1, andXstormy16 ports to indicate that the specified function is an interrupt handler.The compiler will generate function entry and exit sequences suitable for use inan interrupt handler when this attribute is present.

Note, for the ARM, you can specify the kind of interrupt to be handled byadding an optional parameter to the interrupt attribute like this:void f () __attribute__ ((interrupt ("IRQ")));Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF

Tratto da Using the GNU Compiler Collection for gcc version 4.2.2 di Richard M. Stallman and the GCC Developer Community

Page 90: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

90/102

0X0000001C LDR PC, FIQ_Addr

Eccezione sollevata da una periferica di tipo FIQ

FIQ

{

(...)

0X00000000 LDR PC, Reset_Addr0X00000004 LDR PC, Undef_Addr0X00000008 LDR PC, SWI_Addr0X0000000C LDR PC, Pabort_Addr0X00000010 LDR PC, Dabort_Addr0X00000014NOP0X00000018 LDR PC, [PC,#-0xFF0]

void handlerFIQ(void)

}

(...)

(...)a++;c = a / 2;

Page 91: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

91/102

0X0000001C LDR PC, FIQ_Addr

Eccezione sollevata da una periferica di tipo IRQ non vettorizzata

IRQ

{

(...)

0X00000000 LDR PC, Reset_Addr0X00000004 LDR PC, Undef_Addr0X00000008 LDR PC, SWI_Addr0X0000000C LDR PC, Pabort_Addr0X00000010 LDR PC, Dabort_Addr0X00000014NOP0X00000018 LDR PC, [PC,#-0xFF0]

void handlerIRQ(void)

}

(...)

(...)a++;c = a / 2;

VICDefVectAddr

VICVectAddr

VIC PL 190

Page 92: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

92/102

0X0000001C LDR PC, FIQ_Addr

Eccezione sollevata da una periferica di tipo IRQ vettorizzata

IRQ#3

{

(...)

0X00000000 LDR PC, Reset_Addr0X00000004 LDR PC, Undef_Addr0X00000008 LDR PC, SWI_Addr0X0000000C LDR PC, Pabort_Addr0X00000010 LDR PC, Dabort_Addr0X00000014NOP0X00000018 LDR PC, [PC,#-0xFF0]

void handlerIRQ#3(void)

}

(...)

(...)a++;c = a / 2;

VICVectAddr

VIC PL 190

VICVectAddr1

VICVectAddr2VICVectAddr3

VICVectAddr4

VICVectAddr5

VICVectAddr6VICVectAddr7VICVectAddr8VICVectAddr9VICVectAddr10VICVectAddr11VICVectAddr12VICVectAddr13VICVectAddr14

VICVectAddr0

VICVectAddr14

Page 93: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

93/102

0X0000001C LDR PC, FIQ_Addr

Eccezione sollevata da una periferica di tipo IRQ senza l'uso del VIC PL190

IRQ

{

(...)

0X00000000 LDR PC, Reset_Addr0X00000004 LDR PC, Undef_Addr0X00000008 LDR PC, SWI_Addr0X0000000C LDR PC, Pabort_Addr0X00000010 LDR PC, Dabort_Addr0X00000014NOP0X00000018 LDR PC, IRQ_Addr

void handlerIRQ(void)

}

(...)

(...)a++;c = a / 2;

Page 94: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

94/102

L i t t l e - a n d b i g - e n d i a n m e m o r y o r g a n i z a t i o n s

h a l f - w o r d 4

w o r d 1 6

0123

4567

891 01 1

b y t e 0

b y t e

1 21 31 41 5

1 61 71 81 9

2 02 12 22 3

b y t e 1b y t e 2

h a l f - w o r d 1 4

b y t e 3

b y t e 6 h a l f - w o r d 6

w o r d 1 6

3210

7654

1 11 098

b y t e 3

b y t e

1 51 41 31 2

1 91 81 71 6

2 32 22 12 0

b y t e 2b y t e 1

h a l f - w o r d 1 2

b y t e 0

b y t e 5 a d d r e s sa d d r e s s

( a ) L i t t l e - e n d i a n m e m o r y ( b ) B i g - e n d i a n m e m o r yo r g a n i z a t i o no r g a n i z a t i o n

b i t 3 1 b i t 0 b i t 3 1 b i t 0

h a l f - w o r d 1 2 h a l f - w o r d 1 4

w o r d 8 w o r d 8

© 2000 Addison Wesley

Page 95: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

95/102

T h e s t a n d a r d A R M C p r o g r a m a d d r e s s s p a c e m o d e l

c o d e

s t a t i c d a t a

h e a p

s t a c k

u n u s e d

a p p l i c a t i o n l o a d a d d r e s s

t o p o f a p p l i c a t i o n

t o p o f h e a p

t o p o f m e m o r y

s t a c k p o i n t e r ( s p )

s t a c k l i m i t ( s l )

s t a c k l o w - w a t e r m a r k

a p p l i c a t i o n ’ s i m a g e

© 2000 Addison Wesley

Page 96: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

96/102

t1

t2

t3

t4

t5

t6

t7

stacksize

time

Comportamento dello stackmain(){

.. /* t1 */func1();.. /* t5 */func2();.. /* t7 */

} /* end of main */

func1(){

.. /* t2 */func2();.. /* t4 */

} /* end of func1 */

func2(){

.. /* t3, t6 */

} /* end of func2 */© 2000 Addison Wesley

Page 97: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

97/102

A typical AMBA-based system

externalbus

interface

ARMcore/CPU

on-chipRAM

bridge

APB

AHB or ASB

test i/f ctrl

DMAcontroller

parallel i/f

timer

UART

AMBA: Advanced Microcontroller Bus Architecture

ASB: Advanced System Bus

AHB: Advanced High-performance Bus

APB: Advanced Peripheral Bus

© 2000 Addison Wesley

Page 98: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

98/102

Tipico sistema di debug

Copyright © 2001 ARM Limited

Page 99: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

99/102

core

logic

TAPcontroller

device ID reg

bypass reg

instruction reg

in

out

I/O

enable

in enable

TDI

TMS

TCK

TRST

TDO

Organizzazione JTAG boundary scan

© 2000 Addison Wesley

Page 100: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

100/102

JTAG TAPcontroller

Embedded

processorcore

TCK TMSTRST TDI TDO

D[31:0]

A[31:0]

opc, r/w,mreq, trans,mas[1:0]

othersignals

scan chain 0

scan chain 2

scan chain 1

extern0extern1 ICE

bussplitter

Din[31:0]

Dout[31:0]

Organizzazione ARM7TDMI

© 2000 Addison Wesley

Page 101: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

101/102

Process 0.35 um Transistors 74,209 MIPS 60 Metal layers 3 Core area 2.1 mm

2 Power 87 mW

Vdd 3.3 V Clock 0 to 66 MHz MIPS/W 690

Caratteristiche ARM7TDMI

Process 0.25 um Transistors 110,000 MIPS 220 Metal layers 3 Core area 2.1 mm

2 Power 150 mW

Vdd 2.5 V Clock 0 to 200 MHz MIPS/W 1500

Caratteristiche ARM9TDMI

© 2000 Addison Wesley

Page 102: Corso ARM

Architettura ARM Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

S2DEL – Solid State and Diamond Electronics Lab. ROMATRE

Università degli Studi

102/102

ARM7TDMI and ARM9TDMI pipeline

comparisonsinstruction

fetch

instructionfetch

Thumbdecompress

ARMdecode

regread

regwriteshift/ALU

regwriteshift/ALU

r. read

decode

data memoryaccess

Fetch Decode Execute

Memory WriteFetch Decode Execute

ARM9TDMI:

ARM7TDMI:

© 2000 Addison Wesley