Lo Standard USB - Home page sito web prof. Cleto Azzani
Transcript
Lo Standard USB - Home page sito web prof. Cleto Azzani
TESINA DI SISTEMI STUDIO DELLO STANDARD USB ALUNNI : IGOR LOMBARDI, ALESSANDRO RONCHINI CLASSE : 5° BZ ANNO:2002/03 PROFESSORE : CLETO AZZANI 1 Figura 1 = connettore seriale RS232C Figura 2 = connettori USB (maschio e femmina) Figura 3 = porte USB del computer 2 STANDARD USB Affrontare dall'inizio lo studio dello standard USB può risultare spaventoso.Le specifiche USB 2.0 formate da 650 pagine possono scoraggiare chiunque anche solamente dopo aver visto la dimensione dello standard. Questo è solo l'inizio di una lunga lista di standard USB. Ci sono classi standard USB come ad esempio classi di specifiche HID(Human interface device/dispositivi interfacciati a portata d'uomo) che dettagliano il funzionamento comune dei dispositivi (tastiere, mouse, etc...). Se stai progettando un nodo USB, allora hai 3 possibilità di scelta per gli standard delle interfacce scelte nei nodi di controllo. Nessuno di questi è dettagliato nella versione 2.0. La novità è che non abbiamo bisogno di leggere l'intero standard. Alcuni di questi capitoli agiscono fuori dal marketing ed altri mirano a una bassa connessione su vari strati, normalmente si accendono e si spengono tramite il nodo USB oppure si copiano mirando allo sviluppo del nodo nel hub. Lascia che ti portiamo in un piccolo viaggio attraverso vari capitoli nelle specifiche del USB 2.0, brevemente guardiamo le introduzioni del testo nuovo: 1)Introduzione = introduce gli obbiettivi e gli scopi del USB. La maggior parte delle informazioni importanti che leggiamo in questo capitolo fanno riferimento alle specifiche di classi dei dispositivi USB. Non necessita la lettura di questo capitolo. 2) Termini ed abbreviazioni = in questo capitolo che è auto spiegato necessita uno studio di qualsiasi standard. 3)Back ground = Specifica le mete USB che sono "plug n play" esse sono semplicemente rivolte all'utente finale (non allo sviluppatore). Introducono una gamma di low,full,high speed con un insieme di liste marketing. Perciò non c'è bisogno di leggere questo capitolo. 4) Architettura "overview" = Questo è il punto per cominciare a leggere le descrizioni del sistema USB comprendenti la tipologia,velocità dei dati,tipi di flusso dei dati,specifiche elettriche basilari,ecc. 5) I modelli di flusso di dati USB = Questo capitolo illustra le modalità di flusso dei dati USB. Introduce vari termini come l'endpoint, ed i pipes, poi spende la maggior parte del capitolo sui tipi 3 di dati di flusso (Control, Interrupt; Isochronuos and Bulk). Mentre è importante che si conosca ciascun tipo di trasferimento dati e le sue proprietà è piuttosto pesante per la prima lettura. 6) Meccanica = Questo capitolo fornisce i dettagli meccanici per la realizzazione dei tipi di connettori USB. Le informazioni importanti hanno un connettore di tipo A che si trova nel downstream, ed un connettore di tipo B nel upstream. Perciò è impossibile collegare i cavi sulle porte upstream. Tutti i cavi high speed. Mentre qualsiasi altro cavo a low speed deve essere collegato all'apparecchio. Un rapido sguardo ai connettori che abbiamo saltato in questo capitolo a meno che tu sia un costruttore di cavi e connettori USB. I progettisti di circuiti stampati possono trovare degli esempi in questo capitolo. 7) Elettrica = Questo capitolo si occupa della segnalazione elettrica a basso livello include i tempi di linea,tempi di salita e di discesa, le specifiche di driver/receiver, codifica a livello di bit dell'encoding bit stuffing, ecc. Le parti importanti di questo capitolo sono l'identificazione della velocità del dispositivo utilizzando un resistore per polarizzare sia la linea di dati sia i dispositivi di potenza. A meno che tu sia un progettista di USB trasceivers a livello di silicio puoi sorvolare questo capitolo. I datasheet di un buon dispositivo USB dettagliano il valore corretto delle resistenze di determinazione di cui tu hai bisogno per evitare le riflessioni. 8) Stratificazione per protocollo = adesso ci avviamo a studiare i strati di controllo. Questo capitolo descrive i pacchetti USB a livello di byte che includono il SYNC , PID , indirizzi , punti di fine , CRC. Una volta che è stato preso e ottenuto e consolidato ci si muove sulla stratificazione di protocollo nei pacchetti USB. La maggior parte dei sviluppatori non vede questi protocolli a basso livello perché ci pensano i loro dispositivi.Tuttavia una conoscenza superficiale può servire 9)Come si costruisce un dispositivo USB = Questo è il capitolo usato più frequentemente nelle specifiche complete è l'unico che può dare fastidio ed essere impegnativo da studiare. Questo capitolo dettaglia sull'enumerazione del BUS i codici di richiesta che fanno parte dei più comuni protocolli, il programmatore deve averli sott'occhio. In questo capitolo è obbligatorio leggere i dettagli 4 10) Hardware e software del nodo USB = Questo capitolo è riferito alle emissioni sul nodo USB. Questo include la generazione dei frame e dei microframe, le specifiche del controllore del nodo, ed i meccanismi del software, dei modelli del driver USB. A meno che tu non sia un progettista salta questo capitolo. 11) Specifiche Hub = specifica come lavora l'hub, includendo le configurazioni del hub USB, e la suddivisione dei dati . A meno che tu non sia un progettista di USB puoi saltare questo capitolo. Cosi adesso possiamo iniziare a leggere le parti degli standard rilevati per i nostri bisogni.Se tu sviluppi i driver(software)per periferiche USB allora avremo bisogno per i capitoli letti. 4-Architettura overview 5-I modelli di flusso di dati USB 9-Come si costruisce un dispositivo USB 10-Hardware e software del nodo USB I progettisti di periferiche hardware hanno solo bisogno di questi capitoli letti. 4-Architettura overview 5-I modelli di flusso di dati USB 6-Meccanica 7-Elettrica Adesso cominciamo a guardare: 1- La maggior parte di noi è qua per sviluppare le periferiche USB. 2- Per capire e leggere uno standard e poi non avere idea di come implementare il dispositivo. Cosi nei successivi sette capitoli focalizziamo le parti rilevanti di cui abbiamo bisogno per sviluppare un dispositivo USB. Questo ci permette di usare le informazioni USB perciò potremo fare una ricerca ulteriore sulle informazioni specifiche per la nostra applicazione.Lo standard USB 1.1 è abbastanza complesso prima di passare allo standard USB 2.0.Per aiutarti con la comprensione dei principi fondamentali dell'USB, noi omettiamo molte aree specifiche nei dispositivi di velocità alta dell'USB 2.0.Una volta che hai capito il concetto del'USB 1.1,sarà più facile poi passare al 2.0. INTRODUZIONE DELL'USB (UNIVERSAL SERIAL BUS) La versione dell'USB 1.1 supporta due velocità: full (12Mbit/s) e low speed (1.5 Mbit/s). La modalità di 1.5Mbit/s è più lenta e meno suscettibile all'EMI(Electric magnetic interference), riducendo i costi degli anellini di ferrite e riducendo i costi dei componenti di qualità. Per esempio, i 5 quarzi possono essere rimpiazzati dai risonatori economici. L'USB 2.0 che sta diffondendosi sul computer desktop oggi giorno ha ambizioni di raggiungere i 480 Mbit/s. I 480 Mbit/s sono conosciuti come l'high speed per l'usb,possono competere con il firewire del serial BUS. Velocità USB - 480 Mbit/s - High speed - 12 Mbit/s - Full speed - 1.5 Mbit/s - Low speed L' USB è controllato dal nodo. Ogni BUS può avere un solo nodo. Le specifiche in se stesso, non supportano qualsiasi forma di presunta possibilità. Tuttavia le specifiche (on the go)si trovano sullo standard USB 2.0, hanno un'introduzione alla trattativa del nodo protocollare che permette a due dispositivi di negoziare il ruolo nel nodo. Esso è puntato a limitare un singolo punto di connessione uguale come un telefono mobile e personal organizer.Il nodo USB è responsabile per la gestione delle transazioni e schedulazioni della larghezza di banda.Il dato può essere inviato alla transazione negli stessi metodi usando il protocollo "tokenbased". Nella visione della tipologia USB che è alquanto limitata. La proposta in origine sull'USB era di ridurre la quantità di cavi sul retro del Pc. Molti possessori del computer Apple dicono che l'idea venne dalla Apple desktop BUS dove la tastiera e il mouse e altre periferiche possono essere connesse assieme usando un cavo.Comunque l'USB dispone di una tipologia a stella ordinata, questa 10Base T ethernet. Questo impone a chi usa un hub qualche volta, che aggiunge una spesa maggiore, più box sul tuo desktop e più cavi.Tuttavia non è tanto cattivo come sembra.Molti dispositivi hanno un hub USB integrato all'interno.Per esempio, la tua tastiera può contenere un hub che è connesso al tuo computer.Il mouse e altri dispositivi come la macchina fotografica digitale può essere facilmente al retro della tua tastiera I monitor invece sono un altra periferica su un elenco che comunemente in cui hanno hub incorporato. Questi dispongono di una topologia ha stella ordinata, piuttosto che ha (daisy chained) con alcuni risultati benefici. Prima di tutto l'alimentazione di questa apparecchiatura può essere monitorata e si interrompe se si verifica una condizione di eccesso di corrente senza intervenire sulle altre apparecchiature USB. Possono essere supportati i dispositivi che lavorano in high,low,full speed, con il filtraggio del hub le transazioni di high e full speed non vengono ricevute dai dispositivi di low speed. Fino a 127 dispositivi possono essere connessi ad un BUS USB in qualsiasi istante. Abbiamo bisogno di più apparecchiature? – Semplicemente aggiungiamo un'altra porta/nodo. Mentre i primi nodi di USB avevano due porte, adesso la maggior parte dei costruttori che a questo limite sta introducendo 4 o 5 porte esterne. Con una porta all'interno per dischi fissi. I primi nodi 6 avevano un controller USB e così ambo le porte condividevano la stessa banda passante USB. Poiché le richieste di banda passante sono in aumento, noi stiamo cominciando a vedere schede multi-porte con due o più controllori che gestiscono i canali individuali. I controllori dei nodi USB hanno le loro proprie specifiche. Ci sono due tipi di lnterfaccia e di specifiche per i controller USB 1.1, la specifica UHCI (Universal Host Controller Interface) sviluppato da Intel che pone maggiore enfasi sul software (Microsoft) e permette di avere un hardware più economico. L’OHCI (Open Host Controller Interface) sviluppato dalla Compaq, Microsoft e National semiconductor e Lucent che pone più enfasi sul hardware(intel) che rende il software semplice. Con l'introduzione del USB 2.0 si è dovuta introdurre una nuova specifica per i controller del nodo,cosi è nata L'EHCI (Enanced Host Controller Interface) ha avuto una significativa collaborazione la lntel la Compaq, NEC, Microsoft e la Lucent così questa sarà una buona speranza che essi si uniscano insieme per fornire una interfaccia standard che permetterà di implementare un solo driver all’interno del sistema operativo.USB come il suo nome suggerisce è un BUS seriale. E usa 4 fili schermati di cui due sono di potenza (+5v & GND). I rimanenti due sono una coppia differenziale del segnale che costituisce il dato. E utilizzano uno standard NRZI (No Return to Zero Invert).Per spedire i dati su un campo sync per sincronizzare i clocks del nodo a quello del ricevitore. USB supporta il plug’n’plug con i driver caricati e scaricati dinamicamente. L’utente inserisce semplicemente il dispositivo sul BUS.Il nodo scoprirà questa aggiunta interroga il nuovo dispositivo inserito e carica il driver appropriato in questo tempo vediamo sul desktop una clessidra che lampeggia sullo schermo in attesa che il driver sia installato. L’utente finale non si preoccupa di termini come IRQs, indirizzi della porta, riavviare il computer. Una volta che l'utilizzo è finito, si può semplicemente tirare via il filo e il nodo scoprirà l’assenza del dispositivo e automaticamente scaricherà il driver. Il caricamento del driver appropriato usato per il PID/VID formato da una combinazione (PRODUCT ID/VENDOR ID) . Il VID è alimentato dal Forum dei progettisti del USB lo forniscono a pagamento perciò è un punto a sfavore del USB. Le ultime informazioni su tasse possono essere trovate sul sito Web dei progettisti USB. Altre organizzazioni forniscono uno standard extra per il VID per attività non commerciali per esempio l’insegnamento, ricerca, sviluppo per hobby. Il forum dei progettisti USB deve fornire ancora questo servizio. Se in questi casi desideriamo usare uno standard assegnato dal progettista per il nostro sistema. Per esempio più progettisti di microcircuiti hanno una combinazione di VID/PID che possiamo usare per i nostri chips perchè sappiamo della loro inesistenza come circuiti commerciali. Invece altri progettisti di microcircuiti possono venderlo come PID e usarlo con il loro VID per i dispositivi commerciali. Un'altra caratteristica di nota per l’USB, è il modo del 7 trasferimento. L’USB supporta i trasferimenti di controllo, di massa, di interrupt, o sincronizzati . Mentre noi guardiamo altri metodi di trasferimento sincronizzato che consentano al dispositivo di riservare una determinata banda passante o una latenza garantita. Questo è ideale per applicazioni audio video dove una congestione del sistema può causare la perdita di dati e di frame. Ciascun modo di trasferimento dati fornisce al progettista degli accessi per delle aree, per esempio rivelazione e recupero di errori, larghezza di banda e latenza garantita. CONNETTORI Ogni dispositivo ha una connessione upstream al nodo e ogni nodo ha una connessione downstream al dispositivo. Le connessioni upstream e downstream non sono meccanicamente intercambiabili, cosi elimineranno connessioni loopback illegali sul hub. Per esempio una porta downstream connessa da una porta downstream. Ci sono comunemente due tipi di connessioni, chiamate tipo A e tipo B che vediamo nella figura sotto. Il tipo di connettore A viene usato nel upstream. La presa di tipo A si può trovare tipicamente su nodi ed hub. Per esempio le prese di tipo A sono in comuni con il computer, schede conduttrici ed hub. Il tipo B è sempre connesso al downstream e di conseguenza la presa di tipo B si trova sul retro dei dispositivi. E interessante scoprire come fissare un cavo dal tipo A al tipo A è un genere di ordine per gli array, questi USB si trovano nei negozi di computer. Questo è in contraddizione con le specifiche USB. E’ l'unico dispositivo di chiusura di tipo A è formato da ponti che usiamo per connettere insieme due computer. Gli altri cavi proibiscono estensioni del cavo USB che si chiudono alla fine (il tipo A o il tipo B), ed una presa sull'altra. Questi cavi violano la lunghezza dei cavi USB. USB 2.0 includono una resistenza irregolare nei mini-USB nel connettore B. I dettagli su questi connettori possono essere trovati in Mini-B (Connector Engineering Change Notice). Dalle argomentazioni precedenti sui mini connettori vengono una serie di apparecchiature elettroniche miniaturizzate per esempio telefoni mobili e organizer. Il tipo di connettore per la corrente di tipo B è troppo grande per essere facilmente integrato in queste apparecchiature. 8 Solo recentemente è stato rilasciato sulle specifiche “on the go” che aggiungono funzionalità pari pari al USB. Questi nodi USB sono introdotti in un telefono mobile e organizer e perciò hanno incluso una specifica per il mini a di chiusura, il mini A ricevitore e poi il mini AB ricevitore. Numero di pin Colore cavo Funzione 1 Rosso V BUS (5 volt) 2 Bianco D- 3 Verde D+ 4 Nero Massa Gli standard interni dei cavi a colori sono usati nel USB, essendo più facili da identificare, collegano un fabbricante ad un altro fabbricante. Lo standard specifica i vari parametri elettrici per i cavi. Sono interessanti da leggere i dettagli originali del USB che sono inclusi nelle specifiche 1.0. Capiamo le specifiche degli attributi elettrici, ma sono i paragrafi 6.3.1.2 che suggerirono il colore raccomandato per i vari cavi del USB. USB 1.1 e USB 2.0 sono rilasciati per raccomandare il nero, il grigio,oppure il trasparente. I progettisti di schede PCB arrivino al capitolo 6 per gli standard footprints e l’output pin . ELETTRICA A meno che tu sia un progettista a livello di silicio per dispositivi di trasferimento del USB o nodihub di USB, non c'è quello di cui tu hai bisogno di sapere circa le specifiche elettriche nel capitolo 7. Noi indirizziamo brevemente i punti essenziali qui. Come noi abbiamo discusso, l’USB usa trasmissioni differenti per dati. Questo usa un NRZI che è codificato e assicura transizioni adeguate per i dati. Su low e full speed i dispositivi, lo stato “1” è trasmesso sul D+ a 2.8V con 15K di resistenza e mette la terra D - sotto 0.3V con un 1.5K di resistenza a 3.6V. Invece lo stato “0” sull'altra parte è un D- più grande di 2.8V e un D+ a meno di 0.3V con le stesse resistenze appropriate pull up/down. Il ricevitore definisce la differenza”1” per D+ 200mV più grande di D-; e un differenza “0”come D+ 200mV meno che D-. La polarità del segnale è invertita che dipenderà dalla velocità del BUS è. Perciò i termini ‘j’ e ‘k’ sono usati per i livelli di logica. In low speed un ' J' state è differente da 0. In high speed lo stato è differente da “1”. Il trasmettitore USB ha differenti entrambi sui singoli output. Gli stati del BUS indicano i singoli segnali finiti su D+, D- o entrambi. Per esempio le (single ended zero) SEO possono essere usate per voler dire che il dispositivo di reset si azzera se tiene per più di 10msec. Il SEO è generato da D+ e D- tenuti ambedue bassi. Il Single Ended e le 9 differenze del output sono importanti per notare se stai usando un trasmettitore o un FPGA come sul tuo dispositivo USB. Noi possiamo ottenere con un campionamento solo le differenze del output. La full/low speed del BUS ha un'impedenza caratteristica di 90 ohm +/- 15%. Se è quindi importante osservare il datasheet quando abbiamo selezionato le impedenze delle resistenze in serie che vengono accostate al D+ e D-. Qualsiasi buono datasheet specifica questi valori di tolleranze. Il modello high speed (480Mbits/s) usa 17.78mA di corrente costante per segnalare la riduzione del rumore. IDENTIFICAZIONI DI VELOCITA’ Un dispositivo USB deve indicare la high speed di linea sia sul D+ che sul D- a 3.3 volt. Un dispositivo di high speed, raffigurato sotto si usa per formare una resistenza che è collegata a D+ è specificato come un dispositivo di full speed. Queste resistenze pull-up alla fine del dispositivo sono anche usate dal nodo del hub che scopre la presenza di un dispositivo connesso sulla porta. Senza una resistenza pull-up l’USB presume che non ci sia nulla di connesso sul BUS. Molti dispositivi hanno una resistenza costruita con dentro del silicio che può essere accesa o spenta sotto controllo del firmware, in aggiunta richiede una resistenza esterna. Per esempio il semiconduttore della Philips ha una tecnologia “softconnect Tm”. Quando si connette per primo sul BUS, questo permette al microcontrollore di siglare le funzioni del dispositivo USB, esso è chiuso prima sulla resistenza pull-up della velocità di identificazione, indicando che un dispositivo è già attaccato al BUS. Se la resistenza pull-up è connessa al VBUS, allora questo indicherà al dispositivo che è stato appena connessa sul BUS appena prima che sia introdotta la chiusura del BUS. Il nodo può tentare di azzerare(reset) il dispositivo e poi si informerà per la descrizione del microprocessore quando non ha ancora iniziato la funzione dell’USB sul dispositivo. Altri venditori di Semiconduttori come la cypress che usano una resistenza programmabile per la “re-numerazione TM”. Gli scopi dei dispositivi EZ/USB dove un dispositivo può essere enumerata per esempio i campi “In” programmabili disconnessi sul BUS sotto il controllo del firmware, sono enumerati come un altro differente dispositivo. Molti dei dispositivi EZ/USB non hanno un qualsiasi flash o OTP ROM per immagazzinare il codice. Ci sono delle connessioni bootstarped.. 10 Noi osserviamo nella figura che non hanno incluso un identificazione dei modelli di high speed. Il dispositivo di high speed cominciano a connettersi come un dispositivo di high speed (1.5k a 3.3V). Una volta che esso è stato attaccato ad ha una high speed durante il reset e stabilirà una connessione high speed se sarà sostenuto dal hub. Se il dispositivo opera in high speed, poi la resistenza pull-up è rimossa per bilanciare la linea. Il dispositivo soddisfa lo standard USB 2.0 non richiede il supporto del modello high speed. Questo permette al dispositivo più conveniente di essere prodotto in velocità che non sono critiche. Questo vale anche per il caso di un dispositivo USB1.1 a high speed che non richiede il sostegno della full speed. Comunque un dispositivo di high speed non deve sostenere una low speed. Solo il supporto per il modello full speed ha bisogno di connettere prima, quando il modello sarà successivamente negoziato più tardi. Un dispositivo soddisfa lo standard USB 2.0 nel downstream per fronteggiare (l’hub del nodo) che deve sostenere tutti i tre modi: high speed, full speed, low speed. POTENZA(VBUS) Uno dei benefici del USB sono dispositivi alimentati dal BUS - apparecchiature che ottengono la potenza necessaria direttamente dal BUS e non richiedono nessun plug esterno o di cavi addizionali. Tuttavia molti sottovalutano questa opzione. Un dispositivo USB specifica il suo consumo di potenza espresso unità pari 2mA per la descrizione della configurazione che noi esaminano più tardi in dettaglio. Un dispositivo non può aumentare il suo consumo di potenza, maggiore a ciò che è specificato durante l’enumerazione, anche se ciò riduce la potenza esterna. Ci sono tre classi di funzioni USB: - Funzioni dell’alimentazione del BUS low-powered. - Funzioni dell’alimentazione del BUS high-powered. - Funzione self-powered (autoalimentato). 11 Funzione dell’alimentazione del BUS low-powered richiede tutta la sua potenza da VBUS e non può richiedere più di una unità di carico. Le specifiche di USB definiscono l’unità di carico pari a 100mA. La funzione di alimentazione del BUS low-powered deve essere progettata per lavorare fino a un minimo di tensione VBUS di 4.40V e fino a un massimo di tensione di 5.25V misurata al plug di upstream del dispositivo. Per alimentare i dispositivi a 3.3V, sono obbligatori dei regolatori LDO. La funzione dell’alimentazione del BUS high-powered, richiede tutta la sua potenza al BUS e non può assorbire più di una unità di carico finche esso non è stato configurato, dopo di che può assorbire fino a 5 unità di carico (500mA Max) purché questo sia richiesto dal suo descrittore (contenuto del driver). La funzione dell’alimentazione del BUS high-powered deve avere la capacità di essere percepita e deve enumerare a un minimo di 4.4OV. Quando funziona a pieno carico, ci deve essere una VBUS compresa fra un minimo di 4.75 V e un massimo di 5.25V. Ancora una volta, queste misure sono prese dal plug di upstream. La funzione self-powered può richiedere fino a 1 unita di carico del BUS, e assorbire il resto della potenza da una sorgente esterna. Se questa sorgente esterna va in avaria, si deve prevedere che l’assorbimento non debba superare una unità di carico del BUS. Le funzioni self-powered sono più facili da progettare se richiedono poca potenza altrimenti complicano tutto il lavoro. L’unità di carica (1) alimentata dal BUS, permette la rivelazione ed enumerazione di dispositivi senza che sia applicata l’alimentazione secondaria. Nessun dispositivo di USB, che sia auto alimentato o che sia alimentato dal BUS può alimentare il VBUS sul connettore upstream. Se il segnale VBUS si disattiva, l'apparecchiatura ha una tempo di 10 secondi può rimuovere la potenza dalle resistenze di pull-up D+/D- usate per la identificazione veloce. Le altre considerazioni sul VBUS sono l’irruzione di corrente che deve essere limitata. Questo è spiegata nel paragrafo 7.2.4.1 delle specifiche USB. L’irruzione di corrente dipende dalla capacità presente sul tuo dispositivo tra VBUS e massa. Le specifiche stabiliscono che la massima capacità sia pari a 10uF. Quando si disconnette l'apparecchiatura dopo che la corrente fluisce attraverso il cavo induttivo del USB, una elevata sovratensione si può manifestare sul lato aperto del cavo, per prevenire questo si richiede una capacità minima di disaccoppiamento sul segnale VBUS. Per il tipico dispositivo “BUS powered”, non può portare via più di 500mA che non è irragionevole. Qual è la complicazione? Forse la modalità suspend mode? SOSPENSIONE DELLA CORRENTE La modalità “suspend mode” è obbligatoria su tutte le apparecchiature. La massima sospensione di corrente è proporzionale al carico unitario. Per un’unità di carico (la default) la corrente massima è 500uA. Questo include la corrente proveniente dalle resistenze pull12 up sul BUS. Sul HUB sia D- che D+ hanno resistenze di pull-up di 15Kohm. Per gli scopi di consumo di potenza, la resistenza pull-down sul dispositivo risulta in serie con la resistenza da 1.5Kohm pull-up, dando origine un carico totale di 16.5K ohm con una Vterm tipica 3.3v. Perciò questa resistenza assorbe 200uA. Un altra considerazione per molte apparecchiature è il regolatore a 3.3V. Molte delle apparecchiature USB funzionano a 3.3V. Il (PDI-USB-D11) è un esempio. I regolatori lineari sono tipicamente inefficienti perché hanno una corrente media dell'ordine di 600uA, perciò si richiedono regolatori più efficienti e quindi più costosi. Nella maggior parte dei casi si deve anche rallentare o fermare il clock su i microcontrollori per rientrare nel limite dei 500uA. Molti sviluppatori chiedono nel Forum dei progettisti USB, quali sono le complicazioni che si incontrano superando questo limite? é noto che la, la maggior parte dei nodi e degli HUB non hanno l'abilità di scoprire un sovraccarico di questa dimensione e perciò se il tuo dispositivo assorbe 5mA o anche 10mA,non sarà in grado alla fine della giornata di accorgersi che stai violando le specifiche di USB. Tuttavia questa operazione è normale, se si tenta di eccedere i 100mA o il carico massimo consentito, c’è da aspettarsi che l’HUB o il nodo riveli il sovraccarico e disconnetta l’apparecchiatura, nell’ interesse dell'integrità del BUS. Chiaramente questi problemi di progetto si possono evitare se scegliamo un dispositivo auto alimentato. Sospendere la corrente non è mai una preoccupazione grande per i computer da tavolo ma con l'introduzione delle specifiche “on the go” noi cominciano a vedere dei nodi USB costruiti all’interno dei cellulari e dei palmari. La potenza assorbita da questi dispositivi condizionerà la durata della batteria. ENTRATA IN MODALITA’ “SUSPEND” Un’apparecchiatura USB introdurrà la sospensione quando essa non è attiva sul BUS per più di 3ms.Essa ha inoltre 7ms di tempo per disattivare il dispositivo e assorbire una corrente non superiore alla suspend corrent inoltre deve assorbire il valore di corrente stabilito dopo 10 ms dopo che l‘attività del BUS si è fermata. Il dispositivo per mantenere la connessione all’HUB o al nodo che sono in modalità suspend, obbliga l’apparecchiatura a fornire la potenza richiesta dalle resistenze di pull-up. L’USB prevede un pacchetto inviato periodicamente sul BUS che mantiene attive le periferiche collegate. Questo prevede che una condizione di riposo sul BUS faccia entrare le periferiche in modalità suspend in assenza di dati. • Un BUS di high speed con una micro-frame che spedisce a 125 us +/-62.5ns. • Un BUS di full speed con una frame che spedisce 1 ms a ±500 ns. 13 • Un BUS di low speed che conserva la connessione viva attraverso un EOP (Fine di Pacchetto) ogni 1 ms solo in assenza di qualsiasi dato di low speed. Il termine "Sospensione globale" è usato quando il BUS USB entra collettivamente in modalità suspend. Comunque l’apparecchiatura selezionata può essere sospesa inviando un comando all’HUB a cui il dispositivo è connesso. Questo è definita "sospensione selettiva." L'apparecchiatura riprende a funzionare quando riceve qualsiasi segnalazione di attività del BUS. Se un dispositivo ha un remoto wake-up abilitato può segnalare al nodo che si è attivato. VELOCITA’ TRASMISSIONE DATI Un’altra area che è spesso esaminata e la tolleranza del clock USB. Questo è specificato nell'USB sezione 7.1.1 l. • I dati high speed viaggiano a 480Mb/s, con una tolleranza di ± 500ppm (parti per milione). • I dati full speed viaggiano a 12Mbit, con una tolleranza di ±0.25% o 2500ppm. • I dati low speed viaggiano a 1.5Mb/s, con una tolleranza di ±1.5% o 15000ppm. Questo permette ai dispositivi risonatori a basso costo di essere usati nel modello low speed, ma gli esclude per i dispositivi high/full speed. PROTOCOLLI USB A differenza del RS-232 o simile al seriale connette dove la configurazione spedisce i dati non definiti, USB è fatto in aumento di strati di alcuni protocolli. Mentre questo suona complicato, non smettiamo adesso. Una volta che capiamo quello che seguiamo bisogna preoccupasti veramente e solamente degli strati del livello più alti. Infatti più controlli USB si abbasseranno sul ICs a cura dello strato più basso, così il produttore li fabbrica pressoché invisibili per il progettista. Ciascuna operazione USB consiste in. - Pacchetto token (parte iniziale che definisce la parte da seguire) - Pacchetto di dati opzionali (contiene il carico) - Pacchetto di status (ammette le operazioni e fornisce un mezzo di correzioni dell’errore) Come noi abbiamo ormai discusso, USB è un nodo centric BUS. Il nodo inizia tutte le operazioni. Il primo pacchetto, anche chiamato setup è generato dal nodo per descrivere quello che seguiremo se l’operazione legge o scrive i dati a quell’indirizzo dell'apparecchiatura e se il punto di fine è disegnato. Il prossimo pacchetto generalmente è un pacchetto di dati che porta il carico che è seguito da un pacchetto del handshaking, riportando a se i dati o setup se fosse ricevuto con successo, o se il punto di fine si mette o non è disponibile ad i accettare dati. 14 CAMPI USB CON PACHETTI COMUNI I dati sul USBus che trasmettono LSBit per primi. Pacchetti di USB consistono nei campi seguenti: - Sync: tutti i pacchetti devono cominciare con un campo del sync. Il campo del sync è lungo 8 byte che sono usati per sincronizzare il clock del ricevitore che lo trasmette. Gli ultimi due pezzi indicano dove parte il campo PID. - PID: PID rappresenta Pacchetto ID. Questo campo è usato per identificare il tipo di pacchetto che è stato spedito. Le seguenti tavole mostrano i valori possibili. GRUPPO VALORE PID PACCHETTO IDENTIFICATO TOKEN 0001 OUT token 1001 IN token 0101 SOF Token 1101 SETUP Token 0011 DATO 0 1011 DATO 1 0111 DATO 2 1111 M DATO 0010 ACK handshake 1010 NAK handshake 1110 STALL handshake 0110 NYET (niente risposta allo yet) 1100 PREamble 1100 ERR 1000 Split 0100 Ping DATO HANDSHAKE SPECIAL Ci sono 4 bit al PID, che comunque assicurano che il dato è ricevuto correttamente, i 4 bit sono completi e ripetuti, fatti con 8 bit di PID in totale. Alla configurazione che risulta è mostrata sotto. PID 0 PID 1 PID 2 PID 3 nPID 0 nPID 1 nPID 2 nPID 3 ADDR: Il campo dell'indirizzo specifica il pacchetto che è designato al dispositivo per 7 bit che sono in lunghezza permettono a 127 apparecchiature di essere sostenute. Indirizzo “0” non è valido, come qualsiasi apparecchiatura che non è assegnata ancora un indirizzo e deve rispondere a pacchetti spediti indirizzati a zero. 15 PUNTO DI FINE = ENDPOINT (ENDP) Il campo del punto di fine è fatto in aumento di 4 bit, permettendo 16 possibili punto di fine. Apparecchiature di low speed, comunque hanno solamente 2 indirizzi di endpoint supplementari su in cima al tubo del default. (4 Endpoints Max) - CRC: Controlli della Ridondanza ciclici sono compiuti sui dati fra il carico del pacchetto. Tutti i pacchetti di setup hanno 5 bit CRC mentre pacchetti dei dati hanno un 16 bit CRC. - EOP: Fine di pacchetto. Segnalato da un Singolo Zero (SEO) per approssimazione ben 2 volte il bit segue una J per una volta nel bit. TIPI DI PACCHETTO USB USB ha quattro tipi del pacchetto differenti. Pacchetti del setup indicano il tipo di transazione per seguire, pacchetti dei dati contiene il carico, pacchetti del handshake sono usati per ammettere il dato o riportare errori nella partenza del frame dei pacchetti indicano la partenza di una frame nuova. Ci sono tre tipi di pacchetti del setup: - In - informa il dispositivo USB che il nodo desidera leggere le informazioni. - Out - informa il dispositivo USB che il nodo desidera spedire informazioni. - Setup - è usato per iniziare il controllo del trasferimento. Pacchetti del setup si devono adattare alla configurazione seguente Sync PID ADDR ENDP CRC5 EOP Pachetti dei dati: ci sono due tipi di pacchetti dei dati ciascuno capace di mettere 0 a 1023 byte di dati:- Data O; - Data1 Pacchetti dei dati hanno la configurazione seguente: Sync PID Data CRC16 EOP Pacchetti handshake: Ci sono tre tipi di pacchetti handshake che consistono semplicemente nel PID - ACK - Riconoscimento che il pacchetto è stato ricevuto con successo. - NAK - Rapporti che il dispositivo non può spedire né può ricevere dati provvisori. Anche usato per interrompere l’operazione per informare il nodo che non ci sono dati da spedire. - Stall – Il dispositivo trova il suo stato che richiede intervento del nodo. I pacchetti del handshake hanno la configurazione seguente: Sync PID EOP 16 Il pacchetto di frame SOF consiste in un 1-bit numero del frame è spedito al nodo ogni lmS ± 500nS. Sync PID Frame number CRC5 EOP FUNZIONI USB Quando noi pensiamo a un dispositivo USB,noi pensiamo ad una periferica USB, ma a una apparecchiatura USB che potrebbe avere intenzionalmente un dispositivo trascrittore USB al nodo periferico, un HUB USB o nodo di controllo del dispositivo IC, o una periferica del USB. Lo standard fa perciò riferimento alle funzioni USB che può essere visto come dispositivo di USB capace di fornire funzioni per esempio: la Stampante, Driver, scanner, Modem o l'altre periferiche. Così noi sappiamo il genere di composizione di un pacchetto USB. No? Hai dimenticato da quanti pezzi è costituito un campo di PID? non stare ad allarmati. Fortunatamente molti USB funzionano a bassi livelli protocolli USB sono una parte delle transazioni di strati (che noi studieremo nel prossimo capitolo)a livello di silicio. La ragione perché noi abbiamo queste informazioni perché l’USB funziona con controllori che riportano errori per esempio “l’Errore di chiusura del PID”. Senza capire brevemente questo,ci si chiede cos’è un errore di chiusura del PID? Se ci suggerisce gli ultimi quattro bit del PID poi non invertirà i primi quattro bit. Molte funzioni, hanno una serie di buffer, tipicamente lunghe 8 byte. Ciascun buffer appartiene ad un endpoint EPO-In, EPO-out ecc.Si dice per esempio che il nodo spedisce una richiesta di descrizione dell’apparecchiatura. La funzione del hardware legge il pacchetto del setup e determina 17 il campo dell'indirizzo se il pacchetto è per il setup; in tal caso copia il payload del seguente pacchetto di dati nell’endpoint appropriato, al buffer dettato dal valore nel campo del endpoint del setup token. E se spedisco poi un pacchetto handshake, per ammettere il ricevimento dei byte genera un'interrupt dell'interno fra il semiconduttore/microcontrollore per l’endpoint appropriato significa che ha ricevuto un pacchetto. Questo è tipicamente fatto nel hardware. Il software ora ottiene un'interrupt, che serve per leggere i contenuti nel endpoint del buffer e analizza la descrizione del dispositivo richiesto. PUNTO DI FINE = ENDPOINT L’endpoint può essere descritto come una sorgente o scarico di dati. Come il BUS è il nodo centrale, al endpoint occorre alla fine del canale delle comunicazioni per la funzione USB. Allo strato del software, il driver del dispositivo può inviare, per esempio un pacchetto ai tuoi dispositivi EP1. Come se i dati fluiscono fuori dal nodo,e finiscono nell'EP1out del buffer. Se il firmware legge a suo agio questi dati,allora vorrà che i dati ritornino, la funzione semplicemente non scrive sul BUS come fa il nodo controllore del BUS. Perciò scrive dati al EP1-In che si trova nel buffer durante il tempo in qui il nodo spedisce un pacchetto sul endpoint e poi richiede i dati. L’endpoint può essere anche visto come l'interfaccia tra la funzione hardware del dispositivo e il firmware che correrà sulla funzione del dispositivo.Tutte le Apparecchiature devono avere lo zero sul endpoint.Cosi sul endpoint riceviamo tutti i dispositivi controllori e le condizione di status delle richieste durante l’enumerazione, in tutta la durata dell’operazione l'apparecchiatura è operativa sul BUS. I TUBI = PIPE Mentre l'apparecchiatura spedisce e riceve dati su una serie di endpoint, il client software trasferisce i dati attraverso tubi. Il pipe è un collegamento logico tra il nodo e l’endpoint(s). I pipe hanno una serie di parametri che si associano a loro come la larghezza di banda è decisa dal pipe, quello che trasferisce è il tipo di (Control, Isochronous, Bulk, Interrupt) che usa in una direzione di circolazione di dati e li taglia al massimo del packet/buffer. Lontano dall'esempio che assume per difetto il pipe che diventa un tubo bi-direzionale che aumenta l’endpoint IN e l’endpoint OUT con un tipo di trasferimento di controllo. USB definisce due tipi di tubi: 1) Tubo di corrente: non hanno una configurazione USB definita che può spedire un qualsiasi tipo di dato sotto un tubo di corrente per potere ripristinare il dato fuori.La circolazione di dati sequenziali ha una direzione pre-definita,(in-out). Il tubo di corrente sopporta la massa, 18 sincronizzazione e il trasferimento di interrupt, tubi di corrente possono essere controllati sia dal nodo sia dal dispositivo. 2) Tubi di messaggio hanno un formato di USB definito.Hanno il nodo di controllo, che comincia all’inizio inviando una richiesta al nodo. I Dati allora si trasferiscono nella direzione desiderata, dettati dalla richiesta .Quindi i tubi della comunicazione permettono ai dati di fluire in ambo direzioni essi sostengono solamente i trasferimenti di controllo. TIPI DI ENDPOINT Le specifiche del BUS del USB definiscono quattro tipi di trasferimenti/endpoint: I. Trasferimento di controllo II. Trasferimento di interrupt III. Trasferimento sincronizzato IV. Trasferimento di dimensioni. TRASFERIMENTO DI CONTROLLO Trasferimenti di Controllo sono usati tipicamente per le operazioni di comando nella condizioni di status. Essi sono essenziali per preparare un dispositivo USB con funzioni di enumerazione che sono usate per il trasferimento di controllo. Ci sono tipicamente dei pacchetti casuali che iniziano facendo una consegna al nodo con un minimo sforzo. La lunghezza del pacchetto di controllo e il trasferimento delle apparecchiature di low speed devono essere 8 byte, le apparecchiature di high speed invece permettono una grandezza del pacchetto di 8, 16, 32 o 64 byte ed invece quelle a full speed devono avere una grandezza del pacchetto di 64 byte. Un trasferimento di controllo può avere tre tappe: 1) Il SETUP STAGE si trova dove la richiesta è spedita. Questo è composto da tre pacchetti. Il setup token è spedito prima e contiene l'indirizzo e il numero dei endpoint. Il pacchetto dei dati è spedito dopo e ha sempre un tipo di PID di data0 che include un pacchetto di setup che dettaglia il tipo di richiesta. Noi parleremo del pacchetto di setup più tardi. L'ultimo pacchetto è un handshake usato per ammettere successive ricezioni o per indicare un errore. Se la funzione riceve con successo i dati del setup (CRC e PID ecc OK) risponderà con un ACK, altrimenti ignora i dati e non spedisce il pacchetto handshake. La funzione non può far uscire i pacchetti di stall o di NAK in risposta a un pacchetto del setup. 19 2)Il DATA STAGE è facoltativo e consiste nei trasferimenti di uno o multipli IN e OUT. La richiesta del setup indica l'ammontare dei dati trasmessi in questo stage. Se eccede la grandezza del pacchetto massimo, i dati spediranno un multiplo che trasferisce a ciascuno la lunghezza di pacchetto massima a parte l'ultimo pacchetto. Il stage dei dati ha due scenari diversi che dipendono dalla direzione del trasferimento di dati. IN: Quando il nodo è pronto a ricevere i dati del controllo invia un token IN. Se la funzione riceve il token In con un errore e.g. il PID non accoppia i bit del PID invertiti, cosi ignora il pacchetto. Se il token è ricevuto correttamente, l'apparecchiatura può rispondere a entrambi e replica con un pacchetto dati che contiene i dati del controllo che sono stati spediti, il pacchetto di stall indica l’endpoint che ha avuto un errore o ha ricevuto un pacchetto di NAK , indica al nodo che l’endpoint sta lavorando, ma provvisoriamente non ha dati da spedire. OUT: Quando il nodo ha bisogno di spedire un pacchetto di dati al dispositivo controllore, fa uscire un token out seguito da un pacchetto di dati contenente i dati del controllo come suo carico. Se qualsiasi parte del token out o pacchetto dei dati è sbagliata la funzione ignora il pacchetto. Sia la 20 funzione endpoint del buffer è vuota o ha i dati del clock nel endpoint esso diramerà una ricevuta che informa il nodo se ha successivamente accolto il dato. Se il buffer del endpoint non è svuotato con il dovuto processo del pacchetto precedente, alla funzione ritorna un NAK. Tuttavia se l’endpoint ha avuto un errore ed e poi stato settato, girerà nuovamente in stall. 3) Lo STAGE STAUS: riporta lo status della richiesta totale e questo ancora una volta varia due direzioni di trasferimento. Condizione di status riportata è sempre compiuta dalla funzione. -IN: se il nodo invia IN token(s), durante il data stage il nodo riceve i dati, dopo il nodo deve conoscere successivamente la ricezione di questi dati. Questo è fatto dal nodo che spedisce fuori il setup, seguito da un lungo pacchetto di zero dati. La funzione ora può riportare la sua condizione di status nel handshaking stage. Un ACK indica la funzione che è completata con il comando ora è pronto per accettare un altro comando. Se un errore accadde durante il processo di questo comando, poi il problema di funzione sarà lo Stall. Tuttavia se la funzione sta lavorando, ritorna a indicare il NAK per ripetere dopo lo status stage successivamente. -OUT: se il nodo spedisce il token(s) OUT durante il comando di stall trasmetterà il dato e la funzione sarà riconosciuta dal dato inviato a un pacchetto di lunghezza in risposta a un token. Tuttavia se un errore viene diramato uno STALL o se esso è indaffarato nel processo del dato, esso emette un NAK che indica al nodo di ripetere dopo la condizione di status TRASFERIMENTO DI CONTROLLO:il grandissimo disegno Ora insieme come si fa tutto questo adattamento? Diciamo per esempio, che il nodo vuole richiedere una descrizione dell'apparecchiatura durante l’enumerazione. I pacchetti che vengono spediti sono nell’ordine seguente. 21 Il nodo spedisce il setup token che dice alla funzione del pacchetto seguente se è un pacchetto di sistema. Il campo di indirizzo ottiene l'indirizzo del dispositivo e il nodo richiede la descrizione. L’endpoint del numero è zero, specificando il tubo del default. Il nodo spedisce un pacchetto DATAO. Questo ha 8 byte del carico per la descrizione richiesta del dispositivo come fuori linea, nel Capitolo 9 nelle specifiche USB. Gli USB nelle loro funzioni ammettono solo il pacchetto di sistema che è stato letto correttamente senza errori. Se il pacchetto ricevuto è scorretto, l'apparecchiatura ignora questo pacchetto. Il nodo poi invierà il pacchetto dopo una dilazione corta. 1)Setup Token Sync PID ADDR ENDP CRC5 EOP CRC16 EOP Numeri di indirizzo & endpoint 2)Data 0 packet Sync PID Data 0 Descrizione dispositivo richiesto 3)Ack handshake Sync PID EOP Dispositivo ack. Pacchetto di setup Il pacchetto formato da tre pacchetti è rappresentano nella prima operazione USB. Il dispositivo USB allora decodifica gli 8 byte ricevuti, e determina una richiesta di descrizione del dispositivo. Se l'apparecchiatura tenterà poi di spedire ancora qualcosa del dispositivo descrittore questa sarà la prossima operazione USB. 1)In Token Sync PID ADDR ENDP CRC5 EOP CRC16 EOP Numeri di indirizzo & endpoint 2)Data 1 packet Sync PID Data 0 Primi 8 byte del dispositivo descritto 3) Ack handshake Sync PID EOP Host acknowledges packet 22 1) In Token Sync PID ADDR ENDP CRC5 EOP CRC16 EOP CRC5 EOP CRC16 EOP Numeri di indirizzo & endpoint 2)Data 0 packet Sync PID DATA 1 Secondi 8 byte del dispositivo descritto 3) Ack handshake Sync PID EOP Host acknowledges packet 1) In Token Sync PID ADDR ENDP Numeri di indirizzo & endpoint 2)Data 0/1 packet Sync PID DATA 0/1 Ultimi 8 byte del dispositivo descritto 3) Ack handshake Sync PID EOP Host acknowledges packet Noi presumiamo in questo caso, che se tagliamo il carico massimo di 8 byte. Il nodo lo spedirà nel setup In, dicendo all’apparecchiatura che ora può spedire i dati a questo endpoint. Quando la grandezza del pacchetto massimo di 8 byte, noi dobbiamo suddividerli i 12 byte del descrittore del dispositivo in bit da spedire. Ciascun pezzo deve essere di 8 byte a parte l'ultima operazione. Il nodo ammette ogni pacchetto dei dati che noi gli spediamo. Una volta descritta l'apparecchiatura che è spedita, segue un operazione di status. Se nelle operazioni successive il nodo spedirà un zero indicando lunghezza di ciascun pacchetto e l'operazione totale della transazione che viene successivamente. La funzione poi replicherà questo zero con la lunghezza di un pacchetto indicando la sua condizione di status. 1)Out Token Sync PID ADDR ENDP CRC5 EOP CRC16 EOP Numeri di indirizzo & endpoint 2)Data 0 packet Sync PID Data 0 Zero lenght packet 23 3) Ack handshake Sync PID EOP Funzione Ack. Transazione Entire TRASFERIMENTO DI INTERRUPT Tutti coloro che hanno acquisito l’esperienza necessaria per la richiesta di interrupt sui microcontrollori sapranno che gli unici interrupt sono generati dai dispositivi. Tuttavia sotto l’USB c’è un dispositivo che richiede l’attenzione del nodo, perciò deve attendere finche il nodo di testa possa riportare l’attenzione di bisogno urgente. Trasferimento di interrupt: -garantisce la potenzialità -tubo di corrente unidirezionale -localizzazione del errore e successivo periodo di riprova I trasferimenti di interrupt sono tipicamente non periodici, perciò il piccolo dispositivo che inizialmente è alla comunicazione richiede una delimitazione di potenzialità. I trasferimenti di interrupt accoda un dispositivo finche il nodo del dispositivo del USB richiederà i dati. - Il carico massimo dei dati del dispositivo low speed è 8 byte. - Il carico massimo dei dati del dispositivo full speed è 64 byte. - Il carico massimo dei dati del dispositivo high speed è 1024 byte. Il diagramma sopra mostra il formato della transazione Interrupt IN e Interrupt OUT: 24 IN: Il nodo ha periodicamente l’interrupt del endpoint. Questa categoria di taglio è specificata nella descrizione del endpoint che studieremo più avanti. Ciascun punto iniziale implica al nodo inviato un Token. Se il token è sbagliato la funzione ignora il pacchetto e continua a monitorare il BUS per un nuovo token. Per interrompere la fila del dispositivo, la funzione invierà al nostro pacchetto un dato che contiene il dato rilevante per l’interrupt quando accoglie il IN token. Sulla ricezione successiva, il nodo ritorna sulla ricezione. Comunque se il dato è sbagliato, il nodo ritorna nuovamente senza nessun status. Sull’altra condizione di interrupt, il nodo non era presente quando tagliava l’interrupt del endpoint con un“in token”, quando il segnale della funzione viene inviato al NAK. Se accadrà un errore su questo endpoint, il segnale va in stall e invia una replica al IN token. OUT: Quando il nodo vuole inviare al dispositivo un dato interrupt, dirama un OUT token seguito dal pacchetto dato contenente il dato interrupt. Se qualsiasi parte del OUT token o del pacchetto dato è sbagliata allora la funzione ignorerà il pacchetto. Se la funzione del buffer a l’endpoint chiuso all’interno il clock del dato endpoint dirama un ACK informando il buffer che esso ha successivamente accolto il dato. Se l’endpoint del buffer non si svuota a causa della transazione precedente, quando la funzione ritorna nuovamente in NAK. Tuttavia se accade un errore all’endpoint di conseguenza sarà settato, e ritornerà nuovamente in stall. TRASFERIMENTO SINCRONIZZATO Al trasferimento sincronizzato occorre un trasferimento continuo e periodico. Esso tipicamente contiene delle informazioni sensibili per esempio i dato che scorrono su un audio o un video. C’è un ritardo o riprova del dato nel scorrimento del audio, quando attende qualche audio irregolare che contiene delle fibre. La percussione per l’audio non può essere mai più lunga del SYNC. Tuttavia se un pacchetto o frame e diminuito nuovamente, è meno probabile che l’ascoltatore se ne sia accorto. Il trasferimento sincronizzato è fornito: 1-Accesso garantito alla banda di larghezza dell’USB; 2-Delimitata potenzialità 3-Scorrimento del tubo di corrente unidirezionale 4-Localizzazione di errore via CRC. 5-Full & High speed come soli modelli. 6-Niente dati sul toggling. 25 La dimensione massima del dato del carico è specificata nella descrizione del endpoint sincronizzato. Questo può essere massimo 1023 byte per dispositivi di full speed e può essere massimo di 1024 byte per i dispositivi di high speed. La dimensione massima del carico di un dato e la conseguenza della larghezza di banda del carico richiesta sul BUS,è consigliato specificare la dimensione del carico se ne sto usando uno grande; può anche essere a nostro vantaggio specificare una serie di alternative alle interfacce con variazioni sincronizzate sulle dimensioni del carico durante l’enumerazione, il nodo non può dare la preferenza al endpoint sincronizzato è doveroso alla larghezza di banda e le sue restrizioni, fa differenza se va all’indietro anziché andare dove è appena completato. Il dato è inviato sul endpoint sincronizzato può essere meno della dimensione pre-negoziata, perciò può variare in lunghezza da una transazione all’altra. Il diagramma mostra il formato dello schema sincronizzato con transazioni IN e OUT. Le transazioni sincronizzate non hanno “handshaking”stage e non possono riportare errori o condizioni Stall/halt DIMENSIONI DEL TRASFERIMENTO Le dimensioni del trasferimento possono essere usate per una grande quantità di dati.Per esempio includono il print-job inviato ad una stampante o una immagine generata da uno scanner.Le dimensioni del trasferimento forniscono la correzione del errore nel modulo di CRC16. Nel campo di un carico del dato e la localizzazione dell’errore;i meccanismi della ri-trasmissione assicurano il dato ed ricevono e trasmettono senza errori. Le dimensioni del trasferimento vengono usate nella parte libera e non in una porzione della larghezza di banda sul BUS dove ci sono tante altre transazioni che sono state collocate.Il BUS è indaffarato con l‘interrupt sincronizzato quando il dato trasmette le sue dimensioni sul BUS. Possono tardare ad arrivare. Il risultato del trasferimento delle dimensioni è usato solo una volta per la comunicazione sensitiva quando non c’è la potenza garantita. Le dimensioni del trasferimento: 1-Sono usate per trasferire una grande quantità di dati 26 2-Localizzazione dell’errore via CRC, che garantisce la consegna. 3-Nessuna garanzia di larghezza di banda o di potenza minima. 4-Tubo di corrente unidirezionale 5-Full & High speed come soli modelli. Le dimensioni di trasferimento sono supportate da dispositivi Full & High speed.Per l’endpoint di full speed,le dimensioni massime del pacchetto sono 8,16,24.32 byte.Per l’endpoint di high speed,la dimensione massima del pacchetto può essere sui 512 bytes di lunghezza Il carico del dato cadrà nel pacchetto di dimensioni massime e non ha bisogno di essere chiuso con uno zero.Le dimensioni del dato sono considerate complete quando hanno trasferito l’importo esatto del dato richiesto, trasferiscono un pacchetto minore nella massima dimensione del endpoint per trasferire un pacchetto di lunghezza pari a zero. Il diagramma mostra il formato della transazione IN e OUT . IN: quando il nodo è pronto per accogliere le dimensioni del dato, le dirama INtoken. Se il token ha un errore la funzione non accoglierà il dato.Se il token è accolto correttamente, la funzione può essere replicata con il dato pacchetto contenente nelle stesse dimensioni del dato con cui sono inviate.Il pacchetto indicato all’endpoint ha avuto un errore detto NAK perciò il pacchetto indica al nodo che il endpoint sta lavorando,ma temporaneamente non ha un dato da inviare. OUT =Quando il nodo vuole invia la dimensione della funzione del dato, dirama OUTtoken seguito dal dato pacchetto contenente le dimensioni del dato. Qualsiasi parte del OUTtoken o un pacchetto del dato è scorretta allora la funzione ignora il pacchetto.Se la funzione del endpoint sul buffer è vuota allora funzione chiuderà il dato nel buffer e poi diramerà una ricevuta informando il nodo che esso a successivamente accolto il dato. 27 L’endpoint del buffer non si svuota a causa del processo del pacchetto precedente.Allora la funzione che ritorna nuovamente nel NAK. Tuttavia se nel endpoint c’è stato un errore esso è già stato un po’ settato e ritornerà nuovamente in stall. GESTIONE DELLA LARGHEZZA DI BANDA Il nodo è responsabile nella gestione della larghezza di banda del BUS. Questo è fatto dall’enumerazione con la configurazione del interrupt sincronizzato dell’endpoint attraverso l’operazione del BUS. Le specifiche limitate sul BUS,permettono che non si superi mai il 90% di qualsiasi frame che non è collocato per il trasferimento periodico(interrupt sincronizzato) sulla full speed del BUS. Sulla high speed del BUS questa limitazione non si riduce mai al 80% della microframe che può essere collocata per i periodi del trasferimento.Cosi si può vedere profondamente quanto è alto il BUS saturo con il trasferimento periodico,il rimanente 10% è servito per controllare il trasferimento uno alla volta a quello che è stato collocato,il trasferimento di dimensioni prende la parte che gli serve. DESCRIZIONE USB Tutti i dispositivi di USB hanno una gerarchia che descrive l’informazione del nodo come il dispositivo supportato da questa, in quanti modi può essere configurato,il numero di endpoint ed i loro tipi. L’USB più comune è descritto: -Descrizione interfaccia -Descrizione endpoint -Descrizione stringa -Dispositivo descritto -Configurazione descritta I dispositivi di USB possono avere un solo dispositivo descritto.Il dispositivo descritto include informazioni per esempio versioni dell’USB del dispositivo nuovamente ottemperato, il produttore e il venditore li usano per caricare l’appropriato driver ed il numero di possibili configurazioni che può avere il dispositivo. Il numero di configurazioni indicano in quanti rami di configurazioni posso descrivere e che posso seguire.La configurazione descritta specifica tali valori come l’importo di potenza, questa è una configurazione particolarmente usata,se il dispositivo con il BUS di potenza ha il suo numero di interfacce.Quando il dispositivo è enumerato, il nodo legge il dispositivo descritto e prende una decisione se rendere capace o no la configurazione. Per esempio è possibile avere un BUS con High power perciò ha una configurazione potenziata.Il dispositivo chiude il nodo 28 con una potenza minore e fornisce al driver del dispositivo scelto per rendere capace il BUS di high power ha una configurazione di potenza e abilitando il dispositivo di potenza senza una connessione al meno, ancora se è connesso a una laptop o un organizer e rende capace la seconda configurazione(potenziata)richiede l’utente di chiudere il nostro dispositivo nel punto di potenza. I settaggi della configurazione non si limitano alle differenze della potenza. Ciascuna configurazione di potenza può essere pareggiata allo stesso modo della corrente, però hanno ancora interfacce differenti o combinazioni di endpoint. Tuttavia si è notato che cambiando la configurazione dell’apparecchiatura richiede un’attività su ogni endpoint per fermarlo.Mentre l’USB offre questa flessibilità che hanno pochissimi dispositivi con più di una configurazione. L’interfaccia descritta è vista come una rappresentazione o un gruppo di endpoint in funzione di un gruppo di endpoint che raggruppa le singole caratteristiche del dispositivo.Per esempio se hai una multi-funzione fax/scanner/stampante . L’interfaccia descritta descrive: - endpoint della funzione del fax nell’interfaccia - la funzione del scanner - la funzione della stampante Alla configurazione descritta non piace molto perché non c’è limitazione è come avere una sola interfaccia che la rende capace una sola volta. Interfaccia descritta= la b-intefaccia-numerica ha il campo specificato in interfacce di numero e b-alternative-setting di 0. 29 L’interfaccia 2 è b-interface-number setta a 1 ed è indicata con la seconda interfaccia e balternative-setting di 0 ( di default). Se inviamo allora un'altra descrizione,anche con la b-interface-number setta ad 1 e indica che è la seconda interfaccia,indica che questa interfaccia descritta che può essere settata alternativamente a quella dell’interfaccia 2.Quando questa configurazione la rende capace, le prime due interfacce descritte con il b-alternative-setting è uguale a zero ed è usata. Tuttavia durante l’operazione il nodo può inviare set-interface e richiedere direttamente quello dell’interfaccia 1 con un setalternative, il settaggio ad 1 può permettere l’uso di un’altra interfaccia descritta.Questo da un vantaggio avendo 2 configurazioni, in uno possiamo trasmettere il dato sull’interfaccia mentre se cambiamo i settaggi del endpoint ci associamo all’interfaccia 1 senza effettuare altre interfacce. Ogni endpoint descritto è usato per specificare il tipo di trasferimento,direzione,intervallo per tagliare una dimensione massima del pacchetto per ogni endpoint è sempre assunto per essere controllato dal endpoint e come tale non lo ha mai descritto. COMPOSIZIONE DELL’USB Descrive tutte le altre descrizioni ed è costruita su di un formato comune.Il primo byte specifica la lunghezza della descrizione,mentre il secondo byte indica il tipo di descrizione. La lunghezza della descrizione è piccolissima e definisce la specificazione,allora il nodo la ignorerà. Tuttavia se la dimensione è maggiore dell’espulsione il nodo ignora i byte in eccesso e si avvia per cercare la successiva descrizione alla fine la lunghezza ritorna come prima. Offset Campo Cifra Valore Descrizione 0 Blenght 1 Numero Cifra descritta in byte 1 Bdesciptortype 1 Costante Tipo di descrizione 2 bcdUSB 2 BCD Inizio dei parametri per la descrizione USB DESCRIZIONE DEL DISPOSITIVO La descrizione del dispositivo USB rappresenta l’intero dispositivo. Come risultato del dispositivo possiamo avere solo un dispositivo descritto. Se specifica ancora basi, abbiamo già informazioni importanti sul dispositivo per esempio il supporto delle versioni USB, nella grandezza del pacchetto massimo,venditore e produttore Ids 30 possono avere un numero di possibili configurazioni del dispositivo. Il formato del dispositivo è mostrato sotto. Offset Campo Cifra Valore Descrizione 0 1 Numeri Size of the descriptor in bytes(12 Blenght byte) 1 Bdesciptortype 1 Costanti Device descriptor (0x01) 2 BcdUSB 2 BCD USB specifications number which device complies too 4 bDeviceclass 1 Classi Class code. If equal to zero, each interface specifies it’s own class code If equal to 0xFF, the class code is vendor specifies Othrswise field is valid class code 5 bDevicesubclass 1 Sub Classi Subclass code 6 bDeviceprotocol 1 Protocolli Protocol code 7 bMaxPacketSize 1 Numeri Maximun racket size for zero endpoint. Valid sizes are 8,16,32,64 8 IdVendor 2 ID Vendor Id 10 IdProduct 2 ID Product Id 12 bcdDevice 2 BCD Device release number 14 iManufacturer 1 Index Index of manufacturer string descriptor 15 iProduct 1 Index Index of product string descriptor 16 iSerialNumber 1 Index Index of serial number string descriptor 17 bNumConfigurations 1 Integer Number of possibile configurations - Il campo BCD-USB ha tantissime versioni USB del dispositivo supportato. Il valore è in binario, codificato in decimale con un formato di “0xjjmn” dove il “jj” è il maggior numero di versioni, ”M” è il numero minore di una versione e “N” è la sub versione di un numeri minore “E.G.USB2” o è riportato come “0x2000, l’USB1.1 è 0x0110 invece l’USB1.0 è 0x0100. 31 - La classe b-device ;b-device-subclass e b-device-protocol sono usate dal sistema operativo che trova un driver di classe per il dispositivo.Tipicamente solo il b-device-class è settato al livello del dispositivo. La maggior parte delle classi specifiche sono scelte su uno stesso al livello per identificare l’interfaccia ed avere un risultato settato il b-device-class è 0x00.Questo permette al dispositivo di avere classi di supporto multiple. - Il campo del b-max-packet-size riporta la massima dimensione del pacchetto per l’endpoint zero. Tutti i dispositivi devono supportare l’endpoint zero 0. - Il venditore ed il produttore ID usano un sistema operativo per trovare il driver del dispositivo.Il venditore ID è assegnato dall’USB-IF. - Il bcd-device ha lo stesso formato come il BCD-USB ed è usato per munire un numero di versioni del dispositivo. Questi valori sono assegnati dal dispositivo. - La stringa descritta esiste per fornire dettagli del fabbricante, i produttori di numeri seriali del prodotto. Non ci sono richieste per avere una stringa descritta. Se nessuna stringa descritta è presente, hanno degli indici zero che potranno essere usati. - La b-num-configuration definisce il numero di configurazioni ed i supporti del dispositivo alla velocità della corrente. CONFIGURAZIONE DESCRITTA Un dispositivo USB può avere alcune differenti configurazioni benché la maggioranza dei dispositivi sono semplici hanno una sola configurazioni.La configurazione descritta specifica come il dispositivo di potenza, quando consuma la potenza massima, ed ha un numero di interfacce.Quindi è possibile avere due configurazioni,una per quando il dispositivo sia un BUS di potenza ed un'altro è meno potenziato.Come questa è un “intestazione” alle interfacce descritte, è anche fattibile avere una configurazione usando un modo di trasferimento differente, uguale a quello di un’altra configurazione. Una volta che tutte le configurazioni sono state esaminate dal nodo,il nodo invia al set/configuration un comando con un valore zero che accoppia il b-configuration-value di una delle configurazioni. Questo è usato per la configurazione desiderata. 32 Offset Campo Cifra Valore Descrizione 0 bLenght 1 Numero Size of desciptor in bytes 1 dDescriptorType 1 Costanti Configuration descriptor (0x02) 2 wTotalLenght 2 Numero Total lenght of data returned 4 bNumInterface 1 Numero Number of interface 5 bConfigurationValue 1 Numero Value to use as an argument to select this configuration 6 iConfiguration 1 Index Index of string descriptor describing this configuration 7 bmAttributes 1 Bitmap D7 BUS powered D6 self powered D5 remote wakeup D4..0 Reserved (0) 8 bMaxPower 1 MA Maximun power consumption Quando la configurazione descritta è letta, ritornerà nuovamente ed avrà la gerarchia delle configurazioni che includono tutte le interfacce riferite al endpoint descritto. Il campo del w-total-lenght riflette il numero di byte nella gerarchia delle configurazioni. -Il b-num-interfaces specifica il numero di interfacce presenti per questa configurazione. -Il b-configuration-value è usata per la richiesta del set-configuration è richiesta per selezionare questa configurazione -Il b-configuration è l’indice di una stringa che è stato descritto.La configurazione del modulo leggibile per le persone. 33 -Il b-mattributes specifica parametri di potenza per la configurazione. Se il dispositivo selfpowered, setta il D6,il BIT D7 è usato per l’USB 1.0, lo zero è usato per indicare il dispositivo di potenza del BUS,ma questo è fatto adesso dal b-max-power. Se un dispositivo usa una qualsiasi potenza del BUS perciò è obbligato a riportare il consumo di potenza sul b-max-power. Se un dispositivo può essere anche un supporto remoto che si muove per permettere al dispositivo di usare il nodo quando è in sospeso. -Il b-max-power definisce la potenza massima del dispositivo che esce dal BUS. Questa è un unità di 2mA, con una approssimazione massima di 500mA che può essere specificata.La specificazione permette ad un dispositivo con il BUS di potenza a livello alto di non scendere mai sotto i 500mA dal VBUS. Uno può perdere la potenza esterna,allora non esce più come indicato in B/MAX/POWER. Cosi qualsiasi operazione fallisce perciò non può perforare senza potenza esterna. DESCRIZIONE INTERFACCIA L’interfaccia descritta è vista come un raggruppamento di intestazioni dell’endpoint in una funzione che raggruppa una singola caratteristica del dispositivo. L’interfaccia descritta uniforme a il formato seguente: Offset Campo Cifra Valore Descrizione 0 Blenght 1 Numero Cifre di byte descritti 1 BDescriptorType 1 Costante Interfacce descritte (0x04) 2 BInterfaceNumber 1 Numero Numeri di interfacce 3 BAlternateSetting 1 Numero Valori usati per scegliere settaggi alternativi 4 BNumEndpoints 1 Numero Numeri di punti di fine usati in questa interfaccia 5 BinterfaceClass 1 Classi Classi codici 6 BInterfaceSubClass 1 SubClassi Subclassi codici 7 BInterfaceProtocol 1 Protocollo Protocollo codici 8 Iinteface 1 Index Index di stringa descritta che descrive questa interfaccia 34 -Il b-interface-number indica l’indice dell’interfaccia. Questo è basato sull’incremento dello zero di ogni nuova interfaccia descritta. -Il b-alternative-setting può essere usato per specificare le interfacce alternative.Queste interfacce alternative possono essere selezionate con la richiesta set-interface. -Il b-num-endpoints indica il numero di endpoint usato dall’interfaccia.Questo valore dovrebbe escludere di endpoint che sono usati per seguire il numero di endpoint descritti. -Il b-interface-class,b-interface-subclass e b-interface-protocol possono essere usati per specificare le classi supportate(e.g. HID, mass storage etc).Questo permette a molti dispositivi di usare un driver di classe preventiva al bisogno di scrivere driver specifici per il dispositivo. DESCRIZIONE DEI PUNTI DI FINE = ENDPOINT L’endpoint descritto è usato per descrivere altri endpoint. L’endpoint è sempre usato per l’endpoint di controllo è configurato prima di qualsiasi descrizione che è persino richiesta. Il nodo userà l’informazione da essa descritta per precisare la larghezza di banda richiesta sul BUS. Offset Campo Cifra Valore Descrizione 0 BLenght 1 Numero Size of descriptor in bytes (7 byte) 1 BDescriptorType 1 Costante Endpoint descriptor (0x05) 2 BEndpointAddress 1 Endpoint Endponit address, encoded as follows: -0...3b numero endpoint -4...6b Reserved set to zero -7b Direction(Ignored for control endpoint) 0=Out endpoint,1=In endpoint 3 BmAttributes 1 Bitmap Bit 0...1 Transfer type 00= Control 01=Isochronous 10=Bulk 11=Interrupt Bit 2…7 are reserved. If isochronous endpoint 35 Bit 3…2 synchronisation type (iso mode) 00=No synchronisation 01=Asynchronous 10=Adaptive 11=Synchronous Bit 5…4 Usage type (iso mode) 00=Data endpoint 01=Feedback endpoint 10=Explicit feedback data endpoint 11=reserved 4 w-MaxPacketsize 2 Numero Maximun racket size this endpoint is capable of sending or receiving 6 b-Interval 1 Numero Interval fot polling endpoint data transfers.Value in frame counts. Ignored for bulk & Control endpoint. Iso must equal 1 and field may range from 1 to 255 for interrupt endpoint. -bEndpoint-address=indica quando l’endpoint è descritto -bmAttributes=specifica il tipo di trasferimento.Questo può essere (control,interrupt,Isochronous,Bulk transfer)in una qualsiasi dimensione tra l’uno o l’altro. L’endpoint specificato addiziona gli attributi che possono essere selezionati come sincronizzazione e dei tipi d’uso. -w-max-packetsize=indica il massimo valore di carico dell’endpoint. -b-interval=è usato per specificare i tagli di intervalli in certi trasferimenti. L’unita sono espresse in frame questa afferma l’ugualianza di 1msec per dispositivi di low & full speed e di 125µsec per dispositivi di high speed. DESCRIZIONE STRINGA La descrizione della stringa fornisce un informazione leggibile in modo ottimale dalla gente. 36 Essa non si usa, in qualsiasi campo di stringa descritta INDEX può indicare lo zero settato non ci sono stringhe descritte disponibili. La stringa è chiusa nel formato UNICODE e prodotta per essere fatta come supporto di linguaggi.Un elenco di linguaggi USB (IDS) può essere trovato nel USB identificato nel(LANGIDS)versione 1.0. Offset Campo Cifra Valore Descrizione 0 BLenght 1 Numero Cifra di byte descritti 1 BDescriptorType 1 Costante Stringa descritta 2 wLANGID[0] 2 Numero Supporto linguaggio codice zero (e.g. 0x0409 Inghilterra -America) 3 wLANGID[1] 2 Numero Supporto linguaggio codice uno (e.g 0x0c09 Inghilterra –Australia) 4 wLANGID[2] 2 Numero Supporto linguaggio codice x (e.g 0x0407 Germania –standard) La principale stringa descritta mostra il formato di stringa descritta zero. Il nodo dovrebbe essere letto per determinare ciò che i linguaggi sono disponibili a fare.Un linguaggio supportato, quando può essere riferito inviando il linguaggio ID nel campo WINDEX per la richiesta della stringa descritta.La subsequenza delle stringhe si vede nel formato sotto. Offset Campo Cifra Valore Descrizione 0 BLenght 1 Numero Cifra di byte descritti 1 BDescriptorType 1 Costante Stringa descritta 2 BString n Unicode Unicode encoded string PACCHETTO DI SETUP Ogni dispositivo di USB deve rispondere a pacchetti di setup sul tubo di default. I pacchetti setup sono usati per la localizzazione e configurazione del dispositivo che esegue funzioni comuni per esempio il settaggio dell’indirizzo del dispositivo USB,che richiede un dispositivo descrittore sul controllo dello status del endpoint. Un nodo compilatore USB attende tutte le richieste procedano entro un periodo di massimo 5 secondi. Anche per un dispositivo con il tempo più stretto ci sono delle richieste specifiche: 37 -Dispositivo standard senza richiesta di dato stage deve essere completato in 50msec. -Dispositivo standard con richiesta di dati stage di avvio deve girare nuovamente sul dato a 500msec dopo la richiesta. Ogni pacchetto del dato deve essere inviato entro 500msec successivamente alla trasmissione del pacchetto precedente. Lo stato dello stage deve completarsi entro 50msec dopo la trasmissione del pacchetto dato, il comando set/address (che contiene il dato della fase)il processo di obbligo del comando serve per ritornare nuovamente status entro i 50msec. Allora il dispositivo ha 2msec per cambiare indirizzo prima della successiva richiesta inviata. Questi periodi di timeout sono proprio accettabili per dispositivi più lenti,ma possono avere una restrizione durante il debugging;a 50msec non fornisce molti caratteri del debugging che sono inviati a 960msec su una porta sincronizzata seriale o per un circuito di debugger/un emulatore a singolo passo o per controllare esecuzioni da esaminare l’intera registrazione. Come risultato l’USB richiede qualche differente metodo di debugger e qualche altro progetto di microcontrollori. Ogni richiesta si avvia con 8 byte lungo il pacchetto di setup che ha i formati seguenti: Offset Campo Cifra Valore Descrizione 0 BmRequestType 1 Bit-Map D7 Data phase transfer direction: 0=Host to device 1=Device to host d6..5 Type 0=standard 1=class 2=Endpoint 3=reserved d4..0 Recipient 0=Device 1=Intreface 2=Endpoint 3=Other 4..31=Reserved 1 BRequest 1 Value Request 2 WValue 2 Value Value 38 4 WIndex 2 Index of offset Index 6 WLenght 2 Count Number to bytes to transfer if there is a data phase -Il b-reques-typet= determina il campo di richiesta fatto, tipi di richieste contenitori di disegni. -Il bm-request= Il campo che determina i requisiti che devono essere eseguiti.Il bm-request-type è normalmente usato per esecuzioni è ramificazioni di un numero di opzioni diverse per esempio un dispositivo di richiesta standard, uno standard di interfacce richiede molte opzioni, uno standard del endpoint richiede opzioni, le classi del dispositivo richiedono varie opzioni ecc… Come si può analizzare un pacchetto di setup è letteralmente sulle nostre preferenze. Altrimenti si può scegliere di analizzare la prima b-request per precisare allora il tipo di ricezione basato su ogni richiesta. Gli standard richiesti sono comuni a tutti i dispositivi USB e sono dettagliati nella venuta delle pagine successive. Le classi richieste sono comuni alle classi del driver. Per esempio, tutti i dispositivi conformi alle classi HID che hanno in comune il set delle classi specifiche richieste. Questi dissensi in un dispositivo conforme alle classi di configurazione dissente nuovamente è quello di un dispositivi conformi alle classi di massa. Ed ultimo di tutti è il venditore che definisce una richiesta. Questa è una richiesta che il progettista del dispositivo USB può assegnare. Questa è normalmente la differenze tra dispositivo e dispositivo, ma questo è basato tutto sulla implementazione ed immaginazione. Una richiesta comune può essere diretta a un differente contenitore basata sulla ricezione che cambia differenti funzioni. Lo standard get/status richiede per esempio:un dispositivo diretto,un interfaccia o un endpoint.Quando direttamente un dispositivo che gira nuovamente serve per indicare lo status di sveglia remota se il dispositivo è potenziato. Tuttavia se la stessa richiesta è diretta all’interfaccia ritorna a zero,è potrebbe essere usata sul endpoint che ritornerà su un altro endpoint. Il w-value e il windex permettono ai parametri di essere di passare con una richiesta.Il w-lenght è usato per la specifica il numero di byte può essere trasferito in dati di fase. 39 RICHIESTA DI STANDARD Nella sezione 9.4 i dettagli delle specifiche USB “dispositivo standard” richiedono una richiesta di che può essere implementata per ogni dispositivo USB. Gli standard muniscono singole tavole di elementi raggruppanti le richieste. Considerando la maggior parte del firmware, analizziamo il pacchetto di setup di ricezione per esami più facili ad implementazioni. RICHIESTA DI STANDARD DEI DISPOSITIVI Ci sono correttamente 8 dispositivi standard di richiesta,tutti quanti sono dettagliati sotto: BmRequest Brequest WValue wIndex wLenght Data Zero Zero 2 Device status FEATURE Feature selector Zero Zero None Type 1000 GET STATUS (0X00) 0000b 0000 CLEAR 0000b (0X01) 0000 SET FEATURE (0X03) Feature selector Zero Zero None SET ADDRESS (0X05) Device address Zero Zero None 0000b 0000 0000b 1000 GET 0000b (0X06) DESCRIPTOR Descriptor type Zero & index or Descriptor Descriptor language lenght ID 0000 SET 0000b (0X07) DESCRIPTOR Descriptor type Zero & index or Descriptor Descriptor language lenght ID 1000 GET 0000b CONFIGURATION Zero Zero 1 Configuration value (0X08) 0000 SET Configuration 0000b CONFIGURATION value Zero Zero None (0X09) 40 -Il valore del get/status richiede direttamente al dispositivo di ritornare a 2 byte durante il dato stage con il seguente formato: D1 D1 D1 D1 D1 D1 5 4 3 2 1 0 D9 D8 D7 D6 D5 RESERVED D4 D3 D2 D1 D0 Self powered(d0) -Se il D0 è a set, allora questo indica il dispositivo che è settato a D1,perciò il dispositivo ha una remote wake-up abilitata e può svegliare il nodo durante la sospensione. Il remote wake-up può essere la richiesta del set/feature e del clear/feature per richiederla ci vuole un caratteristica di device-remote-wakeup (0x01) -La clear/feature e la set/feature possono essere usati per caratteristiche di settaggio booleane. Quando il disegno del dispositivo ricevitore ha una delle due caratteristiche di selezione è il deviceremote-wakeup ed il test. Il test permette al dispositivo di esibire varie condizioni. Questi sono ulteriori documenti della specifiche USB nella versione 2.0 - Il set-address è usato durante l’enumerazione per assegnare un unico indirizzo al dispositivo USB. L’indirizzo è specificato in w-value può solo essere un massimo di 127 indirizzi. Questa richiesta è unica in quel dispositivo nell’indirizzo non settato fino dopo il completamento dello stato di stage (vedi trasferimento di controllo). Tutt’altro richiede l’obbligo di completare prima lo stato di stage. -Il set descriptor/get descriptor è usato per ritornare alla specifica descrizione in w-value. La richiesta per la configurazione descritta ritornerà al dispositivo descritto, tutta l’interfaccia e L’endpoint descritto nella prima richiesta: 1)il punto di fine descritto non può essere accessibile direttamente dalla richiesta del [getdescriptor/set-descriptor]. 2)L’interfaccia descritta non può essere accessibile direttamente dalla richiesta del [setdescriptor/set-descriptor]. 3)La stringa descritta include un linguaggio in windex per permettere un linguaggio di supporto multiplo. 41 Il Get configuration/Set configuration é usato per richiedere la configurazione di set del dispositivo di corrente. Nel caso della configurazione richiesta, prende un byte e ritorna al dato stage indicato nello stato dei dispositivi. Un mezzo di valore del dispositivo non è configurato. Il set/configuration è usato per abilitare un dispositivo. Se dobbiamo contenere il valore del b-configuration-value nella configurazione descritta desiderata per abbassare i byte del w-value e per selezionare la configurazione che la rende capace di usare lo standard richiesto per la specificazione di corrente che definisce 5 standard di interfacce richieste che sono dettagliate nella tavola sotto: Bm-request- b-Request w-Value windex w-Lenght Data Interface Two Interface type 1000 0001b GET STATUS Zero (0x01) status 0000 0001b CLEAR Feature FEATURE Interface Zero None Interface Zero None Interface One Alternative selector (0x01) 0000 0001b SET Feature FEATURE selector (0x03) 1000 0001b GET Zero INTERFACE setting (0X0A) 0000 0001b SET Alternative INTERFACE Interface Zero None setting (0x11) -Il windex è normalmente usato per specificare l’interfaccia riferita alla richiesta diretta all’ interfaccia. Il suo formato è mostrato qua sotto: D1 D1 D1 D1 D1 D1 5 4 3 2 1 0 RESERVED D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 INTERFACE NUMBER -Il get/status è usato per ritornare allo status dell’interfaccia. 42 Per esempio la richiesta sull’interfaccia ritorna a due byte di 0x00; 0x00 (entrambi i byte sono riservati per usarli nel futuro). -La clear/feature e la set/feature richiedono di poter essere usati per le caratteristiche di set booleane. Quando il disegno è ricevuto dall’interfaccia, la revisione USB delle specifiche di corrente specifica nuovamente le due caratteristiche dell’interfaccia. -La get-interface e la set-interface hanno l’interfaccia alternativa settata che è descritta dettaglitamente sotto l’interfaccia descritta. RICHIESTE DELLO STANDARD DELL’ENDPOINT Le richieste dello standard dell’endpoint sono di quattro varietà che si trovano nella lista sotto: BmRequestType BRequest 1000 0010b wValue GET STATUS Zero Windex wLenght Data Endpoint 2 Endpoint (0X00) 0000 0010b status CLEAR Feature FEATURE selector Endpoint Zero None Endpoint Zero None Endpoint 2 Frame (0X01) 0000 0010b SET Feature FEATURE selector (0X03) 1000 0010b SYNCH Zero FRAME number (0X12) -Il campo del windex è normalmente usato per specificare il riferimento dell’endpoint e la direzione della richiesta diretta all’endpoint. Il suo formato è mostrato qui sotto: D1 D1 D1 D1 D1 D1 5 0 4 3 2 1 D9 D8 RESERVED D7 D6 D5 D4 DIR RESERVED D3 D2 D1 D0 ENDP NUMBER Il get/status ritorna ai due byte indicati nello stato di arresto e di stallo del punto di fine. Il formato del ritorno dei due byte è illustrato qui sotto: 43 D1 D14 D1 D1 D1 D1 5 2 1 0 3 D9 D8 D7 D6 D5 D4 D3 D2 D1 RESERVED D0 Halt La clear/feature e la set/feature sono usati per settare altre caratteristiche.Lo standard dell’endpoint definisce correttamente la caratteristica selezionata, [stop dell’endpoint =0x00] che permette al nodo di fare il clear ed il set nell’endpoint. Solo l’endpoint nel default è raccomandato ad avere questa funzionalità. La richiesta della frame sincronizzata è usata per riportare la sincronizzazione frame. ENUMERAZIONE Precisando che l’enumerazione è il processo di un dispositivo connesso al BUS con dei parametri che richiedono un consumo di potenza, vari numeri e tipi di endpoint, classi di prodotto ecc. Il nodo assegna allora al dispositivo un indirizzo che rende capace (la configurazione permettendo) il dispositivo di trasferire i dati sul BUS. Genericamente l’enumerazione è un processo dettagliato nella sezione 9.1.2 di specifiche USB. Tuttavia quando l’USB scrive nel firmware per un primo tempo, è abile nel conoscere esattamente la risposta del nodo durante l’enumerazione, anziché il processo di enumerazione generale dettagliata nella specificazione. Nei windos comuni l’enumerazione implica passi seguenti: 1) Il nodo o hub percepisce la connessione di un nuovo dispositivo che arriva su una resistenza sulla coppia del dato. Il nodo aspetta almeno 1ohm per permettere al “plug” di essere inserito pienamente e potersi stabilizzare sul dispositivo. 2) Le emissioni un nodo del reset è piazzato sul dispositivo nello stato di default. Il dispositivo può adesso rispondere all’ indirizzo di default a zero. 3) Il nodo del windos chiede per i primi 64 byte il dispositivo descrittore. 4) Dopo aver accolto i primi 8 byte il dispositivo descrittore, immediatamente dirama un’altro reset al BUS. 5)Adesso il nodo dirama un comando di indirizzo di set,piazzando sul dispositivo lo stato di indirizzo. 44 6) Il nodo chiede 18 byte interi del dispositivo descrittore. 7) Ci chiede per i primi 9 byte la descrizione della configurazione. 8) Il nodo chiede per 255 byte della configurazione descritta. 9) Il nodo chiede per qualsiasi stringa descritta una specifica. Alla fine del passo numero 9, windos ci chiede un driver per il tuo dispositivo. È allora vedere la richiesta di tutte le descrizioni dirama prima nuovamente una configurazione di set richiesta. La principali enumerazione è un processo comune a windos 2000, windos xp e windos 98. Nel passo numero 4 è sovente confondere la gente per la scritta firmware vista per la prima volta. Il nodo chiede per i primi 64 byte la descrizione del dispositivo, cosi quando il reset del nodo del tuo dispositivo ha i primi 8 byte, è naturale pensare che c’è qualcosa sbagliato nel tuo dispositivo descritto o come il tuo firmware è abilitato alla richiesta. Tuttavia se ti diranno, che se continui a persistere nel implementare il comando di indirizzo del set e che spegnendo chiede la media dei 18 byte della descrizione del dispositivo successivo. Normalmente quando qualcosa è sbagliato con la descrizione e come se esso è stato inviato, il nodo nel tentativo di leggere per tre volte con lunghe pause tra ogni prova. Dopo il terzo tentativo, il nodo smetterà di riportare un errore sul tuo dispositivo. 45 SOMMARIO STANDARD USB.................................................................................................................................... 3 CONNETTORI ....................................................................................................................................... 8 ELETTRICA ........................................................................................................................................... 9 IDENTIFICAZIONI DI VELOCITA’................................................................................................ 10 POTENZA(VBUS) ................................................................................................................................ 11 SOSPENSIONE DELLA CORRENTE .............................................................................................. 12 VELOCITA’ TRASMISSIONE DATI ............................................................................................... 14 PROTOCOLLI USB............................................................................................................................. 14 CAMPI USB CON PACHETTI COMUNI ........................................................................................ 15 PUNTO DI FINE = ENDPOINT (ENDP)........................................................................................... 16 TIPI DI PACCHETTO USB................................................................................................................ 16 FUNZIONI USB.................................................................................................................................... 17 PUNTO DI FINE = ENDPOINT ......................................................................................................... 18 I TUBI = PIPE....................................................................................................................................... 18 TIPI DI ENDPOINT............................................................................................................................. 19 TRASFERIMENTO DI CONTROLLO............................................................................................. 19 TRASFERIMENTO DI INTERRUPT ............................................................................................... 24 TRASFERIMENTO SINCRONIZZATO .......................................................................................... 25 DIMENSIONI DEL TRASFERIMENTO .......................................................................................... 26 GESTIONE DELLA LARGHEZZA DI BANDA.............................................................................. 28 DESCRIZIONE USB............................................................................................................................ 28 46 COMPOSIZIONE DELL’USB............................................................................................................ 30 DESCRIZIONE DEL DISPOSITIVO ................................................................................................ 30 CONFIGURAZIONE DESCRITTA................................................................................................... 32 DESCRIZIONE INTERFACCIA ....................................................................................................... 34 DESCRIZIONE DEI PUNTI DI FINE = ENDPOINT...................................................................... 35 DESCRIZIONE STRINGA ................................................................................................................. 36 PACCHETTO DI SETUP .................................................................................................................... 37 RICHIESTA DI STANDARD ............................................................................................................. 40 RICHIESTA DI STANDARD DEI DISPOSITIVI............................................................................ 40 RICHIESTE DELLO STANDARD DELL’ENDPOINT.................................................................. 43 IGOR LOMBARDI ALESSANDRO RONCHINI 47