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