F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA



Relevanta dokument
F6: I/O hantering. Typer av I/O i ett datorsystem. Memory mapped

F8: Undantagshantering

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

Föreläsningsanteckningar 3. Mikroprogrammering II

Övningsuppgifter i Mikrodatorteknik 4p/5p

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

IS1500 Lösningar övning CE_O CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Lösningsförslag till Tenta i Mikrodator

Övning 7. Timer, serieport

Beijer Electronics AB 2000, MA00336A,

Support Manual HoistLocatel Electronic Locks

PNSPO! Tips! Xpectia kommunikation till OMRON PLC via Seriellt. 14 mars 2012 OMRON Corporation

Tentamen PC-teknik 5 p

F7: I/O hantering. Asynkron och synkron busscykel Bussfördelning. Periferikretsar

Lösningsförslag till Tenta i Mikrodator

Datorteknik ERIK LARSSON

Operativsystem - input/output, skydd, virtualisering

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

HF0010. Introduktionskurs i datateknik 1,5 hp

Lösningar till tentamen i EIT070 Datorteknik

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Systemkonstruktion SERIEKOMMUNIKATION

Periferikretsar. ADC/DAC Räknare Realtidsklocka Timer Interrupthanterare UART (Universal Asynchronous Reciever and Transmitter) Seriell dataöverföring

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Adressrum, programmerarens bild

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Modbus. Supportdokument. Lathund för att använda Modbus över RS XXX eller TCP/IP.

2.45GHz CF Card Reader User Manual. Version /09/15

M7005 Fischer/Weisser mätstyrningsserver M9003 ersatt med Simens S Plc

Datakommunikation med IR-ljus.

Lösningar till tentamen i EIT070 Datorteknik

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs Avbrott i mjukvara.

Datorsystem Laboration 2: Minnesmappade bussar

InstalationGuide. English. MODEL:150NHighGain/30NMiniUSBAdapter

Allt om datalogging och datakommunikation!

Tentamen. Datorteknik Y, TSEA28

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Tentamen PC-teknik 5 p Lösningar och kommentarer

Grundläggande datavetenskap, 4p

F5: Högnivåprogrammering

F5: Högnivåprogrammering

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Tentamen Datorteknik Y, TSEA28 Datum

Tentamen Datorteknik D del 2, TSEA49

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Minnet från processorns sida Datorteknik

Maskinorienterad programmering

2 UPPBYGGNAD OCH FUNKTION

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

WAGO IO System Service Seminar. Diagnostik

, fukt- och temperaturdetektor Modbus RTU, trafikljus

Formula Blue. Digitala Projekt 8p. Jesper Ferm E02 Carl Hakenäs E04

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Digitala Projekt (EITF11)

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

4 grundregler. Minneshantering. Problemet. Windows minkrav

Tentamen PC-teknik 5 p

Tentamen. Datorteknik Y, TSEA28

Monitor Pro V7 SCADA. Kom-igång med kommunikation Unitelway TCP/IP

A-del motsvarande KS1

Övning 6. Parallellport, timer

Svensk version. Inledning. Innehåll. Specifikationer BT100. Extra specifikationer BT100 S W E E X. C O M. BT110 - Sweex Bluetooth Class I Adapter USB

Bussar och I/O. samt. vad kan man göra med NEXYS3

Conventional Cruise control / Adaptive Cruise Control

Manual. Räknevåg 2240

För kunder som använder Windows för nätverksanslutningar

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

1. Unpack content of zip-file to temporary folder and double click Setup

Digitala System: Datorteknik ERIK LARSSON

DCU605. Tekniska Data. Datablad SDA00178SE Version /02/18 Passersystem. Dörrcentral med direkt IP-anslutning till ESMIKKO-server

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Tentamen. Datorteknik Y, TSEA28

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Lösningar till tentamen i EIT070 Datorteknik

Elektromagnetiska flödesmätare. Modell AMC2100


2.1 Installation of driver using Internet Installation of driver from disk... 3

Decipher och Datataker DT100

Digitalteknik och Datorarkitektur 5hp

Tenta i Digitalteknik

Datorteknik ERIK LARSSON


CAN ett kommunikationsprotokoll för realtidssystem MOP 12/13 1

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

I DAG fo 4. Printerport v3 med READY o DAV. Avbrott. Hur bra blev det egentligen????

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Föreläsning 4 IS1300 Inbyggda system

Webbregistrering pa kurs och termin

Product configurations Produire configuration Produkt konfigurationen Producto configuraciones Produkt konfigurationerna

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

Programmering av inbyggda system

Pulsmätare med varningsindikatorer

Tentamen. Datorteknik Y, TSEA28

Användarmanual Jordfelsövervakning IsoBox 16 / IsoIn / IsoOut

Styrteknik: Binära tal, talsystem och koder D3:1

Transkript:

F6: I/O hantering Typer av I/O i ett datorsystem Memory mapped Port mapped Protokoll för synkronisering Polling Timed Interrupt DMA Drivrutiner 1

Memory mapped I/O enheter avkodas precis som ett minne och I/O befinner sig därför i samma adressrymd som minnet. Data accessas med vanliga minnesinstruktioner Ex. MOVE.W $400700,D0 * Hämtar info från In porten som har adress $400700 Adress buss Data buss Kontroll signaler Minne CPU I/O enheter 2

Port mapped Eget minnesutrymme, dvs en egen adressrymd Speciella instruktioner för åtkomst av I/O enheter Ex. Adressbuss IN A * Läs in data från IN port Data buss OUT B * Skriv data till OUT port B Kontroll signaler Minne CPU I/O enheter Databuss och en delmängd av adressbussen I/O kontroll signaler 3

Synkronisering av I/O Polling 1(2) Polling I/O porten läses av med ett bestämt intervall Kallas också för programmerad I/O Sker synkront med övrigt programflöde 4

Synkronisering av I/O Polling 2(2) Systembuss Vill I/O 1 ha betjäning? Ja Betjäna I/O 1 MPU I/O 1 I/O 2 I/O N Nej Vill I/O 2 ha betjäning? Ja Betjäna I/O 2 Polling av flera I/O Varje I/O-enhet tillfrågas enligt en förutbestämd ordning om de behöver betjäning. Om betjäning behövs körs det serviceprogram som är associerat med tillfrågad enhet. Övrig tid ägnar processorn till att exekvera huvudprogrammet. Nej Vill I/O N ha betjäning? Nej Huvudprogram Ja Betjäna IO n 5

Synkronisering av I/O - Timed Timed Intervallet mellan händelser är känt Accessar I/O enheten efter en viss tid när man vet att en händelse har inträffat Kräver realtids OS T period 6

Synkronisering av I/O Avbrott 1(2) Avbrott (Interrupt) En händelse på in/ut-porten som behöver underhållas, avbryter då ordinarie programflöde och exekverar en speciell service rutin genom att någon interrupt-ingång på processorn aktiveras Avbrottsrutinen som betjänar en I/O-enhet exekverar asynkront i relation till huvudprogrammet. Startar interrupt rutin Startar interrupt rutin 7

Synkronisering av I/O Avbrott 2(2) Adress buss I/O-enheten signalerar till processorn att den behöver hjälp genom signalen Interrupt Request. CPU IACK V Data buss Kontroll signaler Minne Processorn avbryter det den för stunden arbetar med och signalerar samtidigt till I/O-enheten att den accepterar avbrottet Interrupt Acknowledge. I/O-enheten identifierar sig nu genom att skicka en Vektor på databussen. IRQ I/O enheter Processorn servar I/O-enheten genom att utföra dataöverföringen till/från enheten. Processorn återgår till tidigare arbete. 8

Synkronisering av I/O DMA 1(2) DMA Direct Memory Access Processorn är bortkopplad I/O enheten får ett adressområde tilldelat Det går snabbare att utföra blocköverföring av data Överföringen sker snabbt i en skur eller blandas med processorns busscykler Adress buss Data buss Kontroll signaler Minne CPU I/O enheter 9

Synkronisering av I/O DMA 2(2) Address buss Data buss Control buss bus_switch_1 bus_switch_2 bus_switch_3 CPU ROM RAM IRQ BR BG DMAC Address register Transfer count Control Status Peripherial ACK Ready DMA Grant DMA Request IRQ Genom att öppna bus_switch_1 och samtidigt sluta 2 och 3 så kan DMAC kontrollera en dataöverföring till/från minnet. Busy Done 10

Sammanfattning av I/O 1(2) Memory mapped Varje I/O port har en minnesadress i den gemensamma minnesarean Port mapped I/O portarna har ett eget adressutrymme skilt från den vanliga minnesarean. Speciella I/O-instruktioner. 11

Sammanfattning av I/O 2(2) Polling eller programmerad I/O I/O porten läses av med ett bestämt intervall för att undersöka i fall en viss händelse inträffat. Timed I/O Periodtiden mellan varje händelse är känd. Avbrottsbaserad I/O I/O-enheten signalerar själv till processorn när en händelse inträffat och en dataöverföring behöver ske. DMA Direct Memory Access Processorn kopplas bort. I/O enheten läser och skriver i minnet utan att data passerar genom processorn 12

Drivrutiner 1(3) En drivrutin är en eller flera funktioner som används för att accessa en extern komponent En drivrutin gömmer tekniska detaljer Användaren ser bara ett API (Application Program Interface), dvs en eller flera C/Assembler funktioner 13

Drivrutiner 2(3) 14

Drivrutiner 3(3) 15

Exempel En AD-omvandlare 1(3) ADC-12 från Pico Technology Tekniska data: Antal kanaler: Upplösning: Insignalområde: Max sampl.hast: 1 st 12 bitar 0 5 V 18 khz Repeterbarhet: ±0,5 LSB vid T=25 C Överspänningssky ±30 V dd: Inimpedans: 66 kω Kontaktdon A/D-sida: PC-sida: BNC 25-pol D-Sub hane ADC-12 levereras med programvara PicoScope och PicoLog samt drivrutiner för Visual Basic, C++, Delphi, Pascal och Windows (DLL). 16

Exempel En AD-omvandlare 2(3) Utdrag ur den tekniska dokumentationen för ADC-12 The following table specifies the function of each of the routines in the Windows drivers: Routine Function adc10_get_driver_version Check that this is the correct driver adc10_open_unit Open the driver to use a specified printer port adc10_set_unit Select which ADC-10 unit to use adc10_close_unit Close the specified printer port adc10_get_value Get a single reading adc10_set_trigger Set a trigger event adc10_set_interval Set the time interval for the next call to adc10_get_values, or adc10_get_times_and_values adc10_get_values Get a block of readings at fixed intervals adc10_get_times_and_values Get a block of readings and their times, at fixed intervals adc10_get_unit_info Get information about an ADC10 unit 17

Exempel En AD-omvandlare 3(3) Utdrag ur den tekniska dokumentationen för ADC-12 adc10_get_values PREF 1 unsigned long PREF2 adc10_get_values ( unsigned short HUGE * values, unsigned long no_of_values); This routine reads in a block of values. It collects readings at intervals and from channels specified in the most recent adc10_set_interval call. If a key is pressed while collecting, the routine will return immediately. The return value will be zero if a key was pressed, and the total time in micro-seconds if a block was successfully collected. 18

Exempel på en enkel drivrutin 1(7) Systembuss MPU UART = Universal Asynchronous Receiver Transmitter Antal ettor inkl. paritetsbit: Udda Jämn Paritetsbit = 1 0 Udda paritet 0 1 Jämn paritet Startbit D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 P Stopbit Hastighet (bps) 1200 2400 4800 19

Exempel på en enkel drivrutin 2(7) 7-6 - 5 - Programming model 4 3 - - Base + 00 Base + 01 Base + 02 Control Status Transmitter data 2 1 0 P sp1 sp0 1=>odd, 0=>even (sp1 sp0) (00)=1200, (01)=2400 (10)=4800 Base + 03 Receiver data 7-6 - 5-4 - 3-2 ra 1 =>Received byte available 1 te 1 => Transmit register empty 0 pe 1 => Parity error 20

Exempel på en enkel drivrutin 3(7) Uppgift Skriv en device driver med följande funktioner (entries) för att stödja seriell kommunikation via UART. Metod för parameteröverföringen är valfri. int initialize( char *base, int speed, int parity); //base är basadressen till UART. speed är hastighet i //bps. parity = 0 för jämn och 1 för udda paritet. //Funktionen returnerar 1 om fel uppstod, annars 0. int getbyte(char *base); //Nästa mottagna byte (0-255) returneras. Om ej tillgänglig byte så //returneras 1, om parity error -2. int putbyte(char *base, char item); //item sänds seriellt. Om det gick bra returneras 0 i annat fall 1. 21

Exempel på en enkel drivrutin 4(7) initialize: *A0 contains the base address, D0.W contains the speed in bps * D1.B contains parity, 0=even, 1=odd, D2.W the return value MOVE.B D1,D2 LSL.B #2,D2 *Position parity selection bit CMP.W #1200,D0 *Speed = 1200 bps? BNE next1 BRA ok * 1200, yes next1:cmp.w #2400,D0 *Speed = 2400 bps? BNE next2 ORI.B #1,D2 BRA ok * 2400, yes next2:cmp.w #4800,D0 *Speed = 4800 bps? BNE notok ORI.B #2,D2 BRA ok * 4800, yes notok:move.w #$FFFF,D2 RTS *D2 returns 1 meaning error ok: MOVE.B D2,(A0) *Control byte to base address + 0 CLR.W D2 RTS *D2 returns zero meaning OK 22

Exempel på en enkel drivrutin 5(7) getbyte: *A0 contains the base address, D2.W the return value MOVE.W #$FFFF,D2 *Return code if no byte is available BTST.B #2, 1(A0) *Byte available? BEQ exit *Jump if byte is not available MOVE.W #$FFFE,D2 *Return code if parity error BTST.B #0,1(A0) *Parity error? BNE exit *Jump if parity error CLR.W D2 MOVE.B 3(A0),D2 *Received byte is the return value exit: RTS 23

Exempel på en enkel drivrutin 6(7) putbyte: *A0 contains the base address, D0.B the item to be sent *D2.W the return value MOVE.W #$FFFF,D2 BTST.B #1,1(A0) BEQ exit MOVE.B D0,2(A0) exit: RTS *Return value = -1 if not ready *Is the transmitter ready for a new item? *No it isn t *Write item to transmitter register 24

Exempel på en enkel drivrutin 7(7) Vi har en serie av tre drivrutiner som döljer detaljer kring UART-hårdvaran för applikationsprogrammeraren. int initialize( char *base, int speed, int parity); int getbyte(char *base); int putbyte(char *base, char item); Vi har skapat ett interface, API mot applikationsprogramvaran 25