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

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

F8: Undantagshantering

Övningsuppgifter i Mikrodatorteknik 4p/5p

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

Lösningsförslag till Tenta i Mikrodator

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

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

Lösningsförslag till Tenta i Mikrodator

Support Manual HoistLocatel Electronic Locks

Tentamen PC-teknik 5 p

Datorteknik ERIK LARSSON

Föreläsningsanteckningar 3. Mikroprogrammering II

F5: Högnivåprogrammering

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

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

Beijer Electronics AB 2000, MA00336A,

F5: Högnivåprogrammering

Lösningar till tentamen i EIT070 Datorteknik

Övning 7. Timer, serieport

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

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

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

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

Tentamen PC-teknik 5 p Lösningar och kommentarer

Operativsystem - input/output, skydd, virtualisering

Lösningar till tentamen i EIT070 Datorteknik

Grundläggande datavetenskap, 4p

HF0010. Introduktionskurs i datateknik 1,5 hp

Adressrum, programmerarens bild

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

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

Tentamen. Datorteknik Y, TSEA28

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

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

4 grundregler. Minneshantering. Problemet. Windows minkrav

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

Maskinorienterad programmering

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

Tentamen PC-teknik 5 p

F4: Assemblerprogrammering

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

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


SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

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

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

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

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

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

Design av inbyggda system. Innehåll. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design. Hårdvarunära design TDD

Datorsystemteknik Föreläsning 7DAVA14

InstalationGuide. English. MODEL:150NHighGain/30NMiniUSBAdapter

Tentamen Datorteknik Y, TSEA28 Datum

Övning 6. Parallellport, timer


Design av inbyggda system

Lösningar till tentamen i EIT070 Datorteknik

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

Allt om datalogging och datakommunikation!

Digitala System: Datorteknik ERIK LARSSON

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

Föreläsning 4 IS1300 Inbyggda system

Dataöverföring på Parallell- och serieform MOP 11/12 1

Datakommunikation med IR-ljus.

Tentamen. Datorteknik Y, TSEA28

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

Digitalteknik och Datorarkitektur 5hp

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

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

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

2 UPPBYGGNAD OCH FUNKTION

Datorteknik ERIK LARSSON

Digital- och datorteknik

Digital- och datorteknik

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

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

Minnet från processorns sida Datorteknik

Application Note SW

Digitala projekt rapport

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

Installation- och montageanvisning Modbus RTU Datakommunikationsmodul med RS-485 Modbus-RTU gränssnitt HTC/T2 Inkoppling Några generella regler:

Maskinorienterad programmering

M7005 Fischer/Weisser mätstyrningsserver M9003 ersatt med IBR enheter

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

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

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Datorsystem Laboration 2: Minnesmappade bussar

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

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Polling (cyklisk avfrågning) Avbrott

Installation- och montageanvisning Modbus RTU Datakommunikationsmodul med RS-485 Modbus-RTU gränssnitt MF-HTT Inkoppling Några generella regler:

Product configurations Produire configuration Produkt konfigurationen Producto configuraciones Produkt konfigurationerna

Seriekommunikation. Ur innehållet: Nätverkstopologier Nätverksprotokoll Asynkron/synkron seriell överföring Programmering av USART-krets

Programmering av inbyggda system

Digitalteknik och Datorarkitektur

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

Tentamen. Datorteknik Y, TSEA28

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Transkript:

1 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 Page 1

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 Page 2

3 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/Oenhet 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 Page 3

Synkronisering av I/O Avbrott 1(2) Avbrott (Interrupt) En händelse på in/utporten som behöver underhållas, avbryter då ordinarie programflöde och exekverar en speciell service rutin genom att någon interruptingång på processorn aktiveras Avbrottsrutinen som betjänar en I/Oenhet exekverar asynkront i relation till huvudprogrammet. Startar interrupt rutin Startar interrupt rutin 7 Synkronisering av I/O Avbrott 2(2) Adress buss I/Oenheten 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/Oenheten att den accepterar avbrottet Interrupt Acknowledge. I/Oenheten identifierar sig nu genom att skicka en Vektor på databussen. IRQ I/O enheter Processorn servar I/Oenheten genom att utföra dataöverföringen till/från enheten. Processorn återgår till tidigare arbete. 8 Page 4 4

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 Busy Done 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. 10 Page 5 5

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/Oinstruktioner. 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/Oenheten 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 Page 6 6

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

8 Drivrutiner 3(3) 15 Exempel En ADomvandlare 1(3) ADC12 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/Dsida: BNC PCsida: 25pol DSub hane ADC12 levereras med programvara PicoScope och PicoLog samt drivrutiner för Visual Basic, C++, Delphi, Pascal och Windows (DLL). 16 Page 8

9 Exempel En ADomvandlare 2(3) Utdrag ur den tekniska dokumentationen för ADC12 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 ADC10 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 ADomvandlare 3(3) Utdrag ur den tekniska dokumentationen för ADC12 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 microseconds if a block was successfully collected. 18 Page 9

10 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) Programming model Base + 00 Control Base + 01 Status Base + 02 Transmitter data 7 6 5 4 3 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 1 0 ra te pe 1 =>Received byte available 1 => Transmit register empty 1 => Parity error 20 Page 10

11 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 (0255) 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 Page 11

12 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 *Return value = 1 if not ready BTST.B #1,1(A0) *Is the transmitter ready for a new item? BEQ exit *No it isn t MOVE.B D0,2(A0) *Write item to transmitter register exit: RTS 24 Page 12

13 Exempel på en enkel drivrutin 7(7) Vi har en serie av tre drivrutiner som döljer detaljer kring UARThå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 Page 13