Corso ARM

of 102/102
Architettura ARM Microprocessori e Microcontrollori Corso di progettazione su SoC ARM S 2 DEL – Solid State and Diamond Electronics Lab. ROMA TRE Università degli Studi 1/102 Microprocessori e Microcontrollori Corso di progettazione su Corso di progettazione su SoC SoC ARM ARM Prof. N. Masarone Lab.: St. 132 (S 2 DEL – Solid State and Diamond Electronics Lab.) e.mail: [email protected] Architettura ARM
  • date post

    29-Aug-2014
  • Category

    Documents

  • view

    269
  • download

    5

Embed Size (px)

description

Microprocessori e microcontrolloriCorso di progettazione su SoC ARM

Transcript of Corso ARM

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

1/102

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM Prof. N. Masarone Lab.: St. 132 (S2DEL Solid State and Diamond Electronics Lab.) e.mail: [email protected]

Architettura ARM

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

2/102

Sistema desktopHardware Software

Soluzione del problema

Hardware

Firmware

Sistema embedded

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

3/102

Identificazione dell'hardware necessario

C

DSP FPGA SBC

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

4/102

Esempio di sistema misto analogico-digitale per applicazioni audio elaborazionemain() { ...

conversione A/D

conversione D/A 101101...

A/D

011001...

P

D/A

101101...

registrazioneROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

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.htmlS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM5V Technologies Actel Corporation Alchip Technologies, Inc. Altera Corporation Analog Devices Inc Anyka Technologies Corporation Atmel Avago Technologies Broadcom Corporation Celestial Semiconductor, Ltd. Chipnuts Technology (Shanghai) Inc. ChipX Cirrus Logic Conexant Datang Microelectronics Technology Co., LTD. eASIC Energy Micro AS eSilicon Corporation Freescale Semiconductor Fujitsu Microelectronics America, Inc. GENS Logic Co., Ltd. HiSilicon Technologies Co., Ltd. INDILINX Intel Corp International Business Machines ISINE INC. Kawasaki Microelectronics Luminary Micro, Inc ARM Ltd

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

6/102

Partners ARM Ltd.

Marvell Semiconductor, Inc. Micronas GmbH MobilEye Vision Technologies Ltd NEC Electronics (Europe) GmbH NeoMagic Corporation NVIDIA NXP Oberthur Card Systems Oki Electric Industry Co.,Ltd. ON Semiconductor (Formerly AMI Semiconductor) Open-Silicon Oxford Semiconductor Pixim, Inc. Samsung Electronics Co., Ltd Shanghai Huahong Integrated Circuit Co., Ltd. Shanghai Jade Technologies Co, Ltd. Shanghai Silicon IP Technologies Co.,Ltd. Shenzhen ZTE IC Design Co.Ltd Spansion Inc Spreadtrum Communications Inc. STEPMIND STMicroelectronics Texas Instruments Toshiba America Electronic Components Winbond Electronics Corporation Xi'an HuaXun Microelectronics Inc. Zoran CorporationROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

7/102

ARM LtdROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARMNintendo DS Lite ARM Processor: ARM 7, ARM 9

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

8/102

Sony PlayStation Portable - PSP ARM Processor: ARM 9

Sony Playstation 3 (60GB) ARM Processor: ARM 9E

Sharp Aquos LCD TV ARM Processor: ARM 7

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

ARM Ltd

Kodak EASYSHARE Z1275 Zoom Digital Camera ARM Processor: ARM926EJ-SROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

9/102

Apple iPod Nano ARM Processor: Dual ARM7TDMI

Apple iPhone ARM Processor: ARM1176JZF-S ARM7TDMI-S ARM926EJ-S ARM 9 Nokia N70 3G Phone ARM Processor: ARM9

Tom Tom Go 300 GPS Portable Navigation system ARM Processor: ARM920T

Hewlett Packard iPaq 6320 PDA ARM Ltd ARM Processor: ARM925ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

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 LtdROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

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 LtdROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

12/102

Schema di computer con programma memorizzatoFF..FF16 instructions

registers

address

data

processor instructions and data memory 00..0016

2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

13/102

Il set di istruzioni MU0

4 bits opc ode

12 bits S

Instruction Opcode LDA S STO S ADD S SUB S JMP S JGE S JNE S STP 0000 0001 0010 0011 0100 0101 0110 0111

Effect ACC := mem16[S] mem16[S] := ACC ACC := ACC + mem16[S] ACC := ACC - mem16[S] PC := S if ACC >= 0 PC := S if ACC !=0 PC := S stop

2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

14/102

Formato indirizzi delle istruzioni

f bits n bits func tion op 1 addr .

n bits op 2 addr .

n bits n bits dest. addr next_i addr . .

istruzione a 4 indirizzi

f bits n bits function op 1 addr .f bits n bits func tion op 1 addr .

n bits op 2 addr .n bits dest. addr .

n bits dest. addr .

ARM Mode

istruzione a 3 indirizzi

Thumb Mode

istruzione a 2 indirizzi istruzione a 1 indirizzo

f bits n bits func tion op 1 addr .f bits func tion 2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab.

istruzione a 0 indirizzi

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

15/102

Uso dinamico tipico delle istruzioni

Instruction type Data movement Control flow Arithmetic operations Comparisons Logical operations Other

Dynamic usage 43% 23% 15% 13% 5% 1%

2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

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.

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.

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.

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

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 16-bit mem Con memoria a 16-bit il codice Thumb risulta 45% pi veloce del codice ARM 32-bit mem Con memoria a 32-bit il codice ARM risulta 40% pi veloce del codice Thumb

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

18/102

Modi di funzionamento del processore ARM

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

19/102

Registri generali e Program Counter nello stato ARMPriviliged modes Exception modes User | Systemr0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC)

FIQr0 r1 r2 r3 r4 r5 r6 r7 r8_fiq r9_fiq r10_fiq r11_fiq r12_fiq r13_fiq r14_fiq (LR) r15 (PC)

Supervisorr0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_svc r14_svc (LR) r15 (PC)

Abortr0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_abt r14_abt (LR) r15 (PC)

IRQr0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_irq r14_irq (LR) r15 (PC)

Undefinedr0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_und r14_und (LR) r15 (PC)

program status register nello stato ARMCPSR CPSR SPSR_fiq CPSR SPSR_svc CPSR SPSR_abt CPSR SPSR_irq CPSR SPSR_und

= banked registerS2DEL Solid State and Diamond Electronics Lab.

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

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

20/102

Registri generali e Program Counter nello stato ThumbPriviliged modes Exception modes User | Systemr0 r1 r2 r3 r4 r5 r6 r7 SP LR PC

FIQr0 r1 r2 r3 r4 r5 r6 r7 SP_fiq LR_fiq PC

Supervisorr0 r1 r2 r3 r4 r5 r6 r7 SP_svc LR_svc PC

Abortr0 r1 r2 r3 r4 r5 r6 r7 SP_abt LR_abt PC

IRQr0 r1 r2 r3 r4 r5 r6 r7 SP_irq LR_irq PC

Undefinedr0 r1 r2 r3 r4 r5 r6 r7 SP_und LR_und PC

Program status register nello stato ThumbCPSR CPSR SPSR_fiq CPSR SPSR_svc CPSR SPSR_abt CPSR SPSR_irq CPSR SPSR_und

= banked register

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

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

21/102

Relazione tra registri dello stato thumb e registri dello stato ARMThumb stater0 r1 r2 r3 r4 r5 r6 r7

ARM stater0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 Stack pointer (r13) Link register (r14) Program counter (r15) Current program status register (CPSR) Saved program status register (SPSR)

Stack pointer (r13) Link register (r14) Program counter (r15) Current program status register (CPSR) Saved program status register (SPSR)

Copyright 2001 ARM LimitedROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

22/102

Modi e registri visibili nello stato Thumb e ARM

Copyright 2001 ARM Limited

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

23/102

CPU08 opcode map (CISC) Freescale Semiconductor, Inc.

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

24/102

ARM instruction set summary (RISC)

Copyright 2001 ARM LimitedS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

25/102

condition code flags 31 30 29 28 27 26 25 24 23

Program status register (CPSR - SPSR_exc)20 19 16 15 10 9 8 7

control bits 6 5 4 0

N Z C V Q Res J Reserved GE[3:0]oVerflow Carry or borrow or extend Zero Negative or less than

Reserved

E A I F T

M[4:0]

IRQ disable FIQ disable Thumb/ARM Mode User FIQ IRQ Supervisor Abort Undefined System M[4:0] 10000 10001 10010 10011 10111 11011 11111

= reserved in ARM7/TDMI-S core

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

26/102

Istruzioni di spostamento

Copyright 2001 ARM LimitedS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

27/102

modifica di CPSR (modo di funzionamento): MRS r0, CPSR BIC r0, r0, #0x1F ORR r0, r0, #0x13 MSR CPSR_c, r0 modifica di CPSR (flag di condizione): MRS r0, CPSR BIC r0, r0, #0xF0000000 MSR CPSR_f, r0 modifica di CPSR (disabilita IRQ): MRS r0, CPSR BIC r0, r0, #0x80 MSR CPSR_c, r0 modifica di CPSR (entra in modalit FIQ): MRS r0, CPSR BIC r0, r0, #0x1F ORR r0, r0, #0x11 MSR CPSR_c, r0

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

carica CPSR in r0 cancella il modo corrente.. .. ed entra in Supervisor aggiorna CPSR ora in stato SVC carica il valore di CPSR in r0 azzera le flag N, Z, C, V aggiorna le flag in CPSR carica il valore di CPSR in r0 disabilita INT aggiorna lo stato in CPSR ora in stato INT carica il valore di CPSR in r0 azzera i bit di modalit imposta i bit come FIQ aggiorna la modalit in CPSR ora in stato FIQ ARM Architecture Reference ManualROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

28/102

Istruzioni aritmetiche

Copyright 2001 ARM Limited

ARM Architecture Reference ManualROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

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 CC BEQ 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, #3 BL TIM10 .. TIM10 MOV r0, r0, LSL #1 ; x 2 ADD r0, r0, r0, LSL #2 ; x 5 MOV 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 carry ADC r3, r3, r1; somma i pi significativi con carry ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

30/102

Operazioni di shift in ARM31 0 31 0

00000

00000

LSL #5

LSR #50 31 1 0

LSL: LSR: ASL: ASR: ROR: RRX:

Logical Shift Left (0-31) Logical Shift Right (0-32) Arithmetic Shift Left = LSL (0-31) Arithmetic Shift Right (0-32) ROtate Right (0-32) Rotate Right eXtended (1)

31 0

00000 0

11111 1

ASR #5 , positive operand31 0 C

ASR #5 , negative operand31 0

C

C

ROR #5

RRX

2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

31/102

sottrazione a 64 bit (r0, r2 LSW mentre r1, r3 MSW): SUBS r4, r0, r2 ; r4 = r0 r2 e imposta il carry SBC r5, r1, r3 ; r5 = r1 r3 + carry -1 prodotto scalare di due vettori: MOV r11, #20 MOV r10, #0 LOOP LDR r0, [r8], #4 LDR r1, [r9], #4 MLA r10, r0, r1, r10 SUBS r11, r11, #1 BNE LOOP .. esempi di moltiplicazioni: MUL r4, r2, r1 MULS r4, r2, r1 MLA r7, r8, r9, r3 SMULL r4, r8, r2, r3 UMULL r6, r8, r0, r1 UMLAL r5, r8, r0, r1

; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

inizializza il contatore del ciclo inizializza il totale carica il primo elemento.. .. ed il secondo r10 = r0 x r1 + r10 decrementa il contatore del ciclo se r11 0 salta a LOOP .. .. altrimenti procede r4 = r2 x r1 r4 = r2 x r1, set flag N e Z r7 = r8 x r9 + r3 r4 = bit 0 - 31 di r2 x r3 r8 = bit 32 - 63 di r2 x r3 r8, r6 = r0 x r1 r8, r5 = r0 x r1 + r8, r5 ARM Architecture Reference ManualROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

32/102

Istruzioni logiche

Copyright 2001 ARM LimitedS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

33/102

esempi di operazioni Booleane: AND r0, r1, ORR r0, r1, EOR r0, r1, BIC r0, r1,

r2 r2 r2 r2

; ; ; ;

r0 r0 r0 r0

= = = =

r1 r1 r1 r1

and r2 or r2 xor r2 and not r2

esempi di operazioni di confronto: CMP r1, r2 CMN r1, r2 TST r1, r2 TEQ r1, r2

; ; ; ;

imposta imposta imposta imposta

cc cc cc cc

su su su su

r1 r1 r1 r1

- r2 + r2 and r2 xor r2

Copyright 2001 ARM LimitedS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

34/102

Istruzioni di salto

31

28 27

25 24 23

0

B, BL BX

cond31

101 L28 27

24-bit signed word offset6 5 4 3 0

cond

0001001011111111111100

L 1

Rn

31 PCCopyright 2001 ARM LimitedS2DEL Solid State and Diamond Electronics Lab.

1 0 Rn T 5

CPSR 0

31

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

35/102

salto incondizionato: B LABEL ; salto incondizionato.. .. LABEL .. ; .. fin qui ciclo 10: MOV r0, #10 ; inizializza il contatore del ciclo LOOP .. SUBS r0, #1 ; decrementa il contatore impostando i CC BNE LOOP ; se il contatore 0 ripete il ciclo.. .. ; .. altrimenti esce chiamata di soubroutine: BL SUB ; branch e link alla subroutine SUB .. ; punto di ritorno .. SUB .. ; punto d'ingresso della subroutine MOV PC, r14; ritorna chiamata di soubroutine condizionale: CMP r0, #5 ; se r0 < 5 BLLT SUB1 ; chiama SUB1 BLGE SUB2 ; chiama SUB2 salto incondizionato: BX r0 ; salta all'indirizzo in r0 ; entra in stato Thumb se r0[0]=1 ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

36/102

Istruzioni di lettura singola da memoria

Copyright 2001 ARM Limited

ARM Architecture Reference ManualROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

37/102

Istruzioni di scrittura singola in memoria

Copyright 2001 ARM Limited

ARM Architecture Reference ManualROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

38/102

esempi di load / store singoli: LDR r1, [r0] LDR r8, [r3, #4] LDR r12, [r13, #-4] STR r2, [r1, #0x100] LDRB r5, [r9]

; valore all'indirizzo r0 in r1 ; valore all'indirizzo r3+4 in r8 ; valore all'indirizzo r13-4 in r12 ; salva r2 all'indirizzo r1 + 0x100 ; 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+0x200 LDR r11, [r1, r2] ; valore all'indirizzo r1+r2 in r11 STRB r10, [r7, -r4] ; salva byte r10 all'indirizzo r7-r4 LDR r11, [r3, r5, LSL #2]; valore all'indirizzo r3+(r5x4) in r11 LDR r1, [r0, #4]! ; valore indirizzo r0+4 in r1, poi r0=r0+4 STRB r7, [r6, #-1]! ; salva byte r7 all'indirizzo r6-1, ; poi r6=r6-1 LDR 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 ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

39/102

esempi di load / store singoli: LDR r0, [PC, #40]

; ; LDR r0, [r1], r2 ; LDRH r1, [r0] ; LDRH r8, [r3, #2] ; LDRH r12, [r13, #-6] ; STRH r2, [r1, #0x80] ; LDRSH r5, [r9] ; LDRSB r3, [r8, #3] ; LDRSB r4, [r10, #0xC1] ; LDRH r11, [r1, r2] ; STRH r10, [r7, -r4] ; LDRSH r1, [r0, #2]! ; ; LDRSB r7, [r6, #-1]! ; ; LDRH r3, [r9], #2 ; ; STRH r2, [r5], #8 ; ;

carica in r0 PC+0x40 (=indirizzo della istruzione LDR + 8 + 0x40) valore all'indir. r1 in r0, poi r1=r1+r2 halfword ind. r0 in r1 (azzera 2 B sup.) halfword dall'indirizzo r3+2 in r8 halfword dall'indirizzo r13-6 in r12 halfword da r2 all'indirizzo r1+0x80 signed halfword dall'indirizzo r9 in r5 signed byte dall'indirizzo r8+3 in r3 signed dall'indirizzo r10+0xC1 in r4 halfword dall'indirizzo r1+r2 in r11 halfword da r10 all'indirizzo r7-r4 signed halfword dall'indirizzo r0+2 in r1, poi r0=r0+2 signed byte dall'indirizzo r6-1 in r7, poi r6=r6-1 halfword dall'indirizzo r9 in r3, poi r9=r9+2 halfword da r2 all'indirizzo r5, poi r5=r5+8 ARM Architecture Reference ManualROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

40/102

Istruzioni di lettura multipla da memoria

Copyright 2001 ARM LimitedS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

41/102

Istruzioni di scrittura multipla in memoria

Copyright 2001 ARM Limited

ARM Architecture Reference ManualROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

42/102

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

STMFD r13!, {r0-r2, r14} LDMFD r13!, {r0-r2, PC} copia di registri con uso dello stack: STMFD r13!, {r2-r9} ; LDMIA r0!, {r2-r9} ; STMIA r1, {r2-r9} ; LDMFD r13!, {r2-r9} ;

; ; ; ; ;

r0 := mem32[r1] r2 := mem32[r1+4] r5 := mem32[r1+8] salva r0-r2 e LR sullo stack ripristina dallo stack r0-r2 e il PC salva r2-r9 sullo stack carica 8 word dall'indirizzo r0 in r2-r9 salva r2-r9 all'indirizzo r1 ripristina r2-r9 dallo stack

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 ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

43/102

copia di registri con uso dello stack: STMFD r13!, {r2-r9} ; LDMIA r0!, {r2-r9} ; STMIA r1, {r2-r9} ; LDMFD r13!, {r2-r9} ;

salva r2-r9 sullo stack carica 8 word dall'indirizzo r0 in r2-r9 salva r2-r9 all'indirizzo r1 ripristina r2-r9 dallo stack memoria stack

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

registrir0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC)

libera heap area1 area2 applicazione

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

44/102

STMFD r13!, {r2-r9} registrir0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC)

; salva r2-r9 sullo stackbit 31 NN

memoriaNN 00 00 00 00 00 00 00 00 NN 0B 00 02 0F 0A 2C 2C 50 NN 01 03 03 04 25 08 0D 90

bit 0 0x0000F200 0x0000F1FC 0x0000F1F8 0x0000F1F4 0x0000F1F0 0x0000F1EC 0x0000F1E8 0x0000F1E4 0x0000F1E0

0x00005090 0x00002C0D 0x00002C08 0x00000A25 0x00000F04 0x00000203 0x00000003 0x00000B01

00 00 00 00 00 00

0x0000F200

0x0000F1E0

00 00

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

45/102

LDMIA r0!, {r2-r9}

; carica 8 word dall'indirizzo r0 in r2-r9 memoriaNN 43 FE CA 28 12 4F 76 18 NN AA 32 43 2F 43 21 E4 AC NN D4 00 23 E2 29 78 CD 02

registrir0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC) 0x10000024 0x10000000 0x0118AC02 0x5576E4CD 0xAD4F2178 0x02124329 0x23282FE2 0x16CA4323 0x24FE3200 0x1443AAD4

bit 31 NN 14 24 16 23 02 AD 0x0000F1DF 55 01

bit 0 0x10000024 0x10000020 0x1000001C 0x10000018 0x10000014 0x10000010 0x1000000C 0x10000008 0x10000000

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

46/102

STMIA r1, {r2-r9}

; salva r2-r9 all'indirizzo r1 memoriaNN 43 FE CA 28 12 4F 76 18 NN AA 32 43 2F 43 21 E4 AC NN D4 00 23 E2 29 78 CD 02

registrir0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC) 0x10000024 0x20000000 0x0118AC02 0x5576E4CD 0xAD4F2178 0x02124329 0x23282FE2 0x16CA4323 0x24FE3200 0x1443AAD4

bit 31 NN 14 24 16 23 02 AD 0x0000F1DF 55 01

bit 0 0x20000024 0x20000020 0x2000001C 0x20000018 0x20000014 0x20000010 0x2000000C 0x20000008 0x20000000

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

47/102

LDMFD r13!, {r2-r9} registrir0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC)

; ripristina r2-r9 dallo stackbit 31 NN

memoriaNN 00 00 00 00 00 00 00 00 NN 0B 00 02 0F 0A 2C 2C 50 NN 01 03 03 04 25 08 0D 90

bit 0 0x0000F200 0x0000F1FC 0x0000F1F8 0x0000F1F4 0x0000F1F0 0x0000F1EC 0x0000F1E8 0x0000F1E4 0x0000F1E0

0x00005090 0x00002C0D 0x00002C08 0x00000A25 0x00000F04 0x00000203 0x00000003 0x00000B01

00 00 00 00 00 00

0x0000F1E0

0x0000F200

00 00

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

48/102

Gestioni dello stack e relative istruzioni multipler9 r5 r1 r0101816

r9

r5 r1 r0

1018

16

r9

100c 16

r9

100c 16

1000

16

1000

16

Before Increment After Before

STMIA r9!, {r0,r1,r5}

STMIB r9!, {r0,r1,r5}

1018

16

1018

16

Decrement After

Ascending Full Empty STMIB STMFA STMIA STMEA LDMDB LDMEA LDMDA LDMFA

Descending Full Empty LDMIB LDMED LDMIA LDMFD STMDB STMFD STMDA STMED

r9

r5 r1 r0

100c 16

r9 r5 r1 r0

100c 16

r9

1000

16

r9

1000

16

STMDA r9!, {r0,r1,r5}

STMDB r9!, {r0,r1,r5}

2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

49/102

Generalit sullo stack 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 (empty ascending) SP (full ascending)

(full descending) SP (empty descending) SP

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

50/102

Istruzioni di scambio, coprocessore e SWI

Copyright 2001 ARM LimitedS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

51/102

esempi di swap: SWP r12, r10, [r9] SWPB r3, r4, [r8] SWP r1, r1, [r2]

; ; ; ; ; ; in

carica in r12 il valore all'indirizzo r9 e salva r10 nell'indirizzo r9 carica un byte in r3 dall'indirizzo r8 e salva un byte da r4 all'indirizzo r8 scambia il valore in r1 e l'indirizzo r2

esempio di SWI: SWI #0xABCDEF

; passa in modo Supervisor (privilegiato)

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

52/102

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 viceversa CMP r0, #0xFF ; verifica r0 e 0xFF (rosso) BEQ loop ; se r0=0xFF va in loop caso [r1] = 0x00 (semaforo verde) 0xFF 0x00 memoria 0x00 0xFF memoria

r0 r1

r0 r1

caso [r1] = 0xFF (semaforo rosso) 0xFF 0xFF memoria In questo caso rimane in loop fintantoch il semaforo rosso

r0 r1

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

53/102

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. memoria condivisabit 31 bit 0

0x000xNN

0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN

P1

0xNN 0xNN 0xNN

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

L'area di memoria condivisa in rosso bloccata (p.e. da P1) e pu essere liberata solo da questo.

0xFF0xNN 0xNN 0xNN

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM31 28 27

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

54/102

0

con d

A R M c o n d itio n c o d e sO p co de [3 1 :2 8 ] 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 M n em o n ic ex ten sio n EQ NE C S /H S C C /L O M I PL VS VC HI LS GE LT GT LE AL NV In te rp re ta ti o n E qua l / e quals z e ro N o t equal C a rry s e t / un s ig n e d h ig h e r o r s a m e C a rry c le a r / un s ig n e d lo w e r M in us / n eg ativ e P lus / p o s itiv e o r z e ro O v e rflo w N o o v e rflo w U n sig n ed h ig h er U n sig n ed lo w er o r sam e S ig n e d g re a ter th a n o r e qua l S ig n ed les s th an S ig n e d g re a ter th a n S ig n ed les s th an o r equal A lw ay s N e v e r (do n o t us e !) S tatus flag s tate fo r ex ecutio n Z set Z clear C set C clear N set N clear V set V clear C s et an d Z clear C clear o r Z s et N equals V N is n o t equal to V Z clear an d N equals V Z set o r N is n o t equal to V an y none

2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

55/102

B ra n c h c o n d itio n sB B B B B B B B B B B B B B B B B B B ra n c h AL EQ NE PL M I CC LO CS HS VC VS GT GE LT LE HI LS In te rp re ta tio n U n co n ditio n al A lw ay s Equal N o t equal P lus M in us C a rry c le a r Lo w er C a rry s e t H ig h er o r sam e O v e rflo w c le a r O v e rflo w s e t G re a te r th a n G re a te r o r e qua l L es s th an Less o r equal H ig h er Lo w er o r sam e N o rm a l us e s A lw a y s ta k e th is b ra n c h A lw a y s ta k e th is b ra n c h C o m p a ris o n e qua l o r z e ro re s ult C o m p a ris o n n o t e qua l o r n o n -z e ro re s ult R e s ult p o s itiv e o r z e ro R es ult m in us o r n eg ativ e A rith m e tic o p e ra tio n did n o t g iv e c a rry -o ut U n s ig n e d c o m p a ris o n g a v e lo w e r A rith m e tic o p e ra tio n g a v e c a rry -o ut U n s ig n e d c o m p a ris o n g a v e h ig h e r o r s a m e S ig n e d in te g e r o p e ra tio n ; n o o v e rflo w o c c urre d S ig n e d in te g e r o p e ra tio n ; o v e rflo w o c c urre d S ig n e d in te g e r c o m p a ris o n g a v e g re a te r th a n S ig n e d in te g e r c o m p a ris o n g a v e g re a te r o r e qua l S ig n e d in te g e r c o m p a ris o n g a v e le s s th a n S ig n e d in te g e r c o m p a ris o n g a v e le s s th a n o r e qua l U n s ig n e d c o m p a ris o n g a v e h ig h e r U n s ig n e d c o m p a ris o n g a v e lo w e r o r s a m e

2000 Addison WesleyS2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference ManualROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

56/102

Esempio di istruzione condizionata EQ 31 0 0 28 27 0 0 ARM instruction 0

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

Z 31 28 27 CPSR (Current Program Status Register) 0

ARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

57/102

Esempio: algoritmo massimo comune divisore

algoritmo con branch

algoritmo con condizioni

r1a r2bARM Architecture Reference ManualS2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e MicrocontrolloriCorso di progettazione su SoC ARM

58/102

Esempio: algoritmo di ricerca del massimo if (a > b) c=a; else c=b; // c = max (a , b)

posto che: a r0, b r1, c r2 CMP r0, r1 MOVGT r2, r0 MOVLE r2, r1 MOV r2, r0 CMP r0, r1 MOVLE r2, r1 CMP BLE MOV B ELSE MOV ENDIF .. r0, r1 ELSE r2, r0 ENDIF r2, r1 ; ; ; ; ; ; ; ; ; ; ; ; compara r0,r1 se r0>r1, r2=r0 se r0