Interfacciamento a periferiche

Documenti analoghi
Sistemi di Elaborazione a Microprocessore (Controllore Program m abile delle Interruzioni) M. Rebaudengo - M. Sonza Reorda

Architettura di un sistema di calcolo

Architettura del PIC 18F452

Il sottosistema di I/O. Input Output digitale

Il sistema di I/O. Calcolatori Elettronici 1. Architettura a bus singolo. Memoria. Unità di I/O. Interfaccia. Unità di I/O.

Elettronica dei Sistemi Programmabili A.A Microcontrollori. Introduzione allo sviluppo di progetti

Organizzazione Monolitica

Corso di Sistemi di Elaborazione A.A. 2008/2009

Architettura degli elaboratori (A)

Architettura di un calcolatore

Il sottosistema di I/O (Richiamo)

Tipi di Bus. Bus sincrono. Comunicazioni nell elaboratore (e oltre) Bus sincroni e asincroni Standard commerciali (PCI,SCSI,USB)

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

PD32. Interfacciamento con i dispositivi di I/O (V)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Virtualizzazione delle Periferiche. Corso di Sistemi Operativi

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Architettura degli Elaboratori

Struttura del calcolatore

Componenti di base di un computer

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Il microprocessore 8086

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

STRUTTURE DEI SISTEMI DI CALCOLO

Istruzioni di modifica della sequenza di elaborazione

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

8 Microcontrollori PIC

Calcolatori Elettronici

Caratteristiche di un PC

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Comunicazione. Prof. Antonino Mazzeo. Corso di Laurea Specialistica in Ingegneria Informatica

Lezione 8. Figura 1. Configurazione del registro INTCON

Software Hardware. Livello ISA. Progettisti hardware. Progettazione di un ISA

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Ferrante Patrizia Ghezzi Nuccia Pagano Salvatore Previtali Ferruccio Russo Francesco. Computer

L architettura di riferimento

Calcolatori Elettronici

Architettura dei calcolatori

Calcolo numerico e programmazione Architettura dei calcolatori

Capitolo. Interfacciamento di periferiche I/O con il PC. 1.1 Il BUS di espansione del PC

Configurazione Modem ROBUSTEL M1000 SMS Direct

La Comunicazione tra i dispositivi

per(il(corso(di(architetture(dei(sistemi(di(elaborazione(

Configurazione & Programmazione Profibus DP. in Ambiente Siemens TIA Portal

Software Hardware. Livello ISA

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

La macchina di Von Neumann. Central Processing Unit (CPU) Elementi base. Architettura computer. Bus di sistema MEMORIA CENTRALE PERIFERICHE A B INTR

La gestione dell I/O (Cap. 5, Tanenbaum)

CONCETTI BASE dell'informatica Cose che non si possono non sapere!

CALCOLATORI ELETTRONICI

PC-CAN Dual PC AT CAN I/F

Architettura di un calcolatore: introduzione

Cos e` un Sistema Operativo? Cos è un sistema operativo?

ancora l architettura elementare di un sistema di elaborazione:

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Architettura di un calcolatore

Protocolli di Comunicazione Elettronica dei Sistemi Digitali L-A Università di Bologna, Cesena

CPU chips e bus. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

Architettura dei calcolatori

Classe 3a INF - Esecuzione di un interrupt: ricostruzione delle operazioni al calcolatore con Turbo Debugger

CAP. 4: Aspetti generali del Sistema Operativo Linux. l

Input/Output Device Management

PROGRAMMA DI SISTEMI TERZA AET 2014/2015

ARCHITETTURA DEI CALCOLATORI

Introduzione ai sistemi operativi

Architettura dei computer

Introduzione alle architetture per il controllo dei manipolatori

I/O. Interfacciamento di una periferica. Architettura di un elaboratore. L input/output Parte VI. Architettura degli Elaboratori e delle Reti

Corso di Sistemi di Elaborazione delle informazioni

Progetto di un sistema di controllo per un robot basato su CAN

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

Uno sguardo al codice chiarificherà i dettagli. La tabella di invio interrupt intmap è definita nel file io.h.

Calcolatori Elettronici Parte X: l'assemblatore as88

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

C. P. U. MEMORIA CENTRALE

DMA Accesso Diretto alla Memoria

DISPLAY REMOTO PILOTATO DALLA SERIALE. LCD_SERv10

Sistemi operativi. Motivazione. Tipi di software. Sistemi operativi. Un sistema operativo (SO) e un insieme di programmi che gestiscono le funzioni

Guida all utilizzo del modulo MPI BrainChild

MODELLI DI MEMORIA e CALL

ARCHITETTURA DI UN PERSONAL COMPUTER

Testi di Esercizi e Quesiti 1

Lezione n.9. Introduzione al linguaggio macchina

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

USART PIC 16F876. R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0 CSRC TX9 TXEN SYNC _ BRGH TRMT TX9D Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

SCHEDA MULTI I/O DI INTERFACCIA PER ATTUATORI/SENSORI SU PORTA PARALLELA (standard 1284)

verso espandibili eterogenei tempo di accesso tempo di risposta throughput

Introduzione all acquisizione Dati

Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica

memoria virtuale protezione

Corso: Informatica+ Andrea Cremonini. Lezione del 20/10/2014

ARCHITETTURA DELL ELABORATORE

INTRODUZIONE AI SISTEMI OPERATIVI EMBEDDED

Capitolo 8 - Protocollo Modbus RTU per Drive SIRCO

Architettura dei sistemi x86 Interfacce I/O

ECDL CORE 5.0. Modulo 1 Concetti di base dell ICT 1.1 Hardware. Docente: Stefania De Martino Liceo G. Leopardi Recanati a.s.

CPU. Maurizio Palesi

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

Transcript:

Interfacciamento a periferiche Periferica controller o interfaccia CPU/RAM. In genere la periferica è elettromeccanica e l interfaccia digitale (scheda sul bus o integrata su motherboard). Ma l esatta demarcazione tra periferica e controller è dettata dagli standard con cui questi devono interagire. P.es.: PC con porta parallela standard CENTRONICS: 1. la porta appartiene al controller interno al sistema 2. ad essa va collegata una stampante opportuna (periferica) 3. l interazione controller-stampante obbedisce allo standard Un interfaccia può essere: custom, sviluppata con progetto ad hoc con componenti MSI con chip di supporto standard LSI per una periferica specifica; programmabile (adattabile via SW a più periferiche). In un PC anche l interazione sistema-interfaccia tende a seguire standard (tradizionalmente quelli del PC-AT IBM). Il SW pilota le interfacce modificandone i registri, detti anche port. Un interfaccia tipica possiede: registri di controllo registri di stato registro dati Ogni registro ha un indirizzo a 16 bit nello spazio di I/O; il registro è reso accessibile dall interfaccia quando questa ne riconosce l indirizzo I/O sul bus indirizzi/controllo. Interrupt X86 20/01/00 15.29 1/9

I/O a controllo di programma: polling Istruzioni x86 per l IO copiano tra registri di I/O e / (NB: la destinazione è sempre il 1 operando dell istruzione): ( contiene l indirizzo del registro di input) imm8 (imm8 è l indirizzo a 8 bit del registro di input) ( contiene l indirizzo del registro di output) imm8 (imm8 è l indirizzo a 8 bit del registro di output) L interazione via istruzioni non può essere atomica, cioè dar luogo appena l istruzione è completata a un azione significativa della periferica. Infatti tali istruzioni durerebbero troppo, richiederebbero l interazione con più registri e non se ne potrebbe dare per scontato il successo. (l I/O atomico è possibile via gli del DOS che richiamano però intere subroutine). Caratteristiche SW di I/O con polling (interrogazione): usa solo, ma non servizi DOS gli eventi esterni lo influenzano modificando i registri di stato, ma è il programma a decidere quando esaminare i registri il flusso di esecuzione non può essere alterato dall esterno Tipica struttura SW per singola operazione I/O (l interfaccia si presuppone inizializzata): 1. polling ripetuto interfaccia: sei disponibile per operazione I/O? 2. read o write registro dati interfaccia 3. polling ripetuto interfaccia: operazione di I/O ha avuto successo? Spesso (3) è impossibile (non corrisponde a un bit) o inutile; la sua funzione la farà in parte (1) nella seguente operazione di I/O (se l interfaccia torna disponibile per un altra operazione di I/O, quella precedente sarà stata completata, per lo più con successo). Interrupt X86 20/01/00 15.29 2/9

Polling: schema tipico Costanti registri periferica: STR EQU... ;Indirizzo Status Register Periferica DR EQU... ;Indirizzo Data Register periferica Input di un byte dalla periferica in : inbyte proc push dx mov dx,str ; polling registro teststr: in al,dx ; di stato STR sul test al,01 ; bit 0: periferica pronta per input jz teststr inbyte mov dx,dr ; indirizza registro dati periferica in al,dx ; input dato pronto pop ret endp dx Output del byte in sulla periferica: outbyte proc push dx push ax ; ax=dato per output: salvalo su stack mov dx,str ; polling registro teststr: in al,dx ; di stato STR sul test al,02 ; bit 1: periferica pronta per output jz teststr outbyte mov dx,dr ; indirizza registro dati periferica pop ax ; recupera dato per output da stack out dx,al ; output dato pop ret endp dx Interrupt X86 20/01/00 15.29 3/9

Routine di servizio di interrupt È una routine attivabile da cause diverse da chiamate o salti; queste cause si dicono interrupt. L architettura x86 prevede routine di servizio di interrupt contraddistinte da un numero n in (n senza segno a 8 bit) n si dice anche numero o tipo dell interrupt che attiva la routine. Un vettore di interrupt è una dword che specifica segmento (MSW) e offset (LSW) di una routine di servizio di interrupt. Nell x86, il vettore per l interrupt n è la nesima dword dall indirizzo 0, cioè la dword di indirizzo assoluto 4n. I vettori in si dicono Interrupt Service Routine address Table; IRST serve a reperire le routine di servizio interrupt (vedi (4,6) sotto). Al verificarsi di un interrupt di tipo n (qualunque ne sia l origine), la CPU compie queste azioni: 1. salva i flag sullo stack 2. disabilita (clear) i flag TF (Trap) e IF (Interrupt enable) 3. salva sullo stack 4. carica in la word alta del vettore di interrupt n 5. salva sullo stack 6. carica in la word bassa del vettore di interrupt n La routine di servizio dell interrupt dovrebbe terminare con che: 1. ripristina dallo stack 2. ripristina dallo stack 3. ripristina dallo stack i flag (in genere ciò riabilita gli interrupt). Interrupt X86 20/01/00 15.29 4/9

Interrupt software Una prima classe di interrupt sono quelli richiesti dal software: l esecuzione dell istruzione! " # n causa un interrupt di tipo n. Normalmente la routine di servizio corrispondente fa parte del SO. Accedere ai servizi del SO con! " # è vantaggioso: si pensi di cambiare l immagine in memoria del SO e con questa: indirizzo della routine di servizio del generico interrupt n del SO quindi, valori del vettore n di interrupt in memoria implementazione della routine di servizio dell interrupt n ciò non ha impatto sulle applicazioni che usano! " # ", purché la routine per! " # n continui a fornire lo stesso servizio. Viceversa, accedere a un servizio S di SO con $ % & & address non è pratico. address per S non può cambiare anche se deve mutare l immagine in memoria del SO, a causa di un aggiornamento o semplicemente di una riconfigurazione; oppure, se modificare l immagine del SO in memoria può cambiare address per S, bisognerebbe rifare il linking tra ogni applicazione che usa $ % & & address e il SO! I principali interrupt che danno accesso a parti del DOS sono: ' ( ) * +, ) : interrupt DOS (parti di MSDOS.SYS) - ( ) * -. ) : interrupt BIOS Si possono poi installare le proprie routine di servizio in / ( ) * / / ). P.es. uso di una routine di servizio installata per! " # / ( ) : code segment start: int 60H code mov int ends ah,4ch 21H Interrupt X86 20/01/00 15.29 5/9

Interrupt asincroni Gli interrupt software possono dirsi sincroni, nel senso che accadono quando previsto dal programmatore. Altri interrupt si verificano in modo non controllato dal programma interrotto e si dicono quindi asincroni; in risposta ad essi: la CPU completa l istruzione corrente e la CPU interrompe il flusso di istruzioni che aveva in corso e via 1-6,pag.4 va a eseguire la routine di servizio dell interrupt. Gli interrupt asincroni (salvo uno) si possono disabilitare ponendo IF (Interrupt enable Flag) a 0 con 0 1 2 (3 4 2 rimette IF a 1). Per ogni interrupt asincrono è definito un tipo associato (vedi oltre). Alcuni interrupt asincroni rispecchiano il verificarsi di eccezioni, cioè condizioni eccezionali interne alla CPU: divisione per 0 interrupt tipo 0 overflow interrupt tipo 4 opcode non valido interrupt tipo 6 FPU non disponibile interrupt tipo 7 Un altra causa asincrona interna di interrupt di tipo 1 è la fine dell istruzione corrente se iniziata con TF=1. 1. Il debugger installa le service routine degli interrupt 1 e 3 e carica il programma; 2. F7 pone TF a 1 ed esegue l istruzione corrente del programma caricato 3. la routine dell int. 1 rimette TF a 0, mostra il nuovo stato, attende un comando I debugger sfruttano anche l interrupt tipo 3 (opcode 5 5, equivale a 6 7 8 9 : 5 ; 9 : ): 1. il debugger sostituisce con 5 5 il 1 byte di un istruzione su cui si vuole un breakpoint 2. dopo il Run, se la CPU esegue 5 5 il controllo torna al debugger Interrupt X86 20/01/00 15.29 6/9

Interrupt esterni Vi sono altre 2 classi di interrupt asincroni, entrambe esterne (hw): interrupt mascherabile (disabilitabile ponendo IF a 0); si verifica quando il pin INTR (INT Request) vede un fronte 0 1; non-maskable interrupt (non disabilitabile); ha tipo 2; si verifica quando il pin NMI vede un fronte 0 1 (causa p.es. Low Power); Se la CPU è disponibile a servire INTR, risponde sul pin INTA (INT Acknowledgement) al componente interessato e, in risposta, questo deve porre sul bus dati D7-D0 il tipo dell interrupt. Dato che più periferiche hanno bisogno di una routine di servizio, tra linee di richiesta interrupt da periferiche e INTR c è l 8259 PIC: Bus Dati Port 1 Port 2 IR0 (max priority) INTR INTA IR7 (min priority) altri int. controller Messaggi di controllo 8259: ICW1-4 (inviati in sequenza) e OCW1-2: ICW1 (Initialization Control Word 1): montaggi in cascata e forma del segnale di interruzione (edge-triggered); ICW2: i bit 7-3 danno il tipo base per l interrupt (bit 2-0 a 0) cioè per IRk verrà messo sul bus dati ICW2[7..3] e i 3 bit di k; ICW3 specifica montaggi multicontrollore ICW4 specifica il modo fully-nested OCW1 (Operation CW 1): OCW1[k]=1 maschera IRk; OCW2: riceve la segnalazione End Of Int in modo fully-nested Interrupt X86 20/01/00 15.29 7/9

Interrupt controller nel PC Il PC ha 2x8259 in cascata con INTR di slave IR2 di master: master, con tipo base < = > (in? @ A B ) e port di indirizzi: B < > il port 1, per? @ A C, D @ A B E F B C > il port 2, per? @ A B E G e D @ A C slave, con tipo base H < > (in? @ A B ) e port di indirizzi: < I > il port 1, per? @ A C, D @ A B E F < J > il port 2, per? @ A B E G e D @ A C Le linee IR (o IRQ) sono allocate come segue: Linea IR Master Slave 0 Timer Real time clock 1 Keyboard Available 2 INTR Slave Available 3 COM2 Available 4 COM1 Serial Mouse 5 Available FPU 6 FD Controiler HD Controller 7 LPT1 Available Interrupt X86 20/01/00 15.29 8/9

Confltti tra IR - Modo fully-nested In modo non fully-nested, 8259 arbitra tra IR simultanee e IRn ha la precedenza su IRm sse n<m Si consideri però la sequenza di eventi: 1. 8259 riceve soltanto IRn, passa INTR e riceve INTA 2. 8259 comunica il tipo base 3. parte la ISR 4. 8259 riceve IRm Come dovrebbe reagire a (4) l 8259? a) se accetta IRm e passa INTR rischia di interrompere ISR per IRn (e n<m), se questa è ancora in corso b) se vuole aspettare che ISR termini, come fa a saperlo? In modalità standard (non fully nested): l 8259 fa (a) se la ISR di IRn non vuole ricevere INTR per una IRm, n<m deve lasciare IF=0 inizialmente o mascherare IRm con OCW1 In modalità fully nested invece: 8259 maschera ogni IRm, m>n, se IRn è l ultima richiesta accettata dalla CPU e per cui presume sia in corso il servizio la ISR per IRn deve comunicare a 8259 quando finisce, ponendo K L M (N O P ) nel port L ora 8259 invierà le IRm che aveva mascherate (e memorizzate) Interrupt X86 20/01/00 15.29 9/9