USB bus, organizație internă de bus USB - dezvoltare de driver care recunoaște dispozitivul USB ca

Viteza maximă de transfer a magistralei USB 1.1 este de 12 Mbps (Full Speed). Aparatele letale utilizează o rată de bit redusă de 1,5 Mbps (Low Speed). Versiunea standard USB 2.0 acceptă o viteză de transfer fizic de până la 480 Mbps (viteză mare). Datele sunt transmise în serie printr-o pereche de conductori. Puterea pentru unele dispozitive este disponibilă pe conductori separate de alimentare și de împământare (pentru dispozitive cu consum redus de energie).







USB bus, organizație internă de bus USB - dezvoltare de driver care recunoaște dispozitivul USB ca

Programator de locuri de muncă, prin crearea unui sofer extern (nu este localizat pe placa de bază) dispozitivul USB este redus pentru a profita de software-ul drivere de sistem de interfață USB de comunicare de autobuz care are loc prin intermediul unor pachete numite URB (USB Cerere Block) pachete. Lucrul cu registrele controlorilor USB de pe placa de baza a devenit acum o multime de cercuri inguste de specialisti - dezvoltatori de placi de baza si sisteme de operare. Toți ceilalți dezvoltatori de dispozitive USB din sistemul de operare Windows sunt dotați cu o interfață software suficient de dezvoltată pentru driverele WDM care se ocupă de toate operațiile orientate spre hardware.

Organizarea internă a magistralei USB

Toate operațiunile de transfer de date prin magistrala USB sunt inițiate de gazdă. Perifericele nu pot iniția schimbul de date în sine, ele pot răspunde numai comenzilor gazdă. Luați în considerare schema generală de schimb de date prin magistrala USB.

Sistemul USB este împărțit în trei niveluri logice, cu reguli specifice de interacțiune. Dispozitivul USB conține interfața, componentele logice și funcționale. Gazda este de asemenea împărțită în trei părți: interfață, sistem și software. Fiecare parte este responsabilă numai pentru o anumită serie de sarcini. Interacțiunea logică și reală dintre acestea este prezentată în Figura 3.

USB bus, organizație internă de bus USB - dezvoltare de driver care recunoaște dispozitivul USB ca

Astfel, operațiunea de schimb de date între programul de aplicație și magistrala USB se realizează prin transferarea tampoanelor de memorie prin următoarele nivele:

· Nivelul software-ului client în gazdă - este de obicei reprezentat de driverul dispozitivului USB, permite utilizatorului să interacționeze cu sistemul de operare, pe de o parte, și driverul de sistem, pe de altă parte;

· Nivelul de software-ul sistemului de USB gazdă (USBD, Universal Serial Bus Driver) - gestionează dispozitivele de numerotare de pe autobuz, controlează distribuția și furnizarea de energie autobuz lățime de bandă, mânere solicită șoferilor personalizate;

• Controller de gazdă (HCD) - Convertește cererile I / O la structurile de date pentru care controlerul gazdă efectuează tranzacții fizice, funcționează cu registrele controlorului gazdă.

Nivelul software-ului client determină tipul de transfer de date necesar pentru efectuarea unei operații solicitate de programul de aplicație. După determinarea tipului de transfer de date, acest nivel trece la nivelul sistemului următoarele:

· Un tampon de memorie, numit tampon client;

· Un pachet IRP care indică tipul de operațiune solicitat. Driverul de sistem USB gestionează direct solicitarea.

Nivelul driverului USB este necesar pentru a gestiona resursele USB. El este responsabil pentru următoarele:

· Distribuția lărgimii de bandă a magistralei USB;

O tranzacție pe o magistrală USB este o secvență de schimb de pachete între o gazdă și un dispozitiv periferic în timpul căruia un pachet de date poate fi transmis sau recepționat. Atunci când software-ul client trece IRP la nivelul driverului de sistem, driver-ul USB le transformă într-una sau mai multe tranzacții cu magistrală și apoi transferă lista de tranzacții care rezultă la driverul de controler gazdă.

Driverul de sistem USB este alcătuit dintr-un driver USB și un driver de controler gazdă. Atunci când un strat de client transmite IRP sistem de nivel de suport USB, USB-conducător auto le convertește într-una sau mai multe tranzacții de autobuz, și apoi trimite lista rezultată de driver de controler gazdă tranzacție. Șoferul controlerului gazdă primește o listă de tranzacții de la driverul de sistem și efectuează următoarele acțiuni:

· Planifică executarea tranzacțiilor primite, adăugându-le în lista tranzacțiilor;

· Extrage următoarea tranzacție din listă și o transferă la nivelul controlerului gazdă al interfeței bus USB;

· Monitorizează starea fiecărei tranzacții până la terminarea acesteia.

Când toate tranzacțiile asociate cu pachetul de comandă sunt executate, nivelul sistemului notifică nivelul clientului cu privire la acest lucru.

Interfața gazdă a interfeței de interfață gazdă gazdă primește tranzacții individuale de la driver-ul gazdă (ca parte a sistemului USB) și le transformă în secvența de magistrală corespunzătoare. Ca rezultat, pachetele USB sunt transmise de-a lungul întregii ierarhii a hub-urilor fizice către dispozitivul USB periferic.







Nivelul inferior al dispozitivului USB periferic se numește nivelul de interfață al magistralei USB. Acesta interfețează cu stratul de interfață USB de pe partea gazdă și transmite pachetele de date de la gazdă către dispozitivul periferic în formatul specificat de specificația USB. Apoi trimite pachetele în sus - la nivelul dispozitivului USB logic.

Nivelul de mijloc al dispozitivului periferic al dispozitivului USB este denumit nivelul dispozitivului USB logic. Fiecare dispozitiv USB logic este reprezentat de un set de puncte finale, cu care stratul de sistem al gazdei USB poate interacționa. Aceste puncte sunt surse și receptoare ale tuturor fluxurilor de comunicații între dispozitivele gazdă și periferice USB.

Cel mai înalt nivel al dispozitivului USB periferic se numește nivelul funcțional. Acest nivel corespunde nivelului de suport client pentru gazdă. Din punctul de vedere al nivelului clientului, straturile inferioare sunt necesare pentru organizarea între acesta și punctele finale ale "canalelor de date" directe care merg până la nivelul funcțional. Și din punctul de vedere al schemei noastre, nivelul funcțional efectuează următoarele acțiuni:

Primește datele trimise de nivelul gazdă client de la punctele finale ale canalelor de date ale stratului de bază al dispozitivului USB logic;

· Trimite datele la nivelul gazdei clientului, trimițându-le la punctele finale ale canalelor de date ale stratului de bază al dispozitivului USB logic.

În mod logic, transferul de date între punctul final și software se face prin alocarea canalului și schimbul de date pe acest canal, iar din punctul de vedere al nivelurilor prezentate, transmiterea datelor este după cum urmează:

Un punct final face parte dintr-un dispozitiv USB care are un identificator unic și este destinatarul sau expeditorul informațiilor transmise prin magistrala USB. Pur și simplu, este un tampon care stochează mai mulți octeți. De obicei, este un bloc de date în memorie sau un registru al unui microcontroler. Datele stocate la punctul final pot fi fie date primite, fie date care așteaptă să fie transmise. Gazda are, de asemenea, un buffer pentru recepționarea și transmiterea de date, dar gazda nu are puncte finale.

Punctul final are următorii parametri principali:

Frecvența accesului la autobuz;

· Întârzierea serviciului;

· Lățimea de bandă necesară a canalului;

· Numărul punctului final;

· Metoda de manipulare a erorilor;

· Dimensiunea maximă a pachetului pe care obiectivul final îl poate primi sau trimite;

· Tipul parcelelor utilizate de punctul final;

· Direcția transferului de date.

Orice dispozitiv USB are un punct final cu un număr zero (Endpoint Zero). Acest punct permite gazdei să sune dispozitivul pentru a determina tipul și parametrii acestuia, pentru a inițializa și configura dispozitivul.

În plus față de punctul zero, dispozitivele au, de obicei, puncte de capăt suplimentare care sunt folosite pentru a face schimb de date cu gazda. Punctele suplimentare pot funcționa fie numai la primirea datelor de la gazdă (puncte de intrare, IN), fie numai la transferul de date către gazdă (puncte de ieșire, OUT).

Punctul zero al dispozitivului este disponibil după ce dispozitivul este conectat la magistrala, a fost pornit și a primit un semnal de resetare a magistralei. Toate celelalte puncte de sfârșit după pornire sau resetare sunt într-o stare nedefinită și nu sunt disponibile pentru funcționare până când gazda efectuează procedura de configurare a dispozitivului.

Specificația bus-ului definește patru tipuri diferite de transfer de date pentru obiectivele finale:

• Transferuri de control - utilizate de către gazdă pentru a configura dispozitivul în timpul conexiunii, pentru a controla dispozitivul și pentru a primi informații despre stare în timpul funcționării. Protocolul asigură livrarea garantată a acestor colete;

· Transferuri de date în masă - sunt utilizate atunci când este necesar să se asigure livrarea garantată a datelor de la gazdă către funcția respectivă sau de la funcție la gazdă, dar timpul de livrare este nelimitat;

• Transferuri întreruperi - utilizate când doriți să transferați pachete de date individuale de dimensiuni mici. Fiecare pachet trebuie trimis pentru o perioadă limitată de timp. Operațiunile de transmisie sunt spontane în natură și nu ar trebui să fie întreținute cu o rată mai mică decât este necesar de către dispozitiv;

· Transfer de izocronă (Transferuri izocrone) - sunt folosite pentru a comunica în „timp real“, atunci când fiecare interval de timp necesar pentru a transfera un număr fix de date, dar informațiile nu sunt garantate de livrare (de transmitere a datelor nu este repetarea, în caz de defecțiuni, poate fi pierderea de pachete).

O conductă este o conexiune logică între punctul final al dispozitivului și software-ul gazdă. Există două modele de canale:

· Un canal de flux (sau pur și simplu un flux, o conductă de streaming) este un canal pentru transmisia de date, a cărui structură este determinată de software-ul clientului. Fluxurile sunt utilizate pentru a transfera rețelele de date, transferul datelor prin întreruperi și transferul de date izocron. Fluxul este întotdeauna unidirecțional. Același număr de punct final poate fi utilizat pentru două canale diferite de intrare și ieșire. Transferurile de date în canalele de flux sunt supuse următoarelor reguli:

§ cererile pentru șoferi clienți pentru diferite canale, plasate într-o anumită ordine relativ una față de cealaltă, pot fi executate într-o ordine diferită;

§ cererile pentru un canal vor fi executate strict în ordinea în care sunt primite;

§ În cazul în care apare o eroare gravă în timpul executării unei interogări (STALL), firul se oprește;

• Conducta de mesaje sau conducta de control este canalul de transmitere a datelor, a cărui structură este determinată de specificația USB. Canalele de acest tip sunt bidirecționale și sunt utilizate pentru transmiterea parcelelor de control. Canalele de mesaje sunt strict sincronizate - specificația USB interzice procesarea simultană a mai multor solicitări: nu puteți începe să trimiteți un mesaj nou până când acesta nu este procesat. În cazul unei erori, transmiterea mesajului poate fi întreruptă de gazdă, după care gazda poate începe transmiterea noului mesaj.

Principalele caracteristici ale canalelor sunt:

§ Lățimea de bandă a canalului;

§ tipul de transmisie a datelor utilizat de canal;

§ caracteristicile care corespund punctului final: direcția transferului de date și dimensiunea maximă a pachetului.

Lățimea de bandă a magistralei este împărțită între toate canalele instalate. Banda alocată este alocată canalului și, dacă stabilirea unui nou canal necesită o bandă care nu este eliminată într-o distribuție deja existentă, cererea de alocare a canalului este respinsă. Arhitectura USB asigură tamponarea internă a tuturor dispozitivelor, iar cu cât este nevoie de mai multă lățime de bandă, cu atât este mai mare tamponul. Magistrala USB ar trebui să permită schimbul la o asemenea viteză încât întârzierea datelor din dispozitiv cauzată de tamponare să nu depășească câteva milisecunde.

Un canal de mesaj asociat unui punct final nu se numește Conductă de control implicită sau Conductă de control 0. Proprietarul acestui canal este USBD și este utilizat pentru a configura dispozitivul. Canalul principal de mesaje acceptă numai transmisii de control. Canalele rămase (numite canale client, Client Pipe) sunt create în timpul configurării dispozitivului. Proprietarii lor sunt drivere de dispozitiv. Prin canalele clientului, ambele fluxuri și mesaje pot fi transmise prin orice tip de transmisie.

Setul de canale client cu care rulează driverul de dispozitiv se numește interfața dispozitivului sau un pachet de canale client.







Articole similare

Trimiteți-le prietenilor: