Università degli studi di Enna

Slides:



Advertisements
Presentazioni simili
MICROCONTROLLORI Di Tiziano Ragazzi.
Advertisements

1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Introduzione ai PLC.
EVOLUZIONE DEL PC Legge di Moore: La potenza dei calcolatori raddoppia ogni 18 mesi Metà anni 80 (Personal Computer IBM AT) Architettura 16 bit interna,
L' ARCHITETTURA DI VON NEUMANN
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Informatica Generale Marzia Buscemi
Il calcolatore Stefano Cagnoni e Monica Mordonini
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Introduzione ai Microcontrollori Una prima definizione I microcontrollori sono utilizzati per gestire segnali in ingresso (input utente o da sensori),
LA MEMORIA CENTRALE. La memoria nella struttura generale del calcolatore MEMORIA CONTROLLO INGRESSO E USCITA ARITMETICA E LOGICA CPU Dispositivi esterni.
IL PROCESSORE I MICROPROCESSORI INTEL Il microprocessore è un circuito integrato dotato di una struttura circuitale in grado di effettuare un determinato.
D. Talia - UNICAL 1. 1 Sistemi Operativi Domenico Talia Facoltà di Ingegneria Università della Calabria.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Corso di Alta formazione in TL&OS Modulo 1.3 Reti e Servizi - lezione 1 Modulo 1.3 Reti e servizi 1. Introduzione al Networking Connettere il PC in rete;
Università degli studi di Roma “Tor Vergata” Progettazione e realizzazione di un sistema di test per memorie Flash in ambiente radiativo CANDIDATO Marco.
IL PLC Formazione ed informazione su: C ontrollori L ogici P rogrammabili a cura di: Antonio Minio.
E’ costituita da due blocchi:  Interfaccia di rete  Blocco di simulazione L’ interfaccia di rete fornisce il collegamento elettrico con la rete sotto.
13 gennaio Sistema di rilevazione delle temperature all’interno di Personal Computer Industriali Dipartimento di Ingegneria Elettronica SISTEMA.
14/11/ D E N T R O I L COMPUTER.
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Approfondimento Porte USB e Interfacce In elettronica l'Universal Serial Bus (USB) è uno standard di comunicazione seriale che consente di collegare diverse.
Rappresentazione dell’ Informazione Digitale e Binario
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Concetti Di Base Informatica
Corso di Elementi di Informatica
© 2007 SEI-Società Editrice Internazionale, Apogeo
PRESENTAZIONE di RICCARDO
Il Sistema Operativo Gestione dei Processi
GPIO: General Purpose Input Output I parte
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Introduzione al linguaggio C
Arduino UNO Single board microcontroller. Arduino UNO Single board microcontroller.
Il Sistema Operativo Ripasso
Programmazione per la Musica | Adriano Baratè
Sistema di Analisi e di Acquisizione
Pic16f84 Assembly I/O.
LE ARCHITETTURE NON VON NEUMANN
Microcontrollori e microprocessori
I microprocessori Il microprocessore è un circuito integrato costituito da silicio. Il microprocessore svolge fondamentalmente due funzioni: sovraintende.
Dal problema al processo risolutivo
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
Introduzione I microcontrollori.
I BUS È un insieme di fili conduttori che permette il passaggio di dati tra le varie periferiche del pc.
La porta video DVI. Differenze tra i vari tipi e miglioramenti introdotti rispetto alla precedente VGA. Leader: Chouay Mohammed Grafico: Vinueza Daniel/Chouay.
I PIC: peripheral Interface contRollers
analizzatore di protocollo
John Von Neumann John von Neumann, nato il 28 dicembre 1903  e morto a Washington l’8 febbraio 1957, è stato un matematico, fisico e informatico ungherese naturalizzato statunitense.
LIBOTECH S.C. a R.L. PRESENTAZIONE AZIENDALE.
Corso propedeutico base di informatica
MODULO 1 – Computer essentials
istalliamo l’ambiente di sviluppo - ide
La scheda Arduino.
Circuiti integrati Costruzione di circuiti (logici e non) su un substrato di silicio. Non solo la parte attiva ma anche le connessioni tra le porte. Incredibile.
Caratteristiche e funzioni della scheda Arduino
Classe III A A.s – 2012 Programma di Informatica
Processi e Thread Meccanismi di IPC (1).
A/D seconda parte.
Programmare.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
Esercitazione su Instruction Level Parallelism
LOGICA DI FUNZIONAMENTO
Parti interne del computer
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Architettura del computer
Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
CLOUD.
Transcript della presentazione:

Università degli studi di Enna Facoltà di Ingegneria Telematica Laboratorio di Elettronica Sistemi Elettronici integrati salvatore.tirrito@unikore.it

Motivazioni Crescita di esigenze computazionali; Intelligenza diffusa; Elettronica dilagante Crescita di esigenze computazionali; Intelligenza diffusa; Elaborazione e processamento di dati in larga scala. Basic Technologies: Sistemi Embedded Tecnologie di comunicazione

Definizione 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.) 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 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? Trasporti Automotive; Avionica; Treni.

Sistemi Embedded – Dove? Consumer Mobile Home

Sistemi Embedded – Dove? Industrial Automation Home Automation

Sistemi Embedded – Esempi Prodotto: Spazzolino Elettronico Microprocessore: 8bit Velocità programmabile, timer e circuito di ricarica

Sistemi Embedded – Esempi Qualsiasi PC, Mouse tastiera o dispositivo USB Solitamente microprocessore: 8bit

Sistemi Embedded – Esempi Qualsiasi Stampante Solitamente microprocessore: Intel Motorola o ARM a 32 bit RISC

Sistemi Embedded – Esempi Oscilloscopio Agilent Microprocessore a 64 bit OS Windows XP

Sistemi Embedded – Esempi BMW 745i Windows CE OS 53 – 8 bit uP 11 – 32 bit uP 7 – 16 bit uP Reti Multiple

Sistemi Embedded – Esempi 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 Potrebbero prevedere funzionalità sofisticate Operazioni Real-Time; Basso costo di produzione; Basso consumo; Basso Time To Market.

Funzionalità complesse Spesso devono eseguire algoritmi sofisticati o multipli. Fast Fourier Trasform; Encoder/Decoder Audio-Video Spesso forniscono complesse interfacce utenti

Operazioni Real-time 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 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 Solitamente progettati da un ristretto Team di sviluppatori; Spesso occorre soddisfare stringenti deadline di sviluppo.

Team di sviluppo P.M. Architetti SW/HW Reference SW/HW developer

Sistema Embedded: Cosa usa? 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

Numero di CPU

Perché un sistema operativo 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) 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

Sistemi operativi commerciali

Linguaggi di programmazione utilizzati

Memoria in SE 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 … 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 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. RIDUZIONE DIMENSIONI, COSTI, FLESSIBILITA’, PROGRAMMABILITA’ Reti Logiche Logiche programmabili Controlli digitali e analogici

Microprocessore 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 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 Linee I/O; Memoria Flash; Convertitore A/D; Timer; USART; SPI; PWM; I2C; ... Microprocessore: Unità di calcolo Unità di controllo Memoria istruzioni e calcolo

Microcontrollore vs Microprocessore

Microcontrollore vantaggi 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 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 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 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 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 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 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 Operazioni: Instruction Fetch; Instruction decode; Data Fetch; Instruction execution

Esecuzione senza pipeline

Esecuzione con pipeline

Memoria 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 Harvard Van Neumann

PIC24FJ256GB108

PIC24FJ256GB108 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 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 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;

Interrupt 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 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 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 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 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 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 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