Nu a fost un pic de timp liber și am decis să scrie un pic „off-program de“ articol.
Deci, din articolul precedent, știm că unele canale virtuale sunt utilizate pentru schimbul de date - „punctul final.“ Să ne uităm la modul în care are loc comunicarea.
Comunicarea prin USB
Luați în considerare modul în care datele sunt schimbate.
Inițiatorul schimbului este întotdeauna gazda. Aparatul nu poate începe să transmită date din proprie inițiativă. Gazdă alternativ (emnip, la intervale de 1 ms, dar „viteză mică“ a dispozitivului poate fi interogat de fiecare dată, și, de exemplu, o dată pe ciclu de votare 10) sondaje toate dispozitivul poduchennye. De fiecare dată sondaj, aparatul poate primi date de la gazdă și trimite datele către gazdă.
Sam schimbate pachete. Există mai multe tipuri standard de pachete. „Byte“ noi nu vom dezasambla pachete, dar atingeți pe această temă în partea practică.
Faptul că o parte a lucrărilor privind formarea și transmiterea de pachete (de exemplu, probleme de sincronizare, calcularea checksum, și așa mai departe. D.) va prelua periferice USB MC. Pentru cei care doresc să se îngropa imediat în biți și bytes pot recomanda pentru a citi secțiunea 8, oficial specificațiile USB 2.0
Atâta timp cât este suficient să se știe că există „pachete de date“ și mai multe tipuri de „pachete de servicii.“
USB și Plug and Play
Să ne uităm la asta cu dispozitivul nostru se va întâmpla în continuare, după ce o gazdă a determinat conectarea unui dispozitiv nou și este gata să înceapă schimbul de date. Avem nevoie de un timp scurt să se ridice la un nivel „înalt“ - nivelul sistemului de operare.
Faptul este că, în standardul USB acceptă conceptul de Plug and Play (plug and play). Acest concept implică faptul că utilizatorul are doar „lipi“ dispozitivul în portul corespunzător de pe PC. Apoi, sistemul de operare va detecta automat tipul de dispozitiv conectat, găsiți driverul potrivit pentru dispozitiv, configurați dispozitivul, și așa mai departe. D. (Deși este cu siguranță ideal :))
Pentru toate această frumusețe a lucrat, USB standard oferă unele cerințe generale pentru toate dispozitivele:
1. Fiecare dispozitiv cuprinde o „descriere proprie“ (descriptor de dispozitiv).
2. Există o anumită comună pentru toate dispozitivele USB, mecanismul care permite sistemului de operare pentru a citi Descriptorul de dispozitiv pentru a identifica dispozitivul pentru a afla caracteristicile sale.
Aceste lucruri (citiți descriptorul de dispozitiv, dispozitiv de identificare) este angajat într-un fel de serviciu de sistem de operare, care este responsabil pentru un suport USB de bază.
Odată ce dispozitivul este identificat și efectuat unele inițializarea inițiale, transferurile de servicii de control la un dispozitiv de driver care a datelor „fixe“ pentru tipul de dispozitiv (sau în mod specific pentru acest dispozitiv).
Ce se întâmplă în cazul în care serviciul nu poate găsi un „adecvat“ pentru driver-ul de dispozitiv știe totul :)
Acum ne întoarcem la nivelul nostru „scăzut“.
Introducere cu aparatul. Standard supradezvoltat.
În practică, același „punctul final zero“ este folosit pentru a citi descriptorul de dispozitiv și inițializarea primar. Există mai multe interogări furnizate (Cereri dispozitiv Standard) standard, care trebuie manipulate cu toate dispozitivele USB. Până în prezent, aici sunt câteva exemple de astfel de solicitări:
GET_DESCRIPTOR - primirea unei solicitări pentru descriptorul de dispozitiv. Această solicitare oferă informații suplimentare despre modul în care ar trebui să se ocupe de spate (în „magazine“ unitate un număr de descriptori diferiți, dar mai mult pe care mai târziu).
GET_CONFIGURATION - cerere de configurare curent.
Trebuie să se înțeleagă că cererea - nu este nimic mai mult decât o structură de date standardizate care conține codul de cerere (bRequest) și date suplimentare. Răspunsurile la fiecare dintre interogările, de asemenea, desigur, sunt standardizate.
Pe lângă cererile standard pe care dispozitivul „obligat“ să se mențină, se poate determina solicitările „lor“, care sunt specifice unui anumit dispozitiv (clasa dispozitiv).
Detaliu cu toate „bucătăria“ de cereri și răspunsuri, ne-am întâlnit în partea „practică“.
În același timp, pentru a arăta modul în care arată același mâner pentru dispozitivul va da un exemplu:
În timp ce aceasta este doar o ilustrație care arată ca un mâner, pentru a se îngropa în valoarea câmpului nu este în valoare de ea, vom face acest lucru în articolul următor.
Pe aceasta, am sugera o teorie care leagă gol și pentru a trece treptat la practica. Articolul următor va începe încet pentru a scrie cod.