Memory-mapped I/O (MMIO) (memoria mapata de intrare/iesire) foloseste aceleasi registre de adresare si aceeasi magistrala pentru memorie si dispozitive I/E.
Adresele si registrii dispozitivelor I/O sunt asociate cu valoarea adresei.Atunci cand o adresa este acceptata de CPU, se poate referi la o parte a memoriei RAM, dar se poate referi si la memoria dispozitivelor I/O. Deci, instructiunile CPU folosite pentru a accesa memoria pot fi utlizate si pentru accesarea dispozitivului.
Fiecare dispozitiv I/O monitorizeaza adress buss al CPU-lui si raspunde oricarui acces al CPU-lui de la o adresa atribuita dispozitivului,conectand data bus in registrul hardului dispozitivului dorit. Ca sa acomodam dispozitivele I/O, locatiile de memorie folosite de CPU trebuie sa fie ocupate de I/O si nu trebuie sa fie disponibile pentru memoria fizica.
Rezervarea poate fi temporara sau permanenta pentru aceste locatii de memorie.
-
In acest caz, o anumita parte a spatiului de adrese a procesorului este mapata la dispozitiv, si comunicatiile au loc prin citirea si scrierea directa la/de la zonele respective de memorie.
-
Aceasta tehnica este potrivita pentru dispozitivele care tranfera rapid cantitati mari de date, cum ar fi cardurile de grafica.
-
Aceasta tehnica poate fi folosita in acelasi timp sau in combinatie cu registrele traditionale. De exemplu, placi grafice inca mai folosesc registrele de informatii de control, cum ar fi setarea modului video.
Polling este procesul prin care computerul sau dispozitivul de control asteapta pentru un dispozitiv extern pentru a verifica disponibilitatea sau starea sa. De exemplu, atunci cand o imprimanta este conectata printr-un port paralel, calculatorul asteapta pana imprimanta a primit urmatorul caracter..
Interogarea este uneori folosita ca sinonim cu polling ocupat-asteptati. In aceasta situatie, atunci cand este necesara o operatie I / E, computerul nu face altceva decat sa verificati starea dispozitivului I / E pana cand este gata, moment in care dispozitivul este accesat. Cu alte cuvinte, calculatorul asteapta pana dispozitivul este gata. Polling se refera la situatia in care un dispozitiv este in mod repetat verificat pentru disponibilitatea sa, si daca nu este, computerul revine la o sarcina diferita.
Intr-un sistem simplu cu un singur scop, pollingul ocupat-asteptati este perfect adecvat in cazul cand nicio actiune nu este posibila pana cand se realizeaza accesul I / E, dar de cele mai multe ori acest lucru a fost in o consecinta a sistemelor de operare non-multitasking sau datorita simplitatii hardware.
Polling este adesea implicat cu hardware de nivel scazut foarte. Polling are dezavantajul ca, daca exista prea multe dispozitive pentru a verifica, timpul necesar pentru a le interoga poate depasi timpul disponibil pentru a deservi dispozitivul I / E
-
Port-mapped I/O (PMIO) realizeaza accesul dispozitivelor I/E printr-un set de registre speciale.
Acestea au o mapare rezervata pentru ele si uneori chiar si o intreaga magistrala sau instructiuni. Avantajul acestui mecanism este sesizabil la microprocesoarele cu spatiu de adresare limitat, ducand astfel la o gestionare mai buna a memoriei principale, dar se poate spune ca aduce un plus asupra usurintei cu care poate fi scris/citit un cod in limbaj de assamblare datorita instructiunilor dedicate.
Aceasta modalitate de a comunica cu dispozitivele este prin registre asociate cu fiecare port.
Registrele pot fi de marimi intre 1 si 4 octeti, si le putem clasifica astfel:
Registrul de date-in este citit de catre gazda pentru a obtine informatii de la dispozitiv.;
Registrul de date-out este scris de gazda pentru a trimite informatii spre iesire.
Registrul de stare are biti cititi de catre gazda pentru verificarea starii dispozitivului (inactiv, gata de intrare, ocupat, eroare, tranzactie completa, etc );
Registrul de control are biti scrisi de gazda pentru a trimite comenzi sau pentru modificarea setarillor dispozitivului (verificarea paritatii, lungime cuvant, sau full/ semi-duplex).
Acest subsistem are ca si conceptele fundamentale:
-
gestiune de intreruperi (interrupt handlers)
-
driveri de dispozitive (device drivers)
-
gestiune de catre sistemul de operare (kernel level mode)
-
gestiune de catre utilizator(user level mode)
-
principiile de intrare/iesire hardware (input/output hardware)
Bibliografie:
-
http://ro.wikipedia.org/wiki/List%C4%83_de_sisteme_de_operare#Timpurii_sau_importante_istoric
-
http://users.utcluj.ro/~baruch/book_ac/AC-Unitatea-IE.pdf
-
http://www.teach-ict.com/gcse_new/computer%20systems/operating_system_types/miniweb/pg6.htm
-
http://en.wikipedia.org/wiki/Memory-mapped_I/O
-
http://www.rasfoiesc.com/educatie/informatica/calculatoare/Gestiunea-sistemului-de-IO58.php
-
http://electronica07.curs.ncit.pub.ro/course/category.php?id=2
-
http://ebooks.unibuc.ro/informatica/Birotica/1.2_files/text.htm
-
http://en.wikipedia.org/wiki/Polling_%28computer_science%29
-
http://cristis.hi2.ro/computer/hardgen.php?no=1
-
http://vega.unitbv.ro/~romanca/AOC/Cap7-AOC-IntrareIesire.pdf
-
http://webhost.uoradea.ro/cpopescu/so/Cursul9.pdf
-
http://users.utcluj.ro/~baruch/book_ac/AC-Unitatea-IE.pdf
-
http://www.referatele.com/referate/informatica/online7/DISPOZITIVE-DE-INTRARE-IESIRE-referatele-com.php
Tudor Ioana
2. Device Drivere – Tastatura
-
Introducere
Conectarea unui dispozitiv de intrare/ieșire la un calculator presupune atât o conexiune hardware realizată fie printr-un cablu fie wireless cât și existența unui driver în sistemul de operare al calculatorului. Un driver reprezintă un program care are rolul de a servi drept interfață între sistemul de operare și componenta hardware. Concret, driverul are rolul de a traduce comenzile generice emise de alte programe în comenzi specializate, caracteristice fiecărui dispozitiv hardware. În sistemele DOS, driver-ele se regăsesc sub extensia .sys, în timp ce în mediul de dezvoltare Windows driver-ele au o extensie .drv.
Următoarea schemă arată modul de funcționare al driver-elor atât în modul de utilizator cât și kernel.
Fig 2.1.1
Win32 API – aplicație pe 32 de biți de programare a interfeței pentru sistemele de operare Windows care inițiază operațiile I/O prin intermediul Ntdll.
Ntdll - librărie de funcții care exportă ca funcții apeluri de sistem Windows precum NtReadFile
NtReadFile – apel de sistem de administrare I/O care creează un pachet de cerere I/O și care redirecționează respectivul pachet către driver-ul potrivit.
Sistem de administrare I/O – Subsistem care controlează și interacționează cu toate dispozitivele din sistem oferind rutine pe care driver-ele le pot apela pentru a determina sistemul de administrare I/O să insereze IRP-uri în lista de așteptare a dispozitivului asociat.
IRP – I/O Request Packet este trimis de sistemul de administrare I/O pentru a cere servicii de la un driver.
IoCallDriver – Rutină care trimite un IRP către driver-ul asociat cu dispozitivul obiect specificat
O dată ce s-a procesat cererea, rezultatul poate fi unul dintre următoarele:
Așteptarea unui alt proces – Driver-ul dispozitivului amână procesarea cererii pentru un alt moment; spre exemplu, pentru atunci când sunt disponibile resursele necesare sau pentru când dispozitivul nu este ocupat.
Trimiterea spre un port hardware – Driver-ul dispozitivului programează partea hardware astfel încât să execute operația specificată în cerere.
Trimiterea către driver-ul unui alt dispozitiv – Driver-ul dispozitivului solicitat trimite cererea către driver-ul unui alt dispozitiv. De exemplu, acest lucru se întâmplă dacă se schimbă parametrii cererii.
-
Tipuri de tastaturi [Bib1]
Tastaturile se pot clasifica în funcție de modul de organizare al tastelor sau după numărul de taste. Astfel, după modul de organizare al tastelor există:
-
Tastaturi Qwerty – denumite astfel după primele 6 caractere situate pe rândul de sus și anume Q,W,E,R,T,Y.
-
Tastaturi Dvorak-Dealey – vocalele sunt distribuite pe rândurile corespunzătoare mâinii stângi, iar consoanele cu frecventa cea mai mare de apariție sunt distribuite pe rândul de bază al mâinii drepte. Acest mod de aranjare are rolul de a îmbunătăți folosirea alternativă a mâinilor.
După numărul de taste, tastaturile se clasifică în:
-
Tastatură PC cu 83 de taste
Fig 2.2.1
Acesta reprezintă primul model de tastatură dezvoltat de IBM, care a fost livrat împreună cu primele calculatoare personale. Modul de organizare este tot de tip QWERTY, iar în partea stângă se află două coloane de taste funcționale. De asemenea, cursorul este controlat printr-o magistrală numerică ce este destinată introducerii de date. Tasta Enter este reprezentată printr-o săgeată orientată spre stânga. Modelul acesta de tastatură a fost considerat standard până în anul 1984, când au apărut calculatoarele AT.
-
Tastatură AT cu 84 de taste
Fig 2.2.2
După cum am menționat și mai sus, acest model de tastatură a fost lansat pe piață în anul 1984 o dată cu apariția calculatoarelor AT. Acest model conține o tastă suplimentară numită Sys Req (System Request) care este destinată aplicațiilor multiutilizator. Cu alte cuvinte, ea poate fi folosită pentru a comuta între sisteme de operare. Totodată, pentru usurință a fost mărita tasta Enter, ea fiind acum de dimensiune tip Selectric. S-a păstrat poziția tastelor funcționale iar tastele de deplasare, ca și in cazul anterior, au rămas combinate cu tastele numerice din partea dreapta.
-
Tastatură îmbunătățită cu 101 taste
Fig 2.2.3
Acest tip de tastatură poartă numele de Enhanced/Advanced Keyboard și se diferențiază față de modele anterioare, în primul rând prin numărul superior de taste. Astfel, în Statele Unite acest model a fost prevăzut cu 101 de taste, iar în rest, cu 102 taste. Astfel, a apărut un bloc separat de taste prevăzute cu săgeți, destinate deplasării cursorului. Tastele de control au fost dublate și distribuite atât în stânga cât și in dreapta, pentru ușurința manevrării lor. Au fost adăugate tastele funcționale F11 și F12, iar tot blocul a fost mutat pe un rând, deasupra tastelor alfanumerice. Cu toate acestea, tasta Enter a fost micșorată fapt ce a determinat inconveniențe în cazul lucrului cu viteză.
-
Tastatură Windows cu 104 taste
Fig 2.2.4
Deoarece sistemul de operare Windows conține o serie de funcții care nu erau prevăzute pe modelul de tastatură cu 101 taste, producătorii au adăugat trei taste noi și anume: o tastă care activează meniurile derulante și două taste Windows. Cele două taste care poartă emblema Windows sunt folosite pentru a lansa gestionarul de operații din Windows. Ele sunt poziționate în stânga și în dreapta, pentru comoditate.
-
Tastaturi multimedia și Internet
Fig 2.2.5 Tastatura Microsoft
Modelele noi de tastatură pot conține pe lângă tastele din modelele anterioare și taste pentru operații de clipboard (Mark, Copy, Paste, Delete, Cut, Move etc.), taste pentru utilitare (Word, Excel, PowerPoint, Calendar etc.), taste pentru Internet (Stop, Forward, Refresh, WWW etc.) , taste audio ( Pause, Forward, Play, Back, Volume, Mute etc.) ș.a.m.d.
-
Moduri de conexiune hardware între tastatură și calculator [Bib2]
Pentru a conecta o tastatură la calculator este nevoie de o linie pentru transferare a informațiilor, o linie de retur pentru semnalele de date ce totodată servește ca masă pentru celelalte circuite ale tastaturii, o linie pentru semnalul de ceas cu rolul de sincronizare între tastatură și calculator și două linii necesare pentru alimentarea tastaturii cu o tensiune continuă de 5V.
2.3.1 Conectorul DIN cu 5 pini
Cel mai întâlnit conector care îndeplinește cerințele enumerate mai sus este conectorul DIN cu 5 pini, care a fost ales de IBM pentru prima serie de calculatoare personale. Conectorul conține 5 pini poziționați în semicerc, ce ocupă jumătate din sector. De asemenea, este prevăzut cu o adâncitură ștanțată în marginea metalică de protecție ce are rolul de a asigura inserarea corectă a conectorului.
Fig 2.3.1 Pinii unui conector DIN
Pinul 1 – ceas de la tastatură (intrare)
Pinul 2 – date de la tastatură (intrare)
Pinul 3 – rezervat (ieșire)
Pinul 4 – masă (N/A)
Pinul 5 - +5VCC (ieșire)
Inițial, pinul 3 era folosit pentru transmiterea unui semnal de reinițializare a tastaturii. În prezent, semnalul de reinițializare nu este necesar întrucât driver-ul tastaturii conține o comandă soft de reinițializare. Ulterior, a fost lansată varianta conectorului DIN cu 6 pini, denumit și conector PS/2.
2.3.2 Conectorul PS/2
Denumirea acestuia provine de la calculatoarele PS/2 lansate de IBM în 1987. Cei 6 pini ai acestui conector sunt dispuși circular în jurul unui pin dreptunghiular, care impreună cu cele trei ghidaje din marginea de protecție are rolul de a împiedica inserarea greșită a conectorului. Întrucât versiunea cu 6 pini folosește aceleași semnale ca și DIN cu 5 pini, dar aranjamente diferite, trecerea de la un conector la altul se poate face utilizând un adaptor.
Fig 2.3.2.1 Pinii unui conector PS/2
Pinul 1 – date de la tastatură (intrare)
Pinul 2 – rezervat (N/A)
Pinul 3 – masă (N/A)
Pinul 4 - +5VCC (ieșire)
Pinul 5 – ceas (intrare)
Pinul 6 – rezervat (N/A)
Schema de cablare a unui adaptor care poate face trecerea de la DIN cu 5 pini la un DIN cu 6 pini este următoarea:
Fig 2.3.3.2 Schemă de cablare
2.3.3 Conectorul USB
Pe măsură ce calculatoarele au început sa fie dotate cu porturi USB și tastaturile au început sa utilizeze această interfață datorită, în primul rând, vitezei superioare de transfer. Prima tastatură USB a fost lansată în 1996 de firma Key Tronic. Întrucât conectoarele PS/2 erau deja foarte răspândite, a apărut un adaptor de la PS/2 la USB ce are următoarea schemă de cablare:
Conector PS/2
|
Conector USB
|
Funcție
|
4
|
1
|
VCC 5V
|
5
|
5
|
CLK/D+
|
3
|
4
|
GND
|
1
|
2
|
DATA/D-
|
Fig 2.3.3 Pinii unui conector USB
2.4. Structura și funcționarea unei tastaturi [Bib2,Bib3]
Orice tastatură are un chip propriu, spre exemplu, tastaturile PC vechi conțin un circuit 8048. Acest chip are rolul de a selecta o tastă utilizând o matrice de scanare (scan-matrix) ce este formată prin încrucișarea liniilor de adresă X și Y. De fiecare dată când se comută o tastă, intersecția liniilor duce la localizarea ei. Programul implementat în chip trebuie să diferențieze când o tastă este apasătă, neapăsată sau apasată de două ori.
În figură este prezentată schema de bază a unei tastaturi și interfața ei corespunzătoare pentru PC:
Fig 2.4.1 Structura unei tastaturi
Chip-ul tastaturii verifică mai întâi starea matricii de scanare pentru a determină starea de deschis, respectiv închis al fiecărui comutator, lucru care se realizează prin activarea succesivă a câtei unei linii X și identificarea terminalului Y corespunzător la care se recepționeză un semnal. Coordonatele X și Y identifică precis dacă o tastă a fost apăsată sau eliberată. Circuitul de comandă de care dispune tastatură are rolul de a determina care tastă a fost apăsată sau eliberată scriind apoi codul corespondent ei într-un buffer intern al tastaturii. Ulterior, se transmite respectivul cod printr-un cablu serial care este conectat la interfața tastaturii din PC.
Cablul exemplificat în continuare pentru conexiunea cu calculatorul este PS/2 care are asignarea pinilor specificată anterior și anume : Pinul 1 – ceas de la tastatură, Pinul 2 – date de la tastatură, Pinul 3 – rezervat sau resetare, Pinul 4 – masă, Pinul 5 - +5VCC. Pe linia corespunzătoare pinului 1 se transmit datele semnalului de ceas folosite pentru sincronizarea dintre tastatură și interfața ei de pe placa de bază și, prin urmare, facilitarea transferului de informație. Semnalul de reset, dacă este setat are rolul de a inițializa tastatură prin intermediul interfeței. Linia de date are rolul de a transfera informații între tastatura propriu-zisă și interfața corespunzătoare din PC.
În cazul tastaturilor cu corespunzătoare primelor calculatoare PC/XT, interfața de pe calculator este formată dintr-o serială simplă care acceptă doar un transfer serial al datelor de la tastatură. Prin urmare, este imposibil să se realizeze un transfer de date către tastatură. Cu alte cuvinte, circuitul 8048 nu poate accepta date de la interfața de pe PC și nu poate fi programat. Atunci când se recepționează un cod de la tastatură, interfața generează o întrerupere hardware prin IRQ1 care corespunde INT09h.
Tastaturile de tip AT un instalat un controler care înocuiește interfața serială de tastatură. Astfel, modelele mai vechi de tastaturi AT au chip-uri Intel 8042 iar modelele mai noi au chip-uri Intel 8741/8742. Controlerul permite, așadar, programarea tastaturii făcând posibil un transfer de date bidirecțional între tastatură și PC: chip-ul din tastatură poate recepționa direct comenzi de control, cum ar fi setarea ratei de repetiție a tastaturii.
2.5 Programarea tastaturii prin porturile I/O [Bib3,Bib4,Bib5]
2.5.1 Registre
Pentru a programa direct tastaturile AT se pot utiliza două adrese de porturi și anume 60h și 64h prin intermediul cărora se poate accesa buffer-ul de intrare, buffer-ul de ieșire și registrele de control ale controler-ului de tastatură. Adresele corespunzătoare registrelor sunt următoarele:
Port
|
Registru
|
Read(R)/Write(W)
|
60h
|
Buffer de ieșire
|
R
|
60h
|
Buffer de intrare
|
W
|
64h
|
Registru de control
|
W
|
64h
|
Registru de stare
|
R
|
Registrul de stare este de tip read-only și este utilizat pentru a determina starea curentă a controlerului. El poate fi citit printr-o instrucțiune IN referitoare de la adresa de port 64h și are structura din Fig 2.5.1.
Bitul PARE are rolul de a indica dacă eroarea de paritate a apărut în timpul transferului ultimului SDU de la tastatură sau de la dispozitivul auxiliar. Bitul TIM este utilizat pentru a verifica dacă apare o eroare de time-out, astfel încât dacă acesta are valoarea 1 și tastatura nu răspunde unei cereri într-un anumit interval de timp înseamnă că există o eroare de time-out. Dacă se întâmplă acest lucru atunci se cere prin intermediul comenzii Resend a controlerului retrimiterea octetului de date. Bite-ul AUXB are valoarea 1 dacă există date de la mouse disponibile în buffer-ul de ieșire. Atunci când procesorul citește aceste date bitul AUXB/OUTB devine 0.
Fig 2.5.1 Structura unui registru de stare
Pentru citirea buffer-ului de ieșire se folosește o instrucțiune IN însă, de regulă, este bine să se verifice dacă controlerul a transferat cu succes informația în buffer-ul de ieșire. Acest lucru se poate face prin realizarea unui test propriu al tastaturii și așteptarea rezultatului. Dacă CPU nu a citit ultimul caracter depus în buffer-ul de ieșire, atunci tastatura nu poate transfera un caracter nou prin portul de intrare către controler.
Bitul INPB indică dacă mai există un caracter în buffer-ul de intrare al controlerului sau dacă CPU are posibilitatea de a permte intrarea unui alt caracter. Bitul C/D stabilește dacă ultimult octet transferat de CPU prin portul de adresă 64h a fost de comandă sau dacă a fost un octet de date transmis prin portul de adresă 60h. Biții KEYL și SYSF indică dacă testul propriu al tastaturii a fost trecut cu succes sau nu.
În concluzie, un exemplu de instrucțiune ce citește registrul de stare este:
IN AL, 64h ;instrucțiunea IN accesează portul de adresă 64h și mută
conținutul în registrul AL
Dostları ilə paylaş: |