ARM Architettura Corso introduttivo di progettazione di sistemi embedded - ssalvatori
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Corso introduttivo di progettazione di sistemi embedded Architettura ARM prof. Stefano Salvatori Eccetto dove diversamente specificato, i contenuti di questo documento sono rilasciati sotto Licenza Creative Commons Attribuzione 3.0 Italia. S. Salvatori – (1)
Sommario ● Premessa ● Architettura ARM ● Programmer's model (ARM7) ● Sistemi di sviluppo S. Salvatori – (2)
Sommario ● Premessa ● Architettura ARM ● Programmer's model (ARM7) ● Sistemi di sviluppo S. Salvatori – (3)
Breve storia di ARM anni ’80, Università di Berkeley e Stanford (CA- USA): nasce il concetto di RISC, Reduced Instruction Set Computer. RISC I, sviluppato in un anno da studenti della Berkeley anni ’80, Acorn Computer Ltd (Cambridge, UK) • forte posizione nel mercato britannico (microcomputer BBC, basato sul 6502). Il punto di forza del 6502 era la velocità di risposta agli interrupt: •migliorare la risposta a interrupt, senza trovare soluzione con i uP CISC disponibili; •la Acorn decide allora di sviluppare un proprio uP pur non avendo la sufficiente forza lavoro e la competenza su progettazione ASIC; •la soluzione RISC I apparve la soluzione vincente: •la semplice architettura del RISC supera i limiti progettuali; •la semplicità, inoltre, soddisfa il vincolo di velocità di risposta agli interrupt. 1983, Acorn: nasce il processore ARM, Acorn RISC Machine 1985: l’ARM diventa il componente centrale della produzione Acorn 1990: nasce la ARM Ltd, Advanced RISC Machine, come società autonoma. Vende IP (fabless) 2008: oltre 1010 uP ARM sono stati consegnati agli oltre 200 partner della ARM Ltd. S. Salvatori – (4)
Sommario ● Premessa ● Architettura ARM ● Programmer's model (ARM7) ● Sistemi di sviluppo S. Salvatori – (10)
Architettura di ARM Elevato Elevatonumero numerodi diregisti registi ••31 31registri registriinterni interni ••registri registridedicati dedicatialalmodo modo di funzionamento di funzionamento Facciamo riferimento Architettura ArchitetturaLOAD/STORE LOAD/STORE principalmente ••operazioni operazionisui suidati dati all'ARM7TDMI accedono solo al accedono solo al contenuto contenutodi diregistri registri Istruzioni Istruzioniaalunghezza lunghezzafissa fissa (3-address) (3-address)susu32 32bit bit ••laladecodifica decodificaèèsemplificata semplificata ••uniformità uniformitàdei deicampi campi Modi Modidi diindirizzamento indirizzamentosemplificati semplificati ••gli gliindirizzi indirizzidi diload loadeestore storesono sono determinati dal contenuto di registri determinati dal contenuto di registri eedi dicampi campinell’istruzione nell’istruzionestessa stessa S. Salvatori – (11)
Alcune novità di ARM Controllo Controllo sia sia di di ALU ALU che che shifter shifter ••ogni ogni istruzione istruzione può può utilizzare utilizzare ALU ALU ee shifter shifter Auto-decrement Auto-decrement ee auto-increment auto-increment ••modi modi di di indirizzamento indirizzamento automaticamente automaticamente aggiornati aggiornati ••loop loop ottimizzati ottimizzati Esecuzione Esecuzione condizionata condizionata ••ogni ogni istruzione istruzione èè eseguita eseguita in in base base aa una una condizione condizione ••massimizzato massimizzato ilil throughput throughput LOAD/STORE LOAD/STORE multipli multipli ••massimizzato massimizzato ilil throughput throughput S. Salvatori – (12)
Sommario ● Premessa ● Architettura ARM ● Programmer's model (ARM7) ● Sistemi di sviluppo S. Salvatori – (13)
Programmer's model r0 usable in user mode r1 r2 r3 system modes only r4 r5 r6 r7 r8_fiq r8 r9 r9_fiq r10_fiq r10 r1 1 r1 1_fiq r12_fiq r13_irq r13_und r12 r13_abt r13_fiq r13_svc r14_irq r14_und r13 r14_svc r14_abt r14 r14_fiq r15 (PC) SPSR_und SPSR_abt SPSR_irq CPSR SPSR_fiq SPSR_svc fiq svc abort irq undefined user mode mode mode mode mode mode S. Salvatori – (14)
Program status register S. Salvatori – (15)
Memory organization Lo stato del processore è determinato oltre che dai registri, anche dalla memoria. L’ARM indirizza 232 byte bit 31 bit 0 l’organizzazione può essere: 23 22 21 20 • byte (8 bit) 19 18 17 16 • half-word (16 bit) 15 word16 14 13 12 • word (32 bit) half-word14 half-word12 11 10 9 8 word8 7 6 5 4 byte6 half-word4 L’allineamento è su gruppi di byte: 3 2 1 0 byte byte3 byte2 byte1 byte0 address • word 4 byte (A00 = 0 e A01 = 0) • half-word : 2 byte (A00 = 0, iniziando su indirizzi pari di byte) S. Salvatori – (16)
Architettura di tipo load&store ● Come i RISC, le istruzioni di elaborazione nell’ARM lavorano solo su registri; ● Le uniche operazioni in memoria sono: ● copia del contenuto di una locazione in un registro (load); ● copia del contenuto di un registro in una locazione di memoria (store) ● Le categorie di istruzioni per l’ARM sono: ● Data processing (solo su registri) ● Data transfer ● memoria -> registro ; registro -> memoria ● scambio : registro memoria ● Control flow ● branch ● branch with link (subroutine) ● trapping (supervisor) S. Salvatori – (17)
Modo supervisore ● L’ARM consente di lavorare in modalità protetta di supervisore. ● In questo modo si può fare in modo che l'utente non abbia privilegi di supervisore: ● previene che il codice dell'utente possa compiere operazioni illegali ● Le funzioni di sistema sono accessibili all'utente con chiamate specifiche a supervisore (p.es accesso a periferiche hardware) ● A livello user, il programmatore lavora con i dati del proprio programma, mentre chiede al sistema operativo il trattamento dei dati verso l’esterno del programma stesso. S. Salvatori – (18)
Tipologia set di istruzioni ● Load/store ● 3-address: 2 operandi + risultato ● Esecuzione condizionata (ogni istruzione) ● Load/store su registri multipli ● ALU+shift per la singola istruzione in un ciclo di clock ● open instruction set : nuove istruzioni, nuovi registri (es. coprocessore) ● Set compresso a 16 bit in modo Thumb S. Salvatori – (19)
Note su I/O ed eccezioni S. Salvatori – (20)
I/O ed eccezioni Durante l'esecuzione normale di un program- ma, il uP esegue le istruzioni una dopo l'altra (fetch-decode- execute) Le eccezioni sono eventi anomali che prevedono reazioni particolari del processore per gestire la nuova situazione. S. Salvatori – (21)
I/O ed eccezioni NMI La gestione dell'eccezione prevede l'esecuzione di un codice dedicato, denominato Routine di Servizio dell'Eccezione S. Salvatori – (22)
I/O ed eccezioni ● Memory mapped I/O ● Periferica: IRQ o FIQ ● Eccezioni • interrupt • trap • supervisor call ● Manipolazione • PC r14_exc ; CPSR SPSR_exc • modo: exc • PC ← 00..1C (dipendente dall’eccezione) 16 • … gestione … • ritorno: PC ← r14_exc ; CPSR ← SPSR_exc S. Salvatori – (23)
Modi di funzionamento USER USR ● USR • esecuzione normale del programma FIQ FIQ ● FIQ • trasferimenti a elevata velocità IRQ IRQ ● IRQ • gestione interrupt (general-purpose) ● Supervisor SVC SVC • modo protetto per sistema operativo ● Abort ABT ABT • implementare memoria virtuale e/o protezione ● Undefined UND UND • emulazione software di coprocessori hardware ● System SYS SYS • eseguire task privilegiati del sistema operativo S. Salvatori – (24)
Registri di uso generale e PC: mod. ARM exception modes ( 31+6 )x32-bit circa 1 kb S. Salvatori – (25)
Registri di uso generale e PC: mod. Thumb exception modes ( 21+6 )x16-bit S. Salvatori – (26)
Relazione reg. ARM ↔ Thumb S. Salvatori – (27)
Sommario ● Premessa ● Architettura ARM ● Programmer's model (ARM7) ● Sistemi di sviluppo S. Salvatori – (28)
Sistemi di sviluppo ARM o terze parti hanno sviluppato diversi applicativi utili al lavoro di progettazione su ARM Poiché ARM trova largo impiego in sistemi embedded, spesso ci si riferisce a software di tipo cross-develpment: il sistema di sviluppo “gira” su architetture differenti da quelle stesse del sistema embedded a cui è destinato il codice “finale” • PC in ambiente Windows • workstation in ambiente LINUX S. Salvatori – (29)
Cross-development toolkit Struttura di un cross-development tool- chain: S. Salvatori – (30)
Schede di sviluppo Lo sviluppo del progetto prevede l'interfacciamento verso un hardware reale Debugger • interfaccia seriale • JTAG S. Salvatori – (31)
Schede di sviluppo Sezione software: ● IDE (Integrated Development Environment) ● editor ● builder ● debugger S. Salvatori – (32)
Schede di sviluppo Sistemi di sviluppo: ● entry level ● kit di valutazione costo ● development boards ● soluzioni di tipo professionale S. Salvatori – (33)
Schede di sviluppo Sistemi di sviluppo software: ● proprietario ● Keil ● Hitex ● ... ● libero ● gcc - gdb S. Salvatori – (34)
Perché ARM? oggi x86 embedded PC S. Salvatori – (35)
Riferimenti ● S. Furber, “ARM, System-on-chip Architecture”, 2nd ed. , cap. 2 ● Storia dell’ARM: www.arm.com/aboutarm/milestones.html ● Caratteristiche dell’ARM: ARM7TDMI-S, Technical Reference Manual, rev. r4p3, 2001, www.arm.com ● ARM, Architecture Reference Manual, D. Seal ed., Addison- Wesley, 2001 S. Salvatori – (36)
Prossimamente ● Organizzazione hardware del processore ARM Domande stefano.salvatori@uniroma3.it S. Salvatori – (37)
I processori ARM S. Salvatori – (38)
I processori ARM S. Salvatori – (39)
Cross-development toolkit File sorgente in C o assembly sono compilate in: • ARM Object Format aof C source assembler .aof S. Salvatori – (40)
Cross-development toolkit Il compilatore C: • Conforme allo standard ANSI per C • ha il supporto di librerie C source C libraries asm source standard • può produrre codice assembly C compiler assembler ottimizzato (anche Thumb) .aof S. Salvatori – (41)
Cross-development toolkit ARM assembler • produce codice oggetto che può essere legato a ciò che il assembler compilatore C produce • il codice sorgente assembly è prossimo a quello macchina dell’ARM con istruzioni tradotte principalmente in singole istruzioni ARM (o Thumb) S. Salvatori – (42)
Cross-development toolkit Il programma eseguibile è creato dal linker partendo dai file oggetto: • ARM Image Format aif • riferimenti simbolici tra file oggetto .aof • estrazione di file oggetto da object routine di libreria libraries linker • incluse tabelle di debug .aif debug (anche di tipo simbolico → si osserva lo stato di variabili anziché registri) • genera file oggetto di libreria per futuri programmi S. Salvatori – (43)
Cross-development toolkit il file immagine può anche contenere le tabelle per il debug richieste da: • ARM Symbolic Debugger, ARMsd • il sistema deve avere l’interfaccia (seriale, JTAG) linker utile al debug .aif debug • l’eseguibile è caricato nell’hw breakpoints ARMsd watchpoints S. Salvatori – (44)
Cross-development toolkit Il debugger ARMsd è in grado di caricare, eseguire e fare il debug di programmi su hardware o su software di simulazione: • ARM development board linker • ARM emulator .aif debug instruction-accurate cycle-accurate ARMsd system model timing-accurate development ARMulator board S. Salvatori – (45)
Puoi anche leggere