Download Documentazione del progetto

Transcript
CAPITOLO 3.
24
STUDIO DI FATTIBILITÀ
accennato in apertura del lavoro, la scheda hardware utilizzata fornisce, oltre
ad un microprocessore programmabile integrato, tutta la circuiteria necessaria all'implementazione hardware del protocollo USB.
Ciò che, dunque, rimane comunque necessario è impostare il rmware del
dispositivo hardware perché sia in grado di rispondere correttamente alle richieste che il sistema operativo gli invierà una volta eettuato il collegamento
sico e fornita l'alimentazione. La specica USB [3] fornisce tutti i dettagli
su come queste richieste devono essere gestite da parte del dispositivo.
Ogni richiesta da parte dell'host arriva al dispositivo attraverso la sua Default Control Pipe (endpoint 0). Questa richiesta è formata da diversi campi,
come mostrato in Figura 3.5
Il campo
bmRequestType, una bitmap, specica le caratteristiche generali del
trasferimento, cioè la direzione, il tipo di richiesta (standard, riferita alla
classe del dispositivo, ecc) e l'oggetto a cui fa riferimento (dispositivo, interfaccia, endpoint);
bRequest
è un codice che identica la richiesta vera e
propria (per una lista delle richieste standard che tutti i dispositivi USB
devono gestire si faccia riferimento alla Figura 3.6). I successivi due campi
wValue
(
e
wIndex ) variano a seconda del tipo di richiesta, ma sono utilizzati
wLength
per passare dei parametri al dispositivo assieme alla richiesta. Inne
specica quanti byte di dati ci si aspetta come risposta.
Come si vede in Figura 3.6, le richieste standard che ogni dispositivo USB
deve essere in grado di gestire sono molte, e mettono in evidenza altri due
fondamentali concetti che devono essere implementati dal dispositivo: le congurazioni e i descrittori. Ogni dispositivo USB, infatti, può avere diverse
congurazioni :
fondamentalmente una congurazione è un insieme di inter-
facce implementate dal dispositivo e l'insieme delle
di ogni interfaccia.
impostazioni alternative
Se, come detto, ogni interfaccia è associata ad un in-
sieme di endpoint che la implementano, usando un'impostazione alternativa
per quell'interfaccia essa può variare dinamicamente il numero e il tipo di
endpoint a cui è associata. Per quanto sicuramente permette la gestione di
dispositivi anche molto complessi, questa caratteristica è comunque raramente utilizzata.
I
descrittori,
invece, sono le strutture dati con cui eettivamente vengono
specicati tutti gli attributi del dispositivo.
Tra questi attributi abbiamo
la specica del dispositivo (numero di congurazioni, numero di interfacce,
numero di endpoint,
vendor,
ecc), la specica delle congurazioni, delle in-
terfacce e degli endpoint per il dispositivo, con inoltre una serie di descrittori
stringa utilizzati per memorizzare e inviare delle informazioni leggibili e presentabili agli utenti. Inne, nel caso di dispositivi che possono essere eseguiti
high-speed, è necessario specicare sia una congurazione di compatibilità
per l'esecuzione in full-speed (dichiarando descrittori di entrambi i tipi) e,
in