Università degli studi di Enna Facoltà di Ingegneria Telematica Laboratorio di Elettronica Sistemi Elettronici integrati [email protected] Motivazioni 2 Elettronica dilagante • Crescita di esigenze computazionali; • Intelligenza diffusa; •Elaborazione e processamento di dati in larga scala. Basic Technologies: •Sistemi Embedded •Tecnologie di comunicazione Definizione 3 Sistema Embedded: qualsiasi dispositivo che include una logica programmabile, ma che non risulti un general purpose computer; Un sistema embedded è costituito da una parte Software ed una Hardware; Risponde, monitora e controlla l’ambiente esterno usando sensori ed attuatori. Definizione (cont’d.) 4 Da Wikipedia: An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and to meet a wide range of end-user needs. Embedded systems control many devices in common use today. CPU integrata 5 Central Processing Unit integrata nel dispositivo; L’embedded computer non è utilizzato per computazioni general purpose; Il sistema integrato si interfaccia con l’ambiente esterno, necessita di un interfacciamento analogico. Sistemi Embedded – Dove? 6 Trasporti • Automotive; • Avionica; • Treni. Sistemi Embedded – Dove? 7 Consumer • Mobile • Home Sistemi Embedded – Dove? 8 Industrial Automation Home Automation Sistemi Embedded – Esempi 9 Prodotto: Spazzolino Elettronico Microprocessore: 8bit Velocità programmabile, timer e circuito di ricarica Sistemi Embedded – Esempi 10 Qualsiasi PC, Mouse tastiera o dispositivo USB Solitamente microprocessore: 8bit Sistemi Embedded – Esempi 11 Qualsiasi Stampante Solitamente microprocessore: Intel Motorola o ARM a 32 bit RISC Sistemi Embedded – Esempi 12 Oscilloscopio Agilent Microprocessore a 64 bit OS Windows XP Sistemi Embedded – Esempi 13 BMW 745i Windows CE OS 53 – 8 bit uP 11 – 32 bit uP 7 – 16 bit uP Reti Multiple Sistemi Embedded – Esempi 14 Wireless Sensor Networks Solitamente sono caratterizzate da una collezione più o meno numerosa di dispositivi elettronici costituiti da: •Sensori; •Radio transiver; •CPU/Memory; •Power source. Caratteristiche Sistemi Embedded 15 Potrebbero prevedere funzionalità sofisticate Operazioni Real-Time; Basso costo di produzione; Basso consumo; Basso Time To Market. Funzionalità complesse 16 Spesso devono eseguire algoritmi sofisticati o multipli. • Fast Fourier Trasform; • Encoder/Decoder Audio-Video Spesso forniscono complesse interfacce utenti Operazioni Real-time 17 La computazione deve essere effettuata prima della deadline. •Hard real-Time: Missing deadline = Failure •Soft Real Time: Missing deadline = degradation Alcuni sistemi sono multi-rate: affrontano requisiti differenti in tempi differenti Specifiche non funzionali 18 Molti sistemi embedded sono dispostivi di massa che devono avere un basso costo di produzione. • Memoria limitata, potenza CPU, etc. Il consumo di potenza è un fattore critico in dispositivi alimentati a batteria. • Consumo eccessivo –> Crescita costo dell’intero sistema anche in sistemi non alimentati a batteria Team di sviluppo 19 •Solitamente progettati da un ristretto Team di sviluppatori; • Spesso occorre soddisfare stringenti deadline di sviluppo. Team di sviluppo 20 P.M. Architetti SW/HW Reference SW/HW developer Sistema Embedded: Cosa usa? 21 Che tipo di CPU? Che sistema operativo? Che linguaggio di Programmazione? Indagine di mercato di sviluppatori ingegneri appartenenti ad EETimes e Embedded System Design Magazine CPU bit- size 22 Numero di CPU 23 Perché un sistema operativo 24 Supporto per multitasking, scheduling e sincronizzazione; Supporto per un ampio range di dispositivi di I/O; Supporto per il networking; Supporto per la gestione della memoria; Supporto per display grafico; Sicurezza (accesso alle risorse) e gestione della potenza. Perché un sistema operativo (2) 25 Solitamente la licenza per OS sono di qualche dollaro per dispositivo. Sistemi Embedded semplici non necessitano di un Sistema Operativo. Ma i nuovi dispositivi diventano sempre più complessi. Uso di un sistema operativo 26 Sistemi operativi commerciali 27 Linguaggi di programmazione utilizzati 28 Memoria in SE 29 Occorre sia memoria non volatile che volatile; Il Sistema Operativo e l’applicativo memorizzati in FLASH Boot dalla Flash all’accensione; Flash molto più lento della RAM. • codice copiato nella ram interna Quindi … 30 SE si possono trovare ovunque ed in qualsiasi numero; La maggior parte dei nuovi dispositivi utilizza processori a 32 bit; Dispositivi con sistema operativo, usano un commercial OS. La famiglie di linguaggio C (C, C++, C#) è la più utilizzata per la programmazione di SE. Esigenze tecniche e di mercato 31 Le richieste di flessibilità ed integrazione hanno generato la necessità di raggruppare: •Parallelismo delle operazioni; •Numero delle variabili di controllo; •Modularità del sistema; •Affidabilità del controllo; •Flessibilità dei componenti. • Reti Logiche • Logiche programmabili • Controlli digitali e analogici RIDUZIONE DIMENSIONI, COSTI, FLESSIBILITA’, PROGRAMMABILITA’ Microprocessore 32 Il microprocessore diventa indispensabile quando il numero delle variabili da controllare diventa elevato. Comunica con l’esterno; Esegue esclusivamente operazioni logiche, aritmetiche e di controllo Elabora sia dati prodotti internamente che provenienti da dispositivi esterni; Totalmente dipendenti da elementi periferici; Non presenta elementi per la memorizzazione non volatile dei dati. Microcontrollore 33 Il microcontrollore racchiude tutte le caratteristiche del microprocessore aggiungendo le possibilità di: • Comunicazione diretta con dispositivi esterni integrando periferiche interne; • Memorizzazione di dati o programmi; • Effettuare operazioni di controllo, ricezione ed elaborazione segnali; In generale non necessitano ulteriori aggiunte di memoria RAM oltre a quella integrata. Eseguono esclusivamente le operazioni legate al firmware con il quale sono stati programmati Microcontrollore vs Microprocessore 34 Microcontrollore: Microprocessore: Microprocessore; Unità di calcolo Linee I/O; Unità di controllo Memoria Flash; Memoria istruzioni e Convertitore A/D; calcolo Timer; USART; SPI; PWM; I2C; ... Microcontrollore vs Microprocessore 35 Microcontrollore vantaggi 36 L'integrazione delle periferiche su un singolo chip porta vantaggi legati a: • Minor numero di dispositivi discreti per la realizzazione di un sistema • Dimensioni ridotte del sistema • Costi inferiori • Sistema nel complesso più affidabile • Protezione dalle copiature • Risparmio energetico • Ri-programmabilità del sistema • Comunicazione diretta con altri sistemi Microcontrollore MCU 37 I sistemi embedded a microcontrollore realizzano una logica di ottimizzazione del rapporto prezzo/prestazioni. Hanno un elevato campo di impiego che può spaziare dai più semplici oggetti di utilizzo quotidiano a complesse architetture in ambito medicale e industriale. Ha una capacità di calcolo relativamente limitata ed esegue esclusivamente il set di istruzioni definiti nel firmware. Architettura del Microcontrollore 38 I microcontrollori si distinguono tra loro per: Set di istruzioni: CISC/RISC Organizzazione della memoria: Van Neumann/Harvard Frequenza di clock Numero di dispositivi di I/O e di periferiche intergrate Consumo Numero di bit: 4/8/16/32 Prestazioni CPU 39 TCPU= Nistr * CPI * T Dove: N istr è il numero di istruzioni del programma; CPI è il numero medio di cicli di clock per istruzioni macchina; T= 1/fck è il periodo di clock. Prestazioni CPU 40 •NISTR dipende dal set di istruzioni resi disponibili dal MCU. Una CPU RISC riduce il Nistr; •CPI dipende dall’architettura. Un set di istruzioni semplici permette di eseguire istruzioni in pochi cicli di clock e di sfruttare un elevato pipeline (RISC) riducendo CPI •T = 1/fCK dipende dalla tecnologia elettronica e dall’architettura. Istruzioni complesse richiedo frequenze di clock più basse. CPU CISC 41 CISC = Complex Instruction Set Computer L’insieme di istruzioni macchina è molto vasto, e quindi si riduce il gap tra linguaggio ad alto livello e linguaggio macchina; In alcuni casi è possibile avere istruzioni ad hoc, più potenti di quelli esprimibili in linguaggio ad alto livello. Ciò aumenta la complessità del compilatore; Sono necessari più cicli di clock per completare un’istruzione; Numero di registri ridotto numero elevato di scritture in memoria; CPU RISC 42 RISC = Reduced Instruction Set Computer L’insieme di istruzioni macchina è molto piccolo, e quindi aumenta il gap tra linguaggio ad alto livello e linguaggio macchina; Le istruzioni hanno tutte lo stesso formato e la stessa lunghezza e molte son eseguite in un solo colpo di clock; Unità di controllo semplice e bassa latenza; Elevato numero di registri interni; Avere un formato unico di istruzioni agevola l’utilizzo di stadi di pipe Frequenze di clock più elevate; Numero di registri elevato numero ridotto di scritture in memoria, utilizzo registri interni PIPELINE 43 Operazioni: Instruction Fetch; Instruction decode; Data Fetch; Instruction execution Esecuzione senza pipeline 44 Esecuzione con pipeline 45 Memoria 46 Van Neumann • Adottata in microcontrollori di fascia bassa; •Svantaggi legati all’utilizzo di un’unica memoria sia per le variabili volatili che per il codice del programma; Harvard • Separazione dei bus per i dati e gli indirizzi; •Vantaggi legati all’accesso contemporaneo a codice e dati, diminuendo i tempi di esecuzione Harvard vs Van Neumann 47 Harvard Van Neumann PIC24FJ256GB108 48 PIC24FJ256GB108 49 PIC è una famiglia di circuiti integrati a semiconduttore con funzione di microcontrollore. Microchip technology non usa il termine PIC come acronimo; Il suo nome aziendale è PICmicro. Il PIC24F è un microcontrollore a 16 bit e ha a disposizione una settantina di istruzioni; L’esecuzione delle istruzioni è scandita da un segnale di clock, cioè un onda quadra a frequenza costante. PIC24FJ256GB108 50 PIN: 80; CPU: RISC; Memoria: Harvard; Program Memory: 128 kBytes; Data Memory: 16 kBytes; Timer a 16 bit: 5; Uscite PWM: 9; UART: 4; SPI: 3; I2C: 3; 10-BIT ADC: 16 PIC24FJ256GB108 periferiche 51 Porte: Periferiche di base per la comunicazione verso il mondo esterno, possono essere configurate come ingresso o uscite digitali. Alcune come ingressi analogici (Porta B); Memoria: FLASH e RAM; ADC: 16 Ingressi, risoluzione a 10 bit; Timer: usati per generare ritardi o per chiamare routine periodicamente; PWM: permette di generare un onda quadra con duty cycle variabile; Comunicazioni: permette interfacciamento per mezzo di protocolli standard, quali (I2C, UART, CAN, …) con altri dispostivi. 66 Sorgenti di interrupt; 52 Interrupt 53 Un meccanismo molto potente nella programmazione dei microcontrollori è la gestione delle interruzioni (interrupt). •In risposta ad eventi esterni, il micro sospende l’esecuzione del programma principale, esegue apposite routine di servizio, e poi ritorna all’esecuzione principale •Es. Posso programmare una periferica Timer (contatori) per generare un interrupt ogni secondo. Il micro può ad es. avere un programma principale in cui legge dati continuamente da un sensore con l’ADC e, ogni secondo grazie all’interrupt, aggiornare un display con l’indicazione dell’ora. Interrupt 54 • Al RESET il micro esegue l’istruzione contenuta alla locazione 0000H (detta reset vector); • Il RESET vector causa un salto all’entry point main 0020H, il programma inizia ad essere eseguito; • Se durante l’esecuzione si verifica un interrupt a bassa priorità il micro automaticamente salta all’indirizzo 0018H ed esegue l’istruzione ivi contenuta; • Un nuovo salto ci porta all’indirizzo 0040H dove risiede la procedura di gestione degli interrupt; • Verificando i FLAG è possibile capire quale periferica ha fatto scattare l’interruzione, per poi eseguire la routine corrispondente; • Terminata la routine di gestione il micro ritorna al punto del programma in cui era stato interrotto. Compilazione 55 Nel momento in cui si progetta un'applicazione per tali sistemi, si utilizza un ambiente di sviluppo che permette di farli comunicare con il PC, detto Host. Il Target identica la piattaforma su cui verrà eseguita l'applicazione; mentre l'host e la macchina su cui si sviluppa il programma. In generale e possibile programmare tutti i processori in un linguaggio a basso livello come l'Assembler, permettendo la massima efficienza a scapito, però, della portabilità. Infatti, ogni famiglia di processori prevede delle proprie “istruzioni macchina", cosicché il codice scritto per una famiglia di processori non può essere valido per un'altra. Il linguaggio utilizzato più versatile e il C. Fermo restando che e importante conoscere l'assembler perche delle volte occorre implementare delle funzioni obbligatoriamente in tale linguaggio. Compilazione 56 Un progetto software solitamente e costituito da uno o piu file.c e file.h; i primi sono i file sorgenti, mentre gli altri sono gli header file, vale a dire i file di intestazione. Ai fini dei processi di compilazione, queste due tipologie di file risultano identici mentre, dal punto di vista della buona pratica di programmazione, occorre usarli diversamente. Il criterio da utilizzare è quello di non inserire costrutti C che generino codice negli header file ma solo delle dichiarazioni, al contrario di quanto accade nei source file. Costruite le due tipologie di file si passa alla generazione del codice eseguendo tre principali operazioni: 1. Pre-processing Si tratta di un'operazione testuale consistente in una sostituzione letterale del codice; ad esempio la stringa #include xxx.h fa sì che il file in questione venga sostituito così com'è in quella porzione di codice; 2. Compilazione Si ha la conversione dei file xxx.c in codice macchina producendo dei file oggetto (.o); 3. Linking Partendo dai differenti file oggetto generati, li si “linka" tra di essi. Cross-Compilazione 57 Con il termine cross-compiling ci si riferisce ai flussi di processo che permettono di ottenere un eseguibile, per mezzo dei tre passi descritti precedentemente, in grado di “girare" su di un target differente dalla piattaforma in cui e stato sviluppato. Si fa uso di questo al fine di garantire la portabilità delle applicazioni sviluppate su le più svariate piattaforme, lavorando sempre con lo stesso ambiente di programmazione. Il compilatore, quindi, e abile, a partire da una serie di source file, a generare i file oggetto che, opportunamente linkati, permettano di ottenere un eseguibile. Programmazione 58 JTAG: protocollo standard di test funzionale che permette di effettuare debug sul firmware. Il programma viene memorizzato in una specifica area di memoria del microcontrollore definita bootloader. Il microcontrollore all'avvio esegue le istruzioni contenute in questa area di memoria Ambiente di sviluppo 59 Ambiente multi-piattaforma MPLAB X IDE v 2.00 o superiori. Compilatore xC16. Scaricabili da: http://www.microchip.com/pagehandler/en-us/family/mplabx/ Ambiente di sviluppo 60