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