Top Banner
16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 1 LE BUS USB (U niversal S erial B B us) DIAPORAMA EN LIGNE => www.ecole.ensicaen.fr/~vienne
101

16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

Apr 03, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 1

LE BUS USB

(Universal Serial BBus)

DIAPORAMA EN LIGNE => www.ecole.ensicaen.fr/~vienne

Page 2: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 2

USB EST UN BUS "CONSTRUCTEURS"

USB-IF : USB IImplementers FForum

A nonprofit corporation formed to facilitate the development of USB compliant products and promote technology

COMPAQ

HEWLETT-PACKARD

INTEL

LUCENT

MICROSOFT

NEC

PHILIPS

www.usb.org

TOUTES LES INFORMATIONS OFFICIELLES SONT DISPONIBLES (EN ANGLAIS) SUR CE SITE ET NOTAMMENT LA SPÉCIFICATION DE USB 2.0 (650 pages …)

Page 3: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 3

JANVIER 1996

Après plusieurs années de développement, parution de la release 1.0

SEPTEMBRE1998Parution de la release 1.1

La vitesse du bus est limitée à :

- la vitesse basse (low speed) : 1.5 Mbits/seconde.

- la vitesse pleine (full speed) : 12 Mbits/seconde.

AVRIL 2000

Parution de la release 2.0

Apparition de la vitesse haute (high speed) : 480 Mbits/secondeAvec cette nouvelle vitesse le bus USB prend enfin son essor pour connaître le succès que l'on connaît aujourd'hui.

Concurrent de USB : IEEE-1394 (FireWire)

400 Mbits/sec

IEEE-1394b => 3.2 Gbits/sec

ATTENTION :

USB 2.0 EST UNE NORME

PAS UNE VITESSE !

SI VOTRE DEVICE SUPPORTE LA VITESSE HAUTE IL DOIT COMPORTER LE LOGO :

Page 4: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 4

UN LIVRE QUI SEMBLE FAIRE RÉFÉRENCE :

"USB Complete" par Jan Axelson (3ème Édition parue en Août 2005)

Traduit en de multiples langues … mais pas en français!

UN EXEMPLAIRE EST DISPONIBLE À LA BIBLIOTHEQUE DE L'ÉCOLE.

Page 5: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 5

ARCHITECTURE DU BUS USB

PC

HOST

CONTROLLER

ROOT

HUB

Par ex. INTEL 82371 AB

Par ex. INTEL 82801 AB (4 ports USB)

LE BUS USB EST UN BUS EN ÉTOILE À PLUSIEURS NIVEAUX

Fonction

HUBFonction

Fonction

Fonction

Fonction

HUB

Fonction

Fonction

Fonction

Fonction : une souris, une webcam, une imprimante, une clé USB …

Device : C'est une Fonction ou un HUB.

Page 6: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 6

ARCHITECTURE DU BUS USB

LE NOMBRE DE NIVEAUX EST LIMITÉ À 7. (LE HOST CORRESPOND AU NIVEAU 1)

CONFIGURATION MAXIMUM

LE NOMBRE DE HUB ENTRE LE HOST ET UN DEVICE EST LIMITÉ À CINQ.

LA LONGUEUR D'UN CÂBLE DE LIAISON EST LIMITÉE À 5 MÈTRES (3 MÈTRES POUR LA VITESSE BASSE).

DE CE FAIT, LE BUS USB EST UN BUS DE BUREAU.

IL N'A PAS, À PRIORI, LA VOCATION À ÊTRE UN BUS INDUSTRIEL.

Page 7: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 7

LE RESTAURANT USB

PC

HOST

CONTROLLER

ROOT

HUB

Fonction

HUBFonction

Fonction

Fonction

Fonction

HUB

Fonction

Fonction

Fonction

VOICI LE RESTAURANT

VOICI LA CUISINE !

VOICI LA SALLE DU RESTAURANT !

LA SALLE DU RESTAURANT A UNE CAPACITÉ DE 127 TABLES (127 DEVICES).

IL PEUT Y AVOIR JUSQU'À 31 CLIENTS À UNE TABLE.

Page 8: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 8

LES CLIENTS D'UN RESTAURANT USB

EN FAIT, IL N'Y A PAS DE CLIENT INDIVIDUEL :CHAQUE FOIS QUE LA PORTE DU RESTAURANT EST FRANCHIE C'EST PAR UN GROUPE COMPOSÉ D'UN CERTAIN NOMBRE DE CLIENTS ACCOMPAGNÉS D'UN CHEF (ENDPOINT 0).

UN GROUPE : AU MAXIMUM 31 CLIENTS (Y COMPRIS LE CHEF).

LE GROUPE SE VOIT ATTRIBUER L'UNE DES 127 TABLES.

ATTENTION : IL S'AGIT D'UN RESTAURANT D'ENTREPRISES :

UNE FOIS LE GROUPE INSTALLÉ À TABLE, ON VA DEMANDER AU CHEF DE COMMUNIQUER CERTAINES INFORMATIONS (DESCRIPTEURS), ENTRE AUTRES :

- DE QUELLE ENTREPRISE (VID) S'AGIT-IL ?

- À L'INTÉRIEUR DE CETTE ENTREPRISE, DE QUEL SERVICE (PID) S'AGIT-IL ?

CECI ÉTANT FAIT, IL SERA DEMANDÉ AU CHEF DE PRÉCISER LE NOMBRE DE CLIENTS QUI L'ACCOMPAGNENT ET QUEL SERVICE POUR CHACUN DES MEMBRES DU GROUPE.

DEUX TYPES DE CLIENTS :

- LE CLIENT QUI VIENT POUR MANGER.

- LE CLIENT QUI AMÈNE DE LA NOURITURE POUR LA CUISINE.

- SEUL LE CHEF EST LÀ POUR MANGER ET AMENER DE LA NOURITURE.

Page 9: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 9

LES CLIENTS D'UN RESTAURANT USB (SUITE)

EN FAIT, LA FONCTION ESSENTIELLE DU CHEF C'EST DE FAIRE L'INTERLOCUTEUR AVEC LA CUISINE POUR PRÉSENTER CHAQUE CLIENT

EN PRÉCISANT LA NATURE DU SERVICE REQUIS POUR CHACUN .

ACCESSOIREMENT, IL NE LUI EST PAS INTERDIT,PAR LA SUITE, DE PARTICIPER AU REPAS.

LES CLIENTS QUI ACCOMPAGNENT LE CHEF SONT DE TROIS SORTES :

LES CLIENTS HYPOGLYCÉMIQUES.

LES CLIENTS BOULIMIQUES.

LES CLIENTS "COOL".

Page 10: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 10

LES CLIENTS HYPOGLYCÉMIQUES (INTERRUPT TRANSFERT)

POUR CE TYPE DE CLIENT IL EST ESSENTIEL D'ASSURER QUE L'INTERVALLE DE TEMPS ENTRE DEUX PLATS NE DÉPASSE PAS UNE

CERTAINE VALEUR FIXÉE PAR LE CLIENT.

SI, PAR EXEMPLE, CET INTERVALLE DE TEMPS EST DEUX MINUTES CELA SIGNIFIE QUE LE CLIENT NE RESTERA JAMAIS PLUS DE DEUX

MINUTES SANS VOIR LE SERVEUR S'OCCUPER DE LUI.

IL EST TOUTEFOIS POSSIBLE QUE MOINS DE DEUX MINUTES S'ÉCOULENT ENTRE DEUX PASSAGES DU SERVEUR POUR CE CLIENT.

IL NE S'AGIT DONC PAS D'UN SERVICE OBLIGATOIREMENT PÉRIODIQUE.

EXEMPLES : SOURIS, CLAVIER …

Page 11: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 11

LES CLIENTS "COOL" (BULK TRANSFERT)

CES CLIENTS N'IMPOSENT AUCUNE CONTRAINTE TEMPORELLE : ILS ONT TOUT LE TEMPS QU'IL FAUDRA POUR MANGER!

NATURELLEMENT, SI ON LEUR PRÉSENTE UN PLAT TROP VITE, CES CLIENTS ONT LA POSSIBILITÉ DE DIRE QU'ILS N'ONT PAS ENCORE TERMINÉ LE PLAT PRÉCÉDENT ET QUE DONC IL CONVIENDRA DE PRÉSENTER, À NOUVEAU, LE PLAT SUIVANT PLUS TARD (NAK).

VU DE LA CUISINE CE SONT ÉVIDEMMENT LES CLIENTS LES PLUS FACILES À SATISFAIRE.

EXEMPLES : IMPRIMANTE, SCANNER …

Page 12: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 12

LES CLIENTS BOULIMIQUES (ISOCHRONOUS TRANSFERT)

CES CLIENTS EXIGENT UN DÉBIT GARANTI DE NOURRITURE !

VU DE LA CUISINE CE SONT ÉVIDEMMENT LES CLIENTS LES PLUS DIFFICILES À SATISFAIRE.

C'EST PAR EXEMPLE LE MANGEUR DE RACLETTE QUI EXIGE 50 GRAMMES DE FROMAGE À LA MINUTE … ET LA CUISINE EST TENUE DE RESPECTER

CETTE EXIGENCE.

À NOTER QUE CE TYPE DE CLIENT EST UN VÉRITABLE GLOUTON ET QUE MÊME SI IL Y A UN ASTICOT DANS SON ASSIETTE IL N'EST PAS QUESTION

DE LUI RAMENER UNE ASSIETTE CORRECTE. TANT PIS : C'EST DÉJÀ AVALÉ!

EXEMPLES : DEVICES AUDIO & VIDÉO

Page 13: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 13

LES LIMITES DU RESTAURANT USB

CERTES, LE RESTAURANT EST GRAND (127 TABLES).

CERTES, UNE TABLE PEUT ACCUEILLIR JUSQU'À 31 CLIENTS.

MAIS …

SI BEAUCOUP DE CLIENTS COMMANDENT UNE RACLETTE :

IL DEVIENT IMPOSSIBLE D'ASSURER UN SERVICE CORRECT !

DONC : LA CUISINE PEUT REFUSER DE S'OCCUPER D'UNE TABLE DANS LA MESURE OÙ ELLE SAIT QU'ELLE EST INCAPABLE D'ASSURER LE SERVICE

DEMANDÉ.

SOLUTION (?) : EXISTE T IL UN AUTRE RESTAURANT USB ?

Page 14: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 14

LES RESTAURANTS USB

PC

HOST

CONTROLLER 1

ROOT

HUB 1

Fonction

HUBFonction

Fonction

Fonction

Fonction

HUB

Fonction

Fonction

Fonction

HOST

CONTROLLER 2

ROOT

HUB 2

Fonction

Fonction

Fonction

Fonction

Fonction

Fonction

Fonction

Fonction

HUB

Page 15: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 15

LES RESTAURANTS USB (SUITE)

COMBIEN DE CONTRÔLEURS USB DANS LE PC UTILISÉ POUR VISIONNER CE DIAPORAMA ?

DEUX POSSIBILITÉS POUR OBTENIR LA RÉPONSE :

-1- AVEC LE POSTE DE TRAVAIL.

-2- AVEC LE LOGICIEL USBVIEW.

USBVIEW EST UN PETIT LOGICIEL FREEWARE PROPOSÉ PAR MICROSOFT QUE L'ON PEUT FACILEMENT OBTENIR PAR INTERNET :

Google => USBVIEW

CE LOGICIEL NOUS SERA TRÈS UTILE EN TP.

Page 16: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 16

LES CONTRÔLEURS USB DE CE PC

VOICI L'INFORMATION FOURNIE PAR USBVIEW :

IL Y A CINQ CONTRÔLEURS USB DANS CE PC.

Page 17: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 17

LES CONTRÔLEURS USB DE CE PC

VOICI L'INFORMATION FOURNIE PAR USBVIEW :

IL S'AGIT D'UNE SOURIS

Page 18: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 18

USB On-The-Go

USB

USB On-The-Go : INTRODUIT EN 2001 COMME UN COMPLÉMENT À LA SPÉCIFICATION 2.0.

USB On-The-Go DÉFINIT UN "HOST COMPUTER" AVEC DES POSSIBILITÉS RÉDUITES POUR PERMETTRE UNE

COMMUNICATION USB "PERR TO PEER" ENTRE DEUX APPAREILS.

NB : À PROPOS DE USB On-The-Go => ARTICLE À NOTRE AVIS EXCELLENT (ET HUMOURISTIQUE !) REPRODUIT À LA PAGE 25 [USB (Présentation)] DE VOTRE POLYCOPIÉ.

Page 19: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 19

WIRELESS USB (WUSB)

USB SANS FIL : CELA EXISTE !

480 MBits/sec jusqu'à 3 mètres et 110 Mbits/sec jusqu'à 10 mètres, pour une consommation de 100 à 300 mW.

Bluetooth : 1 Mbits/sec jusqu'à 10 mètres… pour une consommation de à peine 1 mW.

LES PREMIERS DEVICES WUSB SONT ATTENDUS POUR LE MILIEU DE L'ANNÉE 2007.

PLUS D'INFORMATIONS : www.usb.org

Page 20: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 20

BUS USB : ASPECT ÉLECTRIQUE

- .

VBus

Gnd

D+

D-

Maximum 5 mètres (3 mètres pour la vitesse basse)

UN CÂBLE USB COMPORTE 4 FILS :

- DEUX FILS D+ ET D- (PAIRE DIFFÉRENTIELLE) POUR VÉHICULER LES DONNÉES.

- DEUX FILS (ROUGE VBus, ET NOIR (Masse)) POUR L'ALIMENTATION (SI BESOIN) DU DEVICE.

HORMIS POUR LA VITESSE BASSE OÙ CELA N'EST PAS OBLIGATOIRE CE CÂBLE EST BLINDÉ.

VBus EST CAPABLE DE DÉLIVRER 500 mA SOUS 5V POUR ALIMENTER UN OU PLUSIEURS DEVICES.

Volts

+2,8V

+0,3V

État Haut

État Bas

ÉTAT DU BUS

Differential "1" D+ à l'état haut D- à l'état bas

Differential "0" D+ à l'état bas D- à l'état haut

J State (Low Speed)

J State (Full Speed)

K State (Low Speed)

K State (Full Speed)

Differential "0"

Differential "1"

Differential "1"

Differential "0"

SE0 D+ et D- à l'état bas

PLUS D'INFORMATIONS :

NORME USB 2.0 CHAPTER 7

Page 21: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 21

CODAGE DES INFORMATIONS

LE BUS USB EST UN BUS SÉRIE SYNCHRONE QUI UTILISE LE CODAGE NRZI (Non Return to Zero Inverted).

- LES 0 LOGIQUES PROVOQUENT UNE TRANSITION.

- LES 1 LOGIQUES NE PROVOQUENT PAS DE TRANSITIONS.

GRACE AU CODAGE NRZI LE RÉCEPTEUR PEUT RECONSTITUER L'HORLOGE DE L'ÉMETTEUR … À CONDITION QUE LA DONNÉE TRANSMISE

COMPORTE SUFFISAMMENT DE BITS À 0.

POUR PALLIER À CET INCONVÉNIENT USB UTILISE LA TECHNIQUE DU "BIT STUFFING".

Page 22: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 22

CODAGE DES INFORMATIONS (SUITE)

LE "BIT STUFFING" :

Page 23: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 23

DÉTECTION DE LA VITESSE DE TRAVAIL D'UN DEVICE

DANS UN DEVICE FONCTIONNANT À BASSE VITESSE (1,5 Mbits/Sec) LA LIGNE D- COMPORTE UNE RÉSISTANCE DE PULL UP

RELIÉE À +3,3V.

C'EST AINSI QUE, DÈS LA CONNEXION DU DEVICE AU HUB, CELUI-CI DÉTECTE LA PRÉSENCE D'UN DEVICE "LOW SPEED".

Page 24: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 24

DÉTECTION DE LA VITESSE DE TRAVAIL D'UN DEVICE (SUITE)

DANS UN DEVICE FONCTIONNANT À VITESSE PLEINE (12 Mbits/Sec) LA LIGNE D+ COMPORTE UNE RÉSISTANCE DE PULL UP

RELIÉE À +3,3V.

C'EST AINSI QUE, DÈS LA CONNEXION DU DEVICE AU HUB, CELUI-CI DÉTECTE LA PRÉSENCE D'UN DEVICE "FULL SPEED".

Page 25: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 25

DÉTECTION DE LA VITESSE DE TRAVAIL D'UN DEVICE (SUITE ET FIN)

QUID POUR UN DEVICE SUPPORTANT LA VITESSE HAUTE (480 Mbits/Sec) ?

TOUS LES DEVICES SUPPORTANT LA VITESSE HAUTE SONT ÉGALEMENT CAPABLES DE TRAVAILLER À LA VITESSE PLEINE.

LORS DE LA CONNEXION AVEC LE HUB CES DEVICES SE PRÉSENTENT COMME DES DEVICES VITESSE PLEINE (PULL UP SUR D+).

Lorsque le host effectue le reset d'un device capable de travailler à vitesse haute, ce device impose momentanément un état K sur les lignes D+ et D-. Si ce device est connecté à un hub high speed, celui ci détecte cet état K et répond en envoyant une séquence KJKJKJ dite "Chirp" (littéralement gazouillis) sur les lignes D+ et D-. À la réception de cette séquence, le device déconnecte sa résistance de pull up entre D+ et 3,3V et fonctionne désormais à vitesse haute. Dans le cas contraire, il continue à fonctionner à vitesse pleine.

Page 26: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 26

TRANSFERT

QUAND, COTÉ HOST, UN DRIVER DÉSIRE COMMUNIQUER AVEC UN DEVICE IL INITIALISE UN TRANSFERT.

LA NORME DÉFINIT UN TRANSFERT COMME "THE PROCESS OF MAKING AND CARRYING OUT A COMMUNICATION REQUEST".

UN TRANSFERT PEUT SE LIMITER À L'ENVOI DE QUELQUES OCTETS (SOURIS…) OU À LA TRANSMISSION D'UN GROS FICHIER (IMPRIMANTE …).

NOUS ALLONS VOIR QU'IL EXISTE QUATRE TYPES DE TRANSFERT ET SOUVENONS NOUS DU RESTAURANT USB :

CONTRÔLE => POUR LES COMMUNICATIONS AVEC LE CHEF D'UNE TABLE.

INTERRUPTION => POUR LES COMMUNICATIONS AVEC LES CLIENTS HYPOGLYCÉMIQUES.

BLOC (BULK) => POUR LES COMMUNICATIONS AVEC LES CLIENTS "COOL".

ISOCHRONES => POUR LES COMMUNICATIONS AVEC LES CLIENTS BOULIMIQUES.

Page 27: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 27

QUATRE TYPES DE TRANSFERT (SUITE)

TRANSFERT DE CONTRÔLE

- Ce type de transfert est destiné à la configuration et la commande d'un Device.

- Ces transferts sont notamment utilisés pour la phase d'énumération.

- Un système de retransmission en cas d'erreur assure la fiabilité du transfert.

- TOUS les devices USB supportent ce type de transfert.

PHASE D'ÉNUMÉRATION :

C'est l'installation à une table d'un Device (Un certain nombre de clients accompagnés d'un chef).

Le host interroge le chef (endpoint 0) pour identifier le groupe de clients (Entreprise, service dans l'entreprise, vitesse, nombre de clients (endpoints) et

pour chaque client (endpoint) quel type de service …).

En fait, les transferts de contrôle sont avant tout destinés au dialogue entre la cuisine (le host) et un chef (endpoint 0 d'un device).

Page 28: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 28

QUATRE TYPES DE TRANSFERT (SUITE)

TRANSFERT PAR INTERRUPTION

- Ces transferts sont utilisés pour les devices ayant peu de données à transmettre ou à recevoir, mais avec un délai garanti.

- Il ne s'agit pas vraiment d'interruption (au sens microprocesseur du terme) mais d'interrogation du device par le host à une cadence minimum garantie.

- Un système de retransmission en cas d'erreur assure la fiabilité du transfert.

C'est ce type de transfert que l'on retiendra pour une souris, un clavier …

Page 29: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 29

QUATRE TYPES DE TRANSFERT (SUITE)

TRANSFERT PAR BLOC (BULK TRANSFERT)

- Ces transferts, parfois appelés transferts asynchrones, sont adaptés aux gros volumes de données sporadiques et sans contrainte temporelle.

- Le host peut retarder un transfert en bloc jusqu'à disposer de suffisamment de bande passante.

- Un système de retransmission en cas d'erreur assure la fiabilité du transfert.

- Ce type de transfert n'existe que pour les vitesses pleine et haute.

C'est ce type de transfert que l'on retiendra pour une imprimante, un scanner, une clé USB …

Page 30: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 30

QUATRE TYPES DE TRANSFERT (SUITE)

TRANSFERT ISOCHRONE (ISOCHRONOUS TRANSFERT)

- Ces transferts sont à débit constant et destinés aux flux de données importants.

- Le débit du canal est garanti.

- Les erreurs sont signalées mais il n'y a pas de retransmission.

- Ce type de transfert n'existe que pour les vitesses pleine et haute.

C'est ce type de transfert que l'on retiendra pour tous les devices audio & vidéo …

Page 31: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 31

TERMINAISON (ENDPOINT)

NOUS ALLONS SOUVENT ÊTRE AMENÉS À PARLER DE ENDPOINTS. DE QUOI S'AGIT-IL ?

C'EST TRÈS SIMPLE SI L'ON SE SOUVIENT DU RESTAURANT USB …

UNE TABLE C'EST UN CHEF ACCOMPAGNÉ DE PLUSIEURS CLIENTS.

TRADUCTION :

UN DEVICE EST OBLIGATOIREMENT COMPOSÉ DU ENDPOINT 0 (LE CHEF) ET D'UN CERTAIN NOMBRE D'AUTRES ENDPOINTS (LES CLIENTS). CES

DERNIERS ENDPOINTS ONT UN NUMÉRO ENTRE 1 ET 15 (SAUF POUR LA VITESSE BASSE OU LE NOMBRE EST LIMITÉ À 3).

DONC : CHAQUE CLIENT À UN NUMÉRO (ENTRE 1 ET 15; 0 POUR LE CHEF).

MAIS (HORMIS POUR LE CHEF) IL Y A LE CLIENT QUI EST LÀ POUR MANGER, ET LE CLIENT QUI EST LÀ POUR APPORTER DE LA NOURRITURE.

IL PEUT DONC Y AVOIR, PAR EXEMPLE, DEUX CLIENTS NUMÉRO 1 : LE CLIENT NUMÉRO 1 QUI AMÈNE DE LA NOURRITURE (ENDPOINT DE TYPE IN) ET LE CLIENT

NUMÉRO 1 QUI EST LÀ POUR MANGER (ENDPOINT DE TYPE OUT).

Page 32: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 32

CANAL (PIPE)

UN CANAL (PIPE) USB N'EST PAS UN OBJET PHYSIQUE.

C'EST JUSTE UNE ASSOCIATION ENTRE UN ENDPOINT D'UN DEVICE ET LE LOGICIEL DU CONTRÔLEUR USB DU HOST.

Page 33: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 33

ORGANISATION DU TRAFIC SUR LE BUS

LE HOST DOIT ESSAYER D'ASSURER UN MAXIMUM DE RAPIDITÉ POUR CHAQUE TRANSFERT ET CELA AVEC UNE SEULE PAIRE DIFFÉRENTIELLE

(COMMUNICATION HALF DUPLEX).

CETTE PAIRE DIFFÉRENTIELLE CONSTITUE UN CHEMIN PHYSIQUE PARTAGÉ PAR TOUS LES DEVICES.

TRADUCTION :

IL N'Y A QU'UN SEUL SERVEUR DANS LA SALLE DE RESTAURANT.

CELUI-CI PEUT ÊTRE UTILISÉ SOIT :

- POUR AMENER DE LA NOURRITURE À UN CLIENT (ENDPOINT DE TYPE OUT)

- POUR PRÉLEVER DE LA NOURRITURE À UN CLIENT (ENDPOINT DE TYPE IN).

ET CHAQUE CLIENT DOIT ÊTRE SERVI CONFORMÉMENT AUX SOUHAITS QU'IL A EXPRIMÉ EN S'INSTALLANT AU RESTAURANT.

Page 34: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 34

ORGANISATION DU TRAFIC SUR LE BUS

LE HOST DÉCOMPOSE LE TRAFIC SUR LE BUS EN TRAMES :

- TRAMES DE 1 ms POUR LES VITESSES BASSE ET PLEINE.- TRAMES (MICRO TRAMES) de 125 μs POUR LA VITESSE HAUTE.

Sta

rt

of

Fra

me

Sta

rt

of

Fra

me

De

vic

e 1

, E

nd

po

int

2

De

vic

e 2

, E

nd

po

int

1

De

vic

e 5

, E

nd

po

int

1

De

vic

e 5

, E

nd

po

int

3

NO

N U

TIL

ISÉ

De

vic

e 3

, E

nd

po

int

1

Sta

rt

of

Fra

me

Sta

rt

of

Fra

me

De

vic

e 1

, E

nd

po

int

2

De

vic

e 2

, E

nd

po

int

2

De

vic

e 5

, E

nd

po

int

3

NO

N U

TIL

ISÉ

De

vic

e 3

, E

nd

po

int

2

Sta

rt

of

Fra

me

Sta

rt

of

Fra

me

De

vic

e 1

, E

nd

po

int

2

De

vic

e 2

, E

nd

po

int

3

De

vic

e 5

, E

nd

po

int

2

De

vic

e 5

, E

nd

po

int

3

NO

N U

TIL

ISÉ

De

vic

e 3

, E

nd

po

int

3

TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE

LE HOST ATTRIBUE À CHAQUE TRANSFERT UNE PORTION DE TRAME. CETTE PORTION CORRESPOND À CE QUE L'ON APPELLE UNE TRANSACTION. LE HOST EST LIBRE

D'ORGANISER LIBREMENT LES TRANSACTIONS À L'INTÉRIEUR D'UNE TRAME.

TRANSACTIONS

Page 35: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 35

ORGANISATION DU TRAFIC SUR LE BUS

Sta

rt

of

Fra

me

Sta

rt

of

Fra

me

De

vic

e 1

, E

nd

po

int

2

De

vic

e 2

, E

nd

po

int

1

De

vic

e 5

, E

nd

po

int

1

De

vic

e 5

, E

nd

po

int

3

NO

N U

TIL

ISÉ

De

vic

e 3

, E

nd

po

int

1

Sta

rt

of

Fra

me

Sta

rt

of

Fra

me

De

vic

e 1

, E

nd

po

int

2

De

vic

e 2

, E

nd

po

int

2

De

vic

e 5

, E

nd

po

int

3

NO

N U

TIL

ISÉ

De

vic

e 3

, E

nd

po

int

2

Sta

rt

of

Fra

me

Sta

rt

of

Fra

me

De

vic

e 1

, E

nd

po

int

2

De

vic

e 2

, E

nd

po

int

3

De

vic

e 5

, E

nd

po

int

2

De

vic

e 5

, E

nd

po

int

3

NO

N U

TIL

ISÉ

De

vic

e 3

, E

nd

po

int

3

TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE TRAME : 1 MILLISECONDE

VITESSE LENTE ET VITESSE PLEINE :

À L'INTÉRIEUR D'UNE TRAME, IL N'EST PAS POSSIBLE D'AVOIR PLUSIEURS TRANSACTIONS AVEC LE MÊME ENDPOINT.

TRANSACTIONS

VITESSE HAUTE :

À L'INTÉRIEUR D'UNE (MICRO)TRAME, IL EST POSSIBLE D'AVOIR JUSQU'À TROIS TRANSACTIONS AVEC LE MÊME ENDPOINT.

DE QUOI SATISFAIRE LES HYPER BOULIMIQUES …

Page 36: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 36

TRANSFERT, TRANSACTIONS ET PAQUETS

TRANSFERT

TRANSACTION

PAQUET JETON

TOKEN PACKET

SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP

TRANSACTION TRANSACTION

CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS.

PAQUET DONNÉES

DATA PACKET

PAQUET D'ACQUITTEMENT

HANDSHAKE PACKET

CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS).

IL Y A TROIS TYPES DE PAQUETS :-J : LE PAQUET JETON

(TOKEN PACKET)

-D : LE PAQUET DE DONNÉES

(DATA PACKET)

-A : LE PAQUET D'ACQUITTEMENT

(HANDSHAKE PACKET)

UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES

ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC).

UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet)

LES COMBINAISONS POSSIBLES SONT : J JD JA JDA

Page 37: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 37

COMPOSITION D'UN PAQUET

LES PAQUETS SE COMPOSENT DE PLUSIEURS CHAMPS.

TOUS LES PAQUETS COMPORTENT LES CHAMPS SYNC, PID ET EOP.

LE CHAMP SYNC (OU SOP : Start Of Packet)

TOUS LES PAQUETS DÉBUTENT PAR LE CHAMP SYNC (SYNCHRONISATION). CE CHAMP (8 BITS POUR LES VITESSES BASSE ET PLEINE, 32 BITS POUR LA VITESSE HAUTE) EST UTILISÉ POUR SYNCHRONISER L'HORLOGE DU RÉCEPTEUR AVEC L'HORLOGE DE L'ÉMETTEUR.

POUR LES VITESSES BASSE ET PLEINE CE CHAMP CORRESPOND À LA SÉQUENCE BINAIRE : 00000001. APRÈS CODAGE NRZI, LE SIGNAL SUR LE BUS EST LE SUIVANT :

Page 38: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 38

COMPOSITION D'UN PAQUET (SUITE)

LES PAQUETS SE COMPOSENT DE PLUSIEURS CHAMPS.

TOUS LES PAQUETS COMPORTENT LES CHAMPS SYNC, PID ET EOP.

LE CHAMP PID (Packet IDentifier)

CE CHAMP QUI COMPORTE 8 BITS EST UTILISÉ POUR IDENTIFIER LE TYPE DE PAQUET ENVOYÉ. LES VALEURS POSSIBLES SONT LES SUIVANTES (USB 1.1) :

PID

Type de paquet Nom Valeur ABCD

OUT 0001

IN 1001

SOF 0101 (Start Of Frame) Marqueur de début de trame et numéro de trame. JETON

(TOKEN) SETUP 1101

DATA0 0011 Paquet de données "pair". DONNÉES (DATA) DATA1 1011 Paquet de données "impair".

ACK 0010 Le récepteur accepte un paquet de données sans erreur.

NAK 1010 Le récepteur n'est pas prêt à recevoir ou transmettre un paquet de données.

ACQUITTEMENT (HANDSHAKE)

STALL 1110 Une requête n'est pas supportée, sinon le endpoint est bloqué. SPÉCIAL PRE 1100 PREamble (*)

(*) Ce PID est envoyé par le host pour prévenir les hubs que le prochain paquet concerne une transmission à vitesse basse.

LE PID EST CODÉ SUR 4 BITS : A B C D. TOUTEFOIS, POUR GARANTIR QU'IL A ÉTÉ REÇU CORRECTEMENT C'EST UN OCTET QUI EST TRANSMIS : A B C D A B C D

Page 39: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 39

COMPOSITION D'UN PAQUET (SUITE ET FIN)

LES PAQUETS SE COMPOSENT DE PLUSIEURS CHAMPS.

TOUS LES PAQUETS COMPORTENT LES CHAMPS SYNC, PID ET EOP.

LE CHAMP EOP (End Of Packet)

CE CHAMP EST COMPOSÉ DE 3 BITS.

IL EST DÉTECTÉ PAR LE PASSAGE DU BUS À L'ÉTAT SE0 (D+ ET D- À L'ÉTAT BAS) DURANT CES TROIS BITS.

Page 40: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 40

TRANSFERT, TRANSACTIONS ET PAQUETS (RAPPEL)

TRANSFERT

TRANSACTION

PAQUET JETON

TOKEN PACKET

SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP

TRANSACTION TRANSACTION

CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS.

PAQUET DONNÉES

DATA PACKET

PAQUET D'ACQUITTEMENT

HANDSHAKE PACKET

CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS).

IL Y A TROIS TYPES DE PAQUETS :-J : LE PAQUET JETON

(TOKEN PACKET)

-D : LE PAQUET DE DONNÉES

(DATA PACKET)

-A : LE PAQUET D'ACQUITTEMENT

(HANDSHAKE PACKET)

UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES

ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC).

UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet)

LES COMBINAISONS POSSIBLES SONT : J JD JA JDA

Page 41: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 41

COMPOSITION D'UN PAQUET JETON (TOKEN PACKET)

TRANSFERT

TRANSACTION

PAQUET JETON

TOKEN PACKET

SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP

TRANSACTION TRANSACTION

CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS.

PAQUET DONNÉES

DATA PACKET

PAQUET D'ACQUITTEMENT

HANDSHAKE PACKET

CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS).

IL Y A TROIS TYPES DE PAQUETS :-J : LE PAQUET JETON

(TOKEN PACKET)

-D : LE PAQUET DE DONNÉES

(DATA PACKET)

-A : LE PAQUET D'ACQUITTEMENT

(HANDSHAKE PACKET)

UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES

ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC).

UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet)

LES COMBINAISONS POSSIBLES SONT : J JD JA JDA

Page 42: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 42

COMPOSITION D'UN PAQUET JETON (SUITE)

PID

Type de paquet Nom Valeur ABCD

OUT 0001 IN 1001

SOF 0101 JETON

(TOKEN) SETUP 1101 DATA0 0011 DONNÉES

(DATA) DATA1 1011 ACK 0010 NAK 1010

ACQUITTEMENT (HANDSHAKE)

STALL 1110 SPÉCIAL PRE 1100

IL Y A 4 TYPES DE PAQUET JETON :

- OUT INFORME LE DEVICE QUE HOST VA LUI ENVOYER DES DONNÉES.

- IN INFORME LE DEVICE QUE LE HOST VAT LUI DEMANDER DES

DONNÉES.

- SOF PAQUET ÉMIS PAR LE HOST AU DÉBUT DE CHAQUE TRAME ET

CONTENANT LE NUMÉRO DE LA TRAME MODULO 7FFFH.

- SETUP UTILISÉ POUR DÉBUTER UN TRANSFERT DE CONTRÔLE.

Page 43: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 43

COMPOSITION D'UN PAQUET JETON (SUITE ET FIN)

SYNC PID ADDR ENDP CRC EOP

8/32 8 7 4 5 3

PAQUET JETON IN, OUT OU SETUP

ADDR ADRESSE DU DEVICE SUR 7 BITS. TANT QU'UN DEVICE N'A PAS ENCORE REÇU D'ADRESSE IL DOIT RÉPONDRE À L'ADRESSE 0.

ENDP NUMÉRO DU ENDPOINT SUR 4 BITS.

CRC CODE CORRECTEUR D'ERREUR 5 BITS CALCULÉ SUR [ADDR ENDP].

SYNC PID NUMÉRO DE TRAME CRC EOP

8/32 8 11 5 3PAQUET JETON SOF

NUMÉRO DE TRAME LES TRAMES SONT NUMÉROTÉES SUR 11 BITS, MODULO 7FFFH.

CRC CODE CORRECTEUR D'ERREUR 5 BITS CALCULÉ SUR NUMÉRO DE TRAME.

Page 44: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 44

COMPOSITION D'UN PAQUET DE DONNÉES

TRANSFERT

TRANSACTION

PAQUET JETON

TOKEN PACKET

SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP

TRANSACTION TRANSACTION

CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS.

PAQUET DONNÉES

DATA PACKET

PAQUET D'ACQUITTEMENT

HANDSHAKE PACKET

CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS).

IL Y A TROIS TYPES DE PAQUETS :-J : LE PAQUET JETON

(TOKEN PACKET)

-D : LE PAQUET DE DONNÉES

(DATA PACKET)

-A : LE PAQUET D'ACQUITTEMENT

(HANDSHAKE PACKET)

UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES

ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC).

UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet)

LES COMBINAISONS POSSIBLES SONT : J JD JA JDA

Page 45: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 45

PID

Type de paquet Nom Valeur ABCD

OUT 0001 IN 1001

SOF 0101 JETON

(TOKEN) SETUP 1101 DATA0 0011 DONNÉES

(DATA) DATA1 1011 ACK 0010 NAK 1010

ACQUITTEMENT (HANDSHAKE)

STALL 1110 SPÉCIAL PRE 1100

COMPOSITION D'UN PAQUET DE DONNÉES (SUITE)

PAQUET DE DONNÉES "PAIR"

PAQUET DE DONNÉES "IMPAIR"

LES PAQUETS DE DONNÉES SONT TOUJOURS TRANSMIS EN COMMENCANT PAR DATA0 (PAQUET PAIR) PUIS EN RESPECTANT LA

COMMUTATION DATA1/DATA0 (PAQUET IMPAIR/PAQUET PAIR).

AINSI, SI LE RÉCEPTEUR REÇOIT SUCCESSIVEMENT DEUX PAQUETS DE DONNÉES AVEC LA MÊME PARITÉ UNE ERREUR EST DÉTECTÉE ET

PEUT ÊTRE CORRIGÉE.

Page 46: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 46

COMPOSITION D'UN PAQUET DE DONNÉES (SUITE ET FIN)

SYNC PID CRC EOP

8/32 8 0 à 1023/1024 octets 16 3

PAQUET DE DONNÉES

CRC CODE CORRECTEUR D'ERREUR 16 BITS CALCULÉ SUR DONNÉES.

DONNÉES

DONNÉES CE SONT LES DONNÉES "UTILES" (PAYLOAD).

Taille maximale : 8 octets pour la vitesse basse.

Selon le type de transfert, 1023 octets pour la vitesse pleine et 1024

octets pour la vitesse haute.

Page 47: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 47

COMPOSITION D'UN PAQUET D'ACQUITTEMENT (HANDSHAKE PACKET).

TRANSFERT

TRANSACTION

PAQUET JETON

TOKEN PACKET

SYNC PID INFORMATION COMPLÉMENTAIRES CRC EOP

TRANSACTION TRANSACTION

CHAQUE TRANSFERT CORRESPOND À UNE OU PLUSIEURS TRANSACTIONS.

PAQUET DONNÉES

DATA PACKET

PAQUET D'ACQUITTEMENT

HANDSHAKE PACKET

CHAQUE TRANSACTION COMPORTE UN OU PLUSIEURS PAQUETS (PACKETS).

UN PAQUET CONTIENT PLUSIEURS CHAMPS : SYNC, SUIVI D'UN PID (PACKET IDENTIFIER) POUVANT ÊTRE SUIVI D'INFORMATIONS COMPLÉMENTAIRES

ASSOCIÉES À UN CODE CORRECTEUR D'ERREUR (CRC).

UN PAQUET SE TERMINE TOUJOURS PAR UN EOP (End Of Packet)

Page 48: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 48

COMPOSITION D'UN PAQUET D'ACQUITTEMENT

SYNC PID EOP

8/32 8 3

PAQUET D'ACQUITTEMENT (ACK, NAK, STALL)

PID

Type de paquet Nom Valeur ABCD

OUT 0001 IN 1001

SOF 0101 JETON

(TOKEN) SETUP 1101 DATA0 0011 DONNÉES

(DATA) DATA1 1011 ACK 0010 NAK 1010

ACQUITTEMENT (HANDSHAKE)

STALL 1110 SPÉCIAL PRE 1100

IL Y A TROIS SORTES DE PAQUET D'ACQUITTEMENT. TOUTE L'INFORMATION EST CONTENUE DANS LE PID :

ACK Acknowledge pour valider la réception sans erreur d'un paquet de données.

NAK Rapporte que temporairement le device n'est pas prêt à recevoir ou transmettre des données.

STALL Bloqué : le device se trouve dans un état qui va exiger une intervention du host.

Page 49: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 49

IMPRIMANTE USB – VITESSE PLEINE (12 Mbits/sec)

QUEL TYPE DE TRANSFERT ? => TRANSFERT PAR BLOC

TRANSFERT PAR BLOC ET VITESSE PLEINE :

LA NORME IMPOSE UN MAXIMUM DE 64 OCTETS "UTILES" PAR TRANSACTION.

EN SUPPOSANT QUE LE BUS N'EST PAS SATURÉ,

COMBIEN PEUT-ON TRANSMETTRE D'OCTETS À L'IMPRIMANTE PAR SECONDE ?

=> 64 OCTETS PAR TRAME, SOIT 64000 OCTETS /Sec (~64 Ko/sec).

QUEL EST LE POURCENTAGE DE LA BANDE PASSANTE DU BUS ?

=> UNE TRANSACTION PAR TRAME :

=> PAQUET JETON : 8 + 8 + 11 + 5 + 3 => 35 BITS

=> PAQUET DE DONNÉES : 8 + 8 + 512 + 16 + 3 => 547 BITS

=> PAQUET D'ACQUITTEMENT : 8 + 8 + 3 => 19 BITS

=> TOTAL : 35 + 547 + 19 => 601 BITS

=> 601 BITS À 12 000 BITS/ms => 0.05 ms => 5% DE LA BANDE PASSANTE.

Page 50: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 50

TRANSFERT DE CONTRÔLE

RAPPEL : IL EXISTE 4 TYPES DE TRANSFERT :

- TRANSFERT DE TYPE CONTRÔLE.

- TRANSFERT DE TYPE INTERRUPTION.

- TRANSFERT DE TYPE BLOC (BULK TRANSFERT).

- TRANSFERT DE TYPE ISOCHRONE.

LES TRANSFERTS DE CONTRÔLE SONT DESTINÉS À LA CONFIGURATION ET LA COMMANDE D'UN DEVICE.

NOTAMMENT, LA PHASE D'ÉNUMÉRATION UTILISE UNIQUEMENT DES TRANSFERTS DE CONTRÔLE.

CECI IMPLIQUE QUE TOUS LES DEVICES SUPPORTENT CE TYPE DE TRANSFERT.

BANDE PASSANTE RÉSERVÉE POUR CES TRANSFERTS : 10% (LS ET FS) 20% (HS).

Page 51: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 51

TYPE DE TRANSFERT PHASE (STAGE)

Une ou plusieurs transactions PAQUETS (PACKETS)

Jeton Données INSTALLATION (SETUP)

Acquittement

Jeton

Données [DONNÉES] IN ou OUT

Acquittement

Jeton Données

CONTRÔLE (CONTROL)

Toujours via EP0 ÉTAT (STATUS)

IN ou OUT Acquittement

TRANSFERT DE CONTRÔLE : TROIS PHASES

UN TRANSFERT DE CONTRÔLE EST UN TRANSFERT ENTRE LE HOST ET LE ENDPOINT 0 D'UN DEVICE (LE CHEF D'UNE TABLE).

TROIS PHASES (STAGES) DANS UN TRANSFERT DE CONTRÔLE :

- PHASE D'INSTALLATION.

- [PHASE DE DONNÉES] (SI BESOIN).

- PHASE D'ÉTAT.

Page 52: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 52

TRANSFERT DE CONTRÔLE : PHASE D'INSTALLATION (SETUP PHASE)

CETTE PHASE CORRESPOND À UNE TRANSACTION COMPRENANT LES 3 PAQUETS SUIVANTS :

JETON DATA ACQUITTEMENT

Device > Host

Host > Device

Idle Idle

Erreur =>IdlePID = SETUP PID = DATA0

PID = ACK

LE PAQUET DE DONNÉES (TOUJOURS 8 OCTETS) SPÉCIFIE LE TYPE DE LA DEMANDE CORRESPONDANT À CE TRANSFERT DE CONTRÔLE.

LE PAQUET D'ACQUITTEMENT EST ÉMIS PAR LE DEVICE. SI CELUI-CI N'A PAS DÉTECTÉ D'ERREUR (PID, CRC …), LE PID DU PAQUET D'ACQUITTEMENT EST ACK (NAK ET STALL INTERDITS).

SINON LE DEVICE N'ENVOIE PAS DE PAQUET D'ACQUITTEMENT.

Page 53: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 53

TRANSFERT DE CONTRÔLE : 2ème PHASE => PHASE DE DONNÉES

Cette phase est optionnelle. Elle consiste en une ou plusieurs transactions IN ou OUT. Cette phase, lorsqu'elle existe, comprend donc une ou plusieurs transactions avec un paquet jeton de type IN ou OUT. La taille maximum du paquet de données dépend de la vitesse : - 8 pour la vitesse basse, - 8, 16, 32 ou 64 pour la vitesse pleine, - 64 pour la vitesse haute. La première transaction correspond à un paquet de données de type DATA1. Ensuite, on retrouve l'alternance DATA1/DATA0.

Page 54: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 54

TRANSFERT DE CONTRÔLE :

PHASE DE DONNÉES POUR UN TRANSFERT DE CONTRÔLE EN ÉCRITURE (OUT)

JETON DATA ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>Idle

PID = OUT PID

=

DATA1/DATA0

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALL

Idle

Idle

Page 55: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 55

TRANSFERT DE CONTRÔLE :

PHASE DE DONNÉES POUR UN TRANSFERT DE CONTRÔLE EN LECTURE (IN)

JETON DATA ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>Idle

PID = IN

PID

=

DATA1/DATA0

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALL

Idle

Idle

Page 56: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 56

TRANSFERT DE CONTRÔLE : 3ème PHASE => PHASE D'ÉTAT (STATUS)

LA PHASE D'ÉTAT (STATUS STAGE) SE LIMITE À UNE SEULE TRANSACTION IN OU OUT, ENCORE APPELÉE TRANSACTION D'ÉTAT.

CETTE DERNIÈRE PHASE VA PERMETTRE AU DEVICE DE SIGNIFIER LA RÉUSSITE OU L'ÉCHEC DES PHASES PRÉCÉDENTES.

Page 57: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 57

TRANSFERT DE CONTRÔLE :

PHASE D'ÉTAT POUR UN TRANSFERT DE CONTRÔLE EN ÉCRITURE (OUT)

JETON DATA (0 OCTET) ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>IdlePID = IN

PID

=

DATA1

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALLIdle

Idle

Page 58: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 58

TRANSFERT DE CONTRÔLE :

PHASE D'ÉTAT POUR UN TRANSFERT DE CONTRÔLE EN LECTURE (IN)

JETON DATA (0 OCTET) ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>IdlePID = OUT

PID

=

DATA1

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALLIdle

Idle

Page 59: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 59

EXEMPLE DE TRANSFERT DE CONTRÔLE : Get Descriptor Device

Un nouveau device est connecté au bus USB. Ceci est détecté par un hub et répercuté vers le host (via un Endpoint du hub, de type interruption). Durant la phase d'énumération, le host va demander au device de s'identifier. Le host va lui demander, entre autres, ce que l'on appelle un descripteur d'appareil (Device Descriptor). Il s'agit d'une structure définie par la norme USB. C'est un transfert de contrôle qui va permettre au host d'obtenir cette information. Examinons maintenant en détail ce transfert de contrôle. NB : Lorsqu'un device est nouveau sur le bus, une des premières choses que fait le host c'est de lui attribuer une adresse entre 1 et 127. Ensuite, le host va chercher à identifier le device via cette adresse et son endpoint 0.

Page 60: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 60

Get Descriptor Device : PHASE D'INSTALLATION (SETUP STAGE)

Device > Host

Host > Device

SYNC PID=SETUP ADDR ENDP(0) CRC EOPPAQUET JETON

SYNC PID=DATA0 DONNÉES CRC EOPPAQUET DONNÉES

DANS LE PAQUET DE DONNÉES LE HOST INFORME LE DEVICE QU'IL VA LUI DEMANDER SON DEVICE DESCRIPTOR.

SYNC PID=ACK EOPPAQUET D'ACQUITTEMENT

Page 61: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 61

Get Descriptor Device : PHASE DE DONNÉES (DATA STAGE)

SYNC PID=IN ADDR ENDP(0) CRC EOPPAQUET JETON

SYNC PID=DATA0 DONNÉES (8 OCTETS) CRC EOPPAQUET DONNÉES

SYNC PID=ACK EOPPAQUET D'ACQUITTEMENT

Device > Host

Host > Device

DANS LE PAQUET DE DONNÉES LE DEVICE TRANSMET LES 8 PREMIERS OCTETS DE SON DESCRIPTOR DEVICE.

UN DESCRIPTOR DEVICECOMPREND 18 OCTETS. LA PHASE DE DONNÉES VA DONC COMPRENDRE TROIS TRANSACTIONS. POUR LES DEUX PREMIÈRES LE PAQUET DE

DONNÉES CONTIENT 8 OCTETS. LA TROISIÈME SE LIMITE À 2 OCTETS.

Page 62: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 62

Get Descriptor Device : PHASE D'ÉTAT (STATUS STAGE)

Device > Host

Host > Device

SYNC PID=IN ADDR ENDP(0) CRC EOPPAQUET JETON

SYNC PID=DATA1 DONNÉES (0 OCTET) CRC EOPPAQUET DONNÉES

SYNC PID=ACK EOPPAQUET D'ACQUITTEMENT

Page 63: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 63

TRANSFERT DE TYPE INTERRUPTION

Pour ceux qui ont une pratique des applications avec un microprocesseur ou un microcontrôleur, le mot interruption a un sens bien précis : c'est un boîtier d'entrées-sorties qui interrompt le processeur pour que celui-ci s'occupe "immédiatement" de lui. Avec USB, le mot interruption n'a pas du tout la même signification. En effet, un device n'a pas le droit de communiquer avec le host tant que celui-ci ne lui a pas donné la parole. Ici, interruption est associé à un intervalle de temps. Cet intervalle de temps est le temps maximum garanti qui sépare deux communications entre le host et le device.

Nous avons déjà évoqué l'existence d'un descripteur : le descripteur d'appareil (Device Descriptor). Nous verrons plus tard qu'il existe d'autres descripteurs, notamment le descripteur de terminaison (Endpoint Descriptor). Naturellement, dans la phase d'énumération le host va faire l'acquisition de tous les descripteurs et donc, bien sur, les descripteurs de tous les endpoints utilisés par un device. C'est ainsi qu'il va savoir si un endpoint désire travailler avec des transferts de type interruption, bloc ou isochrone. Les transferts de contrôle sont en principe réservés au endpoint 0. Supposons que le descripteur d'un endpoint spécifie que ce endpoint fonctionne avec des transferts de type interruption. Dans ce cas, le descripteur de Endpoint va également spécifier un temps. Les valeurs possibles pour ce temps dépendent de la vitesse de fonctionnement du device :

- 10 ms à 255 ms pour la vitesse basse. - 1 ms à 255 ms pour la vitesse pleine. - 125μs à 4 s, par pas de 125 μs (durée d'une micro trame), pour la vitesse haute.

Page 64: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 64

TRANSFERT DE TYPE INTERRUPTION (SUITE)

Prenons un exemple : supposons que le temps spécifié dans le descripteur d'un endpoint travaillant en mode interruption soit 10 ms. Cela signifie que le host doit communiquer avec le endpoint au moins une fois toutes les 10 ms. Le host a la possibilité de s'adresser au endpoint plus souvent, au risque de se faire "naker" par le endpoint, celui-ci faisant savoir au host que c'est trop tôt, et qu'il n'est pas prêt pour pouvoir accepter (endpoint OUT) ou envoyer (endpoint IN) des données. Dans notre exemple le délai maximum de 10 ms entre deux communications est garanti. Mais le fait que le host ait la possibilité, quand cela lui chante, de raccourcir ce délai, fait que les transferts par interruption ne sont pas forcément rigoureusement périodiques comme on aurait pu le penser au premier abord. Pour les paquets de données, le nombre maximum d'octets "utiles" dépend de la vitesse :

- 1 à 8 pour la vitesse basse. - 1 à 64 pour la vitesse pleine. - 1 à 1024 pour la vitesse haute.

Page 65: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 65

TRANSFERT EN ÉCRITURE DE TYPE INTERRUPTION

JETON DATA ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>Idle

PID = OUT PID

=

DATA0/DATA1

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALL

Idle

Idle

Page 66: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 66

TRANSFERT EN LECTURE DE TYPE INTERRUPTION

JETON DATA ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>Idle

PID = IN

PID

=

DATA0/DATA1

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALL

Idle

Idle

Page 67: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 67

TRANSFERT DE TYPE BLOC (BULK TRANSFERT)

CE TYPE DE TRANSFERT N'EXISTE PAS POUR LA VITESSE BASSE. Les transferts de type bloc sont adaptés pour transférer des grandes quantités de données lorsque le temps n'est pas critique C'est typiquement ce type de transfert qui sera utilisé pour communiquer avec une imprimante, un scanner, un disque dur … Lorsque la totalité de la bande passante du bus est disponible, les transferts de type bloc sont les plus rapides. Par contre, lorsque le bus est fortement encombré, les transferts de type bloc peuvent devenir les plus lents car ils "passent" après tous les autres types de transfert. Pour les paquets de données, le nombre maximum d'octets "utiles" dépend de la vitesse :

- 8, 16, 32 ou 64 pour la vitesse pleine. - 512 pour la vitesse haute.

Un transfert se termine lorsque dans une transaction, le nombre de données "utiles" du paquet de données est inférieur au nombre maximum autorisé. Si besoin, un paquet de données avec 0 octet est transmis.

Page 68: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 68

TRANSFERT EN ÉCRITURE DE TYPE BLOC

JETON DATA ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>Idle

PID = OUT PID

=

DATA0/DATA1

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALL

Idle

Idle

RIEN DE NOUVEAU (HORMIS LA TAILLE MAXIMUM DU PAQUET DATA) PAR RAPPORT AU TRANSFERT EN ÉCRITURE DE TYPE INTERRUPTION.

Page 69: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 69

TRANSFERT EN LECTURE DE TYPE BLOC

JETON DATA ACQUITTEMENT PID=ACK

Device > Host

Host > Device

Idle Idle

Erreur =>Idle

PID = IN

PID

=

DATA0/DATA1

ACQUITTEMENT PID=NAK

ACQUITTEMENT PID=STALL

Idle

Idle

RIEN DE NOUVEAU (HORMIS LA TAILLE MAXIMUM DU PAQUET DATA) PAR RAPPORT AU TRANSFERT EN LECTURE DE TYPE INTERRUPTION.

Page 70: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 70

TRANSFERT DE TYPE ISOCHRONE (ISOCHRONOUS TRANSFERT)

CE TYPE DE TRANSFERT N'EXISTE PAS POUR LA VITESSE BASSE. Isochrone : cela signifie que les données "utiles" sont transmises avec un débit garanti. Pour la vitesse pleine, un transfert isochrone correspond à une transaction IN ou OUT, soit pour chaque trame, soit toutes les N trames, N étant une constante. La vitesse haute apporte plus de possibilités. Cela peut varier de 3 transactions par micro trame jusqu'à une transaction toutes les 32768 micro trames. Pour les paquets de données, le nombre maximum d'octets "utiles" dépend de la vitesse :

- 0 à 1023 octets pour la vitesse pleine. - 0 à 1024 octets pour la vitesse haute.

La quantité de données "utiles" dans chaque trame n'est pas forcément la même. Par exemple, pour la vitesse pleine (trame de 1 milliseconde), une transmission à 44100 octets/s, donc 44,1 octets/ms ou 441 octets/10 ms (10 trames) peut correspondre à 9 trames contenant 44 octets, suivie d'une trame contenant 45 octets (44*9 = 396, et 396+45=441).

Page 71: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 71

TRANSFERT DE TYPE ISOCHRONE (SUITE)

Un transfert isochrone peut requérir une fraction importante de la bande passante du bus. De ce fait, le nombre de devices pouvant utiliser ce mode de transfert est automatiquement limité pour un host contrôleur donné. Le prix à payer pour ces transactions temps réel est qu'il n'y a pas la possibilité de correction d'erreur (le paquet d'acquittement n'existe pas et de ce fait la commutation DATA0/DATA1 n'est plus utilisable pour la correction d'erreur). Les transferts isochrones sont donc réservés aux applications où de petites erreurs occasionnelles sont tolérables. C'est le cas des communications audio ou vidéo en temps réel.

Page 72: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 72

TRANSFERT EN ÉCRITURE DE TYPE ISOCHRONE

JETON DATA

Device > Host

Host > Device

Idle Idle

PID = OUT PID

=

DATA0/DATA1

Page 73: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 73

TRANSFERT EN LECTURE DE TYPE ISOCHRONE

JETON DATA

Device > Host

Host > Device

Idle Idle

PID = IN PID

=

DATA0/DATA1

Page 74: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 74

LES 4 TYPES DE TRANSFERT : RÉCAPITULATION

TYPE DE TRANSFERT PHASE (STAGE)

Une ou plusieurs transactions PAQUETS (PACKETS)

Jeton Données INSTALLATION (SETUP)

Acquittement Jeton

Données [DONNÉES] IN ou OUT

Acquittement Jeton

Données

CONTRÔLE (CONTROL)

Toujours via EP0

ÉTAT (STATUS) IN ou OUT

Acquittement Jeton

Données BLOC

(BULK) DONNÉES IN ou OUT

Acquittement Jeton

Données INTERRUPTION

(INTERRUPT) DONNÉES IN ou OUT

Acquittement Jeton ISOCHRONE

(ISOCHRONOUS) DONNÉES IN ou OUT Données

Le transfert de contrôle est le moins simple des quatre transferts. Il comprend 3 phases dont une facultative (la phase de données). Les transferts de contrôle sont essentiellement utilisés pour les communications de configuration durant la phase d'énumération. Les trois autres transferts sont plus simples et ne contiennent qu'une seule phase : la phase de données. Ils sont utilisés pour les communications d'application. On constate qu'il existe la phase de données qu'il ne faut pas confondre avec le paquet données.

Page 75: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 75

L'ÉNUMÉRATION

AVANT QU'UNE APPLICATION SOIT CAPABLE DE COMMUNIQUER AVEC UN DEVICE LE HOST DOIT :

-1- FAIRE L'ACQUISITION DES CARACTÉRISTIQUES DU DEVICE.

-2- METTRE EN ŒUVRE LE DRIVER APPROPRIÉ.

L'ÉNUMÉRATION CORRESPOND À L'ENSEMBLE DES TRANSFERTS QUI VONT PERMETTRE D'EFFECTUER CES DEUX TÂCHES.

Remarque préliminaire :

La norme USB définit 6 états possibles pour un device. Durant la phase d'énumération un device va passer successivement par les états :

- Alimenté (Powered).

- Défaut (Default).

- Adressé (Adressed).

- Configuré (Configured).

Les deux autres états sont : Attaché (Attached) et Suspendu (Suspend).

Page 76: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 76

L'ÉNUMÉRATION (SUITE)

L'ÉNUMÉRATION SE DÉCOMPOSE EN PLUSIEURS ÉTAPES.

LA SUITE D'ÉTAPES QUE NOUS ALLONS DÉCRIRE CORRESPOND À LA SÉQUENCE TYPE DES ÉVENEMENTS QUI S'ENCHAÎNENT AVEC WINDOWS.

CEPENDANT, LA NORME USB N'IMPOSE PAS UN ORDRE DÉFINI QUAND AUX DIFFÉRENTS ÉLÉMENTS QUI CONSTITUENT L'ÉNUMÉRATION.

LE FIRMWARE D'UN DEVICE DOIT DONC ÊTRE CAPABLE DE RÉPONDRE À TOUT MOMENT À N'IMPORTE QUELLE REQUÊTE DE CONTRÔLE ÉMISE PAR LE HOST.

Page 77: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 77

L'ÉNUMÉRATION (SUITE)

-1- L'UTILISATEUR CONNECTE UN DEVICE SUR UN PORT D'UN HUB USB

Le hub alimente le port. Le device est dans l'État Alimenté.

-2- LE HUB DÉTECTE LE DEVICE.Le hub détecte la connexion d'un device par la modification de tension sur les lignes D+ ou D-.

-4- LE HOST DÉCOUVRE LA PRÉSENCE D'UN NOUVEAU DEVICE.Un hub possède, entre autres, un Endpoint utilisant des transferts de type interruption et qui sert à informer le host d'une éventuelle modification (connexion ou déconnexion) sur un port du hub. Donc, le hub a détecté une modification et le host qui interroge "pseudo périodiquement" le hub en est maintenant informé.

Le host va demander au hub un supplément d'information en lui envoyant une requête "GET_PORT_STATUS". C'est une requête standard parmi d'autres qui est supportée par tous les hubs.

-3- LE HUB DÉTECTE LA VITESSE DE FONCTIONNEMENT DU DEVICE.La tension sur les lignes D+ ou D- permet au hub d'identifier la vitesse de fonctionnement du nouveau device,

Page 78: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 78

L'ÉNUMÉRATION (SUITE)

-5- LE HUB EFFECTUE LE RESET DU NOUVEAU DEVICE.

Le host sait maintenant qu'un nouveau device est connecté sur le port d'un hub. Il va demander au hub par une requête "SET_PORT_FEATURE" d'effectuer le reset du device. Pour cela le hub impose pendant au moins 10ms un niveau bas sur les lignes D+ et D- (État SE0).

-7- PASSAGE À L'ÉTAT DÉFAUT.Le host vérifie que le device a terminé le reset en envoyant au hub une requête "GET_STATUS_PORT". La donnée renvoyée permet de connaître la réponse. Si nécessaire, le host répète la requête jusqu'à ce que le reset du device soit terminé.

Lorsque le hub enlève le reset le device est dans l'état Défaut. Les registres USB du device sont initialisés avec leur valeur de reset et le device est maintenant prêt à répondre aux transferts de contrôle via son Endpoint 0. Le device peut consommer 100mA sur VBus.

-6- VITESSE PLEINE OU VITESSE HAUTE ?Au cours du reset, si le nouveau device est capable de fonctionner à vitesse haute il impose momentanément un état bien défini sur les lignes D+ et D-. Si le hub supporte la vitesse haute, il envoie en réponse un "chearp" sur les lignes D+ et D-. Dès lors, le device déconnecte sa résistance de pull-up sur la ligne D+ et la vitesse haute peut-être utilisée. Sinon, le device continue à fonctionner à vitesse pleine.

Page 79: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 79

L'ÉNUMÉRATION (SUITE)

-8- LE HOST ÉMET UNE REQUÊTE "GET_DESCRIPTOR_DEVICE" POUR ACQUÉRIR LA TAILLE MAXIMUM DU PAQUET DE DONNÉES DU CANAL PAR DÉFAUT.

Le host émet cette requête à l'adresse 0/ Endpoint 0.

Le 8ème élément d'un descripteur de device contient la taille maximum des paquets de données supportés par le Endpoint 0.

NB : Avec WINDOWS, le host se limite à l'acquisition des 8 premiers octets du descripteur qui en compte 18. Ensuite, toujours avec WINDOWS, le host demande au hub d'effectuer un nouveau reset du device. L'énumération recommence alors à l'étape 5.

À noter que la norme n'impose nullement d'effectuer ce second reset au cours de la phase d'énumération.

-9- LE HOST ATTRIBUE UNE ADRESSE AU NOUVEAU DEVICE.

C'est en utilisant la commande "SET_ADDRESS" que le host attribue au nouveau device une adresse comprise entre 1 et 127. Le device est maintenant dans l'état Adressé. Désormais, toutes les transactions avec ce device vont utiliser cette adresse.

Page 80: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 80

L'ÉNUMÉRATION (SUITE)

-10- LE HOST FAIT L'ACQUISITION DES CARACTÉRISTIQUES DU NOUVEAU DEVICE.

En utilisant la requête "GET_DEVICE_DESCRIPTOR" le host va maintenant faire l'acquisition complète du Device Descriptor. Ce descripteur est une structure contenant de nombreuses informations qui vont être utilisées par le host pour les requêtes qui suivent.

Page 81: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 81

L'ÉNUMÉRATION (SUITE)

-10- LE HOST FAIT L'ACQUISITION DES CARACTÉRISTIQUES DU NOUVEAU DEVICE (SUITE).

Un device peut posséder plusieurs configurations (la plupart du temps il n'y a qu'une seule configuration). Le dernier champ du Device Descriptor contient le nombre de configurations possibles (alimentation par le bus USB, alimentation externe …). À une configuration peuvent être associées plusieurs interfaces : l'élément 4 du Configuration Descriptor indique le nombre d'interfaces. Chaque interface peut faire appel à un certain nombre de Endpoints : l'élément 4 du Interface Descriptor indique le nombre de Endpoints supportés sans tenir compte du Endpoint 0. À tout Endpoint utilisable correspond un Endpoint Descriptor indiquant le numéro du Endpoint et sa direction, le type de transfert utilisé ….. Pour information, il existe également des String Descriptors. Bref, selon l'information contenue dans le Device Descriptor, la phase d'énumération va conduire le host à émettre une succession de requêtes pour obtenir l'ensemble des descripteurs.

Page 82: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 82

L'ÉNUMÉRATION (SUITE)

-11- LE HOST ATTRIBUE ET CHARGE UN DEVICE DRIVER.

POUR CHOISIR UN DRIVER, WINDOWS RECHERCHE LA MEILLEURE CORRESPONDANCE ENTRE LES FICHIERS .inf ET LE VID (Vendor IDentification product) ET LE PID (Product IDentification).

-12- LE DEVICE DRIVER SÉLECTIONNE UNE CONFIGURATION.

Après avoir pris connaissance des différents descripteurs, le driver émet une requête "SET_CONFIGURATION" avec le numéro de la configuration requise. Beaucoup, pour ne pas dire la plupart des devices ne possèdent qu'une seule configuration. Dans le cas contraire, le driver peut décider de la configuration à retenir en fonction des informations qu'il possède sur la façon dont le device va être utilisé. Il peut aussi demander l'avis de l'utilisateur ou simplement retenir la première configuration. Le device ayant maintenant reçu la requête "SET_CONFIGURATION" passe à l'état Configuré (Configured) et les interfaces correspondantes sont validées.

Page 83: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 83

L'ÉNUMÉRATION (SUITE ET FIN)

-13- CONSOMMATION SUR VBus

Si le hub détecte une consommation anormalement élevée du device, ou si le host demande au hub de supprimer l'alimentation du device, celui-ci n'est plus alimenté. Dans ce cas il n'y a plus de communication possible entre le host et le device. Celui-ci passe à l'état attaché (attached).

Page 84: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 84

CONFIGURATION D'UN DEVICE : LES DESCRIPTEURS

Les devices USB reportent leurs attributs au moyen de descripteurs. Un descripteur est une structure de données ayant un format prédéfini. Le premier élément de cette structure est un octet qui précise le nombre total d'octets du descripteur. Le second élément est un octet qui précise le type de descripteur.

Type de Descripteur Valeur (valeur du second octet du descripteur)

DEVICE DESCRIPTOR 1 CONFIGURATION DESCRIPTOR 2

STRING DESCRIPTOR 3 INTERFACE DESCRIPTOR 4 ENDPOINT DESCRIPTOR 5

DEVICE_QUALIFIER DESCRIPTOR 6 OTHER_SPEED_CONFIGURATION DESCRIPTOR 7

Dans le cadre de cette présentation nous ne décrirons ces 4 descripteurs ainsi que le STRING DESCRIPTOR car nous en auront besoin en TP. Signalons l'existence de descripteurs spécifiques de classe. En effet, certaines classes de devices exigent des descripteurs supplémentaires non décrits dans la spécification USB.

Page 85: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 85

LE DESCRIPTEUR DE DEVICE (DEVICE DESCRIPTOR)

0 bLength bDescriptorType bcdUSB 4 bDeviceClass bDeviceSubClass bDeviceProtocol bMaxPacketSize0 8 idVendor idProduct 12 bcdDevice iManufacturer iProduct 16 iSerialNumber bNumConfigurations

Champ Description bLength Nombre d'octets du descripteur (ici = 18)

bDescriptorType Type du descripteur (ici = 1)

bcdUSB Numéro de la révision USB avec laquelle ce device est compatible Exemple : 0x0110 indique 1.10

bDeviceClass

Code de classe attribué par l'USB-IF - Si ce champ vaut 0, chaque interface à l'intérieur d'une configuration fournit ses

informations de classe et les interfaces travaillent de manière indépendante; plusieurs drivers sont donc requis.

- Si ce champ est non nul, la valeur qu'il contient identifie la classe de toutes les interfaces; Un seul driver suffit pour contrôler le device.

bDeviceSubClass

Code de sous-classe attribué par l'USB-IF - Ce champ est qualifié par le code de classe. Si le code de classe est 0, ce champ doit être

également nul. - Exemple pour les devices audio : Dolby, PCM

bDeviceProtocol

Code de protocole attribué par l'USB-IF - Ce champ est qualifié par le code de classe et le code de sous-classe. - Ce code identifie les protocoles de niveau classe que le device supporte. - Exemple pour les devices audio de type PCM : mono ou stéréo

bMaxPacketSize0 Taille maximum des packets supportés par le EndPoint 0 - Seules les valeurs 8, 16, 32, et 64 sont valides. - Obligatoirement 64 pour un device High Speed

idVendor Identificateur du constructeur du device - "VID" acheté par le constructeur auprès de l'USB-IF

idProduct Identificateur du composant attribué par le constructeur ("PID"). bcdDevice Numéro de révision du device en codage BCD.

iManufacturer Index de la chaîne de caractères décrivant le constructeur. iProduct Index de la chaîne de caractères décrivant le composant.

iSerialNumber Index de la chaîne de caractères décrivant le numéro de série. bNumConfigurations Nombre de configurations supportées au débit courant.

Page 86: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 86

EXEMPLE DE DESCRIPTEUR DE DEVICE (CLÉ USB)

USB 1.1

LE ENDPOINT 0 ACCEPTE DES PAQUETS DE

DONNÉES DE 64 OCTETS

VID=08EC

PID=0010

RÉVISION 2.0

INDEX DE LA CHAÎNE DE CARACTÈRES DÉCRIVANT

LE CONSTRUCTEUR

INDEX DE LA CHAÎNE DE CARACTÈRES DÉCRIVANT

LE COMPOSANT

INDEX DE LA CHAÎNE DE CARACTÈRES DÉCRIVANT

LE NUMÉRO DE SÉRIE

NOMBRE DE CONFIGURATIONS

Page 87: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 87

LE DESCRIPTEUR DE CONFIGURATION (CONFIGURATION DESCRIPTOR)

Plusieurs descripteurs de configuration peuvent exister pour un même device (Cf. dernier élément du descripteur de device). Chacun d'entre eux est identifié par le champ bConfigurationValue. Le device active ses endpoints autre que le endpoint 0 uniquement après que le host ait sélectionné une configuration au moyen de la commande SET_CONFIGURATION(Configuration#).

0 bLength bDescriptorType wTotalLength 4 bNumInterfaces bConfigurationValue iConfiguration bmAttributes 8 bMaxPower

LORSQUE LE HOST DEMANDE LE DESCRIPTEUR DE CONFIGURATION, TOUS LES DESCRIPTEURS ASSOCIÉS (INTERFACES ET ENDPOINTS)

SONT RENVOYÉS.

Page 88: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 88

LE DESCRIPTEUR DE CONFIGURATION (SUITE)

Champ Description bLength Nombre d'octets du descripteur (ici = 9)

bDescriptorType Type du descripteur (ici = 2)

wTotalLength

Nombre total d'octets retourné pour cette configuration. C'est la somme des tailles de tous les descripteurs : - la taille de ce descripteur - la taille des descripteurs d'interface (interfaces liées à cette configuration) - la taille des descripteurs de endpoint (endpoints liés à toutes les interfaces de cette configuration) - la taille, si besoin, du descripteur de classe ou spécifique au vendeur.

bNumInterfaces Nombre d'interfaces supportées par cette configuration.

bConfigurationValue Numéro de la configuration Utilisé comme argument dans la commande SET_CONFIGURATION (Configuration#)

iConfiguration Index de la chaîne de caractères décrivant cette configuration.

bmAttributes

Caractéristiques de la configuration - bits 0 à 4 : réservés (0). - bit 5 : si 1, la configuration supporte le réveil à distance (Remote Wakeup). - bit 6 : si 0, la configuration est alimentée par le bus USB. - bit 7 : réservé (1).

bMaxPower Consommation maximum du device lorsqu'il est placé dans cette configuration. Exprimée en unités de 2 mA (exemple 0x32, pour 100 mA)

UN OCTET DEUX OCTETS

Page 89: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 89

EXEMPLE DE DESCRIPTEUR DE CONFIGURATION (CLÉ USB)

Desc. de configuration => 9

Desc. d'interface => 9

Desc. Endpoint => 7

Desc. Endpoint => 7

TOTAL : 32

CETTE CONFIGURATION N'A QU'UNE SEULE INTERFACE

DESCRIPTEUR DE CONFIGURATION POUR LA

CONFIGURATION 1

PAS DE CHAÎNE DE CARACTÈRES POUR DÉCRIRE

CETTE CONFIGURATION

ALIMENTATION

PAR VBus

CONSOMMATION : 2FH => 47*2mA

Page 90: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 90

LE DESCRIPTEUR D'INTERFACE (INTERFACE DESCRIPTOR)

Une configuration peut contenir plusieurs interfaces (Cf. 4ème champ du descripteur de configuration). Il peut s'agir de : - Une interface avec plusieurs variantes : on parle d'interface alternative. - Plusieurs interfaces indépendantes dont certaines peuvent supporter des variantes. Les descripteurs d'interface ne peuvent pas être accédés par la commande GET_DESCRIPTOR(). La commande SET_INTERFACE(Interface#,AlternateInterface#) permet au host de sélectionner l'interface active. La structure de ce descripteur est la suivante :

0 bLength bDescriptorType bInterfaceNumber bAlternateSetting 4 bNumEndPoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol 8 iInterface

Page 91: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 91

LA STRUCTURE DE CE DESCRIPTEUR EST LA SUIVANTE :

0 bLength bDescriptorType bInterfaceNumber bAlternateSetting 4 bNumEndPoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol 8 iInterface

Champ Description bLength Nombre d'octets du descripteur (ici = 9)

bDescriptorType Type du descripteur (ici = 4) bInterfaceNumber Numéro de l'interface bAlternateSetting Numéro de la variante bNumEndPoints Nombre de Endpoints utilisés par l'interface en excluant le Endpoint 0. bInterfaceClass Code de classe attribué par l'USB-IF et utilisé pour trouver le driver.

bInterfaceSubClass Code de sous-classe attribué par l'USB-IF et utilisé pour trouver le driver. bInterfaceProtocol Code de protocole attribué par l'USB-IF et utilisé pour trouver le driver.

iInterface Index de la chaîne de caractères décrivant cette interface.

LE DESCRIPTEUR D'INTERFACE (SUITE)

IL S'AGIT DE L'INTERFACE NUMÉRO 0

VARIANTE NUMÉRO 0

2 ENDPOINTS, EN PLUS DU ENDPOINT 0

PAS DE CHAÎNE DE CARACTÈRES POUR DÉCRIRE CETTE INTERFACE.

Page 92: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 92

LE DESCRIPTEUR DE ENDPOINT (ENDPOINT DESCRIPTOR)

CHAQUE ENDPOINT A SON PROPRE DESCRIPTEUR QUI CONTIENT DES INFORMATIONS ESSENTIELLES POUR LE HOST. C'EST AVEC CE ENDPOINT QUE LA CUISINE VA DÉCOUVRIR QUEL EST LE TYPE DE SERVICE DEMANDÉ PAR CHAQUE CLIENT DU RESTAURANT. UN DESCRIPTEUR DE ENDPOINT EST TRANSMIS AU HOST COMME RÉPONSE À LA COMMANDE GET_DESCRIPTOR (CONFIGURATION) ÉMISE PAR LE HOST. LA STRUCTURE DE CE DESCRIPTEUR EST LA SUIVANTE :

0 bLength bDescriptorType bEndPointAddress bmAttributes

4 wMaxPacketSize bInterval

Page 93: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 93

LE DESCRIPTEUR DE ENDPOINT (SUITE)

Champ Description bLength Nombre d'octets du descripteur (ici = 7)

bDescriptorType Type du descripteur (ici = 5)

bEndPointAddress - bits 0 à 3 : numéro du Endpoint - bit 7 : 0 pour OUT et 1 pour IN

bmAttributes

- bits 0 et 1 : TransferType - 00 Contrôle 01 Isochrone 10 Bloc 11 Interruption - bits 2 et 3 : SynchronisationType – Champ pertinent si le Endpoint est de type isochrone,

sinon ce champ doit être nul (Cf. norme). - bits 4 et 5 : UsageType – Champ pertinent si le Endpoint est de type isochrone et les bits 3 à

2 différents de 0. Sinon ce champ doit être nul (Cf. norme). - bits 6 et 7 : 0

wMaxPacketSize

- bits 0 à 10 : Taille maximum (en octets) du packet que ce Endpoint est capable d'émettre (IN) ou de recevoir (OUT) lorsque cette configuration est sélectionnée.

Pour un endpoint isochrone, ce champ est utilisé pour indiquer le temps à allouer dans chaque (micro) trame pour ce Endpoint.

- bits 11 et 12 :

ATPM (Add Transactions Per MicroFrame) représente le nombre de transactions additionnelles par microtrame. Uniquement pour la vitesse haute.

- bits 13 à 15 : 0

bInterval

Définition de l'intervalle de scrutation de ce Endpoint, exprimé en trame ou microtrame. Pour un Endpoint de type interruption : - vitesse basse : Ce champ peut varier de 10 à 255 (une transaction toutes les bInterval

millisecondes). - vitesse pleine : Ce champ peut varier de 1 à 255 (une transaction toutes les bInterval

millisecondes). - vitesse haute : Ce champ peut varier de 1 à 16 (une transaction toutes les 2bInterval-1 x 125

microsecondes. Cf. la norme pour les autres types de transfert.

Page 94: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 94

EXEMPLES DE DESCRIPTEUR DE ENDPOINT (CLÉ USB)

ENDPOINT DE TYPE IN À L'ADRESSE 0x81

UTILISE LES TRANSFERTS PAR BLOC.

TAILLE MAXIMUM DES PAQUETS DE DONNÉES : 64 OCTETS

ENDPOINT DE TYPE OUT À L'ADRESSE 0x01

UTILISE LES TRANSFERTS PAR BLOC.

TAILLE MAXIMUM DES PAQUETS DE DONNÉES : 64 OCTETS

POUR LIRE LA CLÉ USB

POUR ÉCRIRE LA CLÉ USB

Page 95: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 95

LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES (STRING DESCRIPTOR)

UN DEVICE PEUT (CECI EST OPTIONNEL) TRANSMETTRE UN CERTAIN NOMBRE DE CHAÎNES DE CARACTÈRES AU HOST.

CHAQUE CHAÎNE DE CARACTÈRES EST STOCKÉE DANS LA MÉMOIRE DU DEVICE ET CORRESPOND À UN NUMÉRO (ON DIT PLUTÔT UN INDICE).

EXEMPLE : LE DESCRIPTEUR DE DEVICE COMPREND, ENTRE AUTRES, LES CHAMPS iManufacturer, iProduct ET iSerialNumber.

LORSQUE LA VALEUR D'UN DE CES CHAMPS EST NULLE CELA SIGNIFIE QUE LE DEVICE NE POSSÈDE PAS DE CHAÎNE DE CARACTÈRES RELATIVE À CE CHAMP.

SI LA VALEUR EST DIFFÉRENTE DE 0, CETTE VALEUR REPRÉSENTE "LE NUMÉRO" DE LA CHAÎNE DE CARACTÈRES RELATIVE À CE CHAMP.

Page 96: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 96

LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES (SUITE)

CHAQUE CHAÎNE DE CARACTÈRES PEUT ÊTRE CODÉE AVEC SA PROPRE LANGUE EN UTILISANT UN LANGAGE UNICODE (CHAQUE CARACTÈRE EST CODÉ SUR 16 BITS).

CHAQUE LANGUE EST IDENTIFIÉE PAR SON "LANGAGE IDENTIFIER" : LANGID. C'EST UNE VALEUR 16 BITS.

UNE VALEUR COURANTE EST 0X0409. C'EST LA VALEUR CORRESPONDANT AU LANGAGE "US ENGLISH"

Page 97: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 97

LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES (SUITE)

LE DESCRIPTEUR DE CHAÎNE DE CARACTÈRES NUMÉRO 0 INFORME LE HOST SUR L'ENSEMBLE DES LANGUES DISPONIBLES AU NIVEAU DU DEVICE.

LA STRUCTURE DE CE DESCRIPTEUR EST LA SUIVANTE :

0 bLength (N+4) bDescriptorType

(0x03) wLANGID[0]

4 wLANGID[1] wLANGID[2]

wLANGID[N]

STRING DESCRIPTOR NUMÉRO 0

POUR UN DEVICE DONT TOUTES LES CHAÎNES DE CARACTÈRES SONT CODÉES AVEC LE LANGID 0X0409 LE STRING DESCRIPTOR NUMÉRO 0 EST LE SUIVANT :

0 bLength = 4 bDescriptorType

(0x03) 0x0409

Page 98: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 98

CONFIGURATION DES DEVICES : LES COMMANDES

POUR CONFIGURER UN DEVICE LE HOST VA UTILISER DES TRANSFERTS DE CONTRÔLE AVEC LE ENDPOINT 0.

COMME NOUS L'AVONS VU UN TRANSFERT DE CONTRÔLE CORRESPOND À PLUSIEURS PHASES :

TYPE DE TRANSFERT PHASE (STAGE) Une ou plusieurs

transactions

PAQUETS (PACKETS)

Jeton Données

INSTALLATION (SETUP)

Acquittement Jeton

Données [DONNÉES] IN ou OUT

Acquittement Jeton

Données

CONTRÔLE (CONTROL)

Toujours via EP0

ÉTAT (STATUS) IN ou OUT

Acquittement

RAPPEL : LA PHASE DE DONNÉES EST OPTIONNELLE.

Page 99: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 99

CONFIGURATION DES DEVICES : LES COMMANDES (SUITE)

TYPE DE TRANSFERT PHASE (STAGE) Une ou plusieurs

transactions

PAQUETS (PACKETS)

Jeton Données

INSTALLATION (SETUP)

Acquittement Jeton

Données [DONNÉES] IN ou OUT

Acquittement Jeton

Données

CONTRÔLE (CONTROL)

Toujours via EP0

ÉTAT (STATUS) IN ou OUT

Acquittement

LE PAQUET DE DONNÉES DE LA PHASE D'INSTALLATION (SETUP) COMPORTE 8 OCTETS :

1 octet 1 octet 2 octets 2 octets 2 octets

bmRequestType bRequest wValue wIndex wLength

bmRequestType

- bits 0 à 4 : Définition de la cible de la commande 00000 : device 00001 : interface 00010 : endpoint 00011 : autre

- bits 5 et 6 : Définition du type 00 : commande standard 01 : commande de classe - bit 7 : Définition de la direction 0 : OUT 1 : IN

bRequest

Définition de la commande Commandes standard : 00 : GET_STATUS 01 : CLEAR_FEATURE 03 : SET_FEATURE 05 : SET_ADDRESS 06 : GET_DESCRIPTOR 07 : SET_DESCRIPTOR 08 : CLEAR_CONFIGURATION 09 : SET_CONFIGURATION 10 : GET_INTERFACE 11 : SET_INTERFACE 12 : SYNCH_FRAME

wValue, wIndex Champs dont l'interprétation varie en fonction de la commande.

wLength Longueur de la donnée dans le cas ou ce transfert inclus une phase de données.

Page 100: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 100

CONFIGURATION DES DEVICES : LES COMMANDES (SUITE ET FIN)

LES COMMANDES STANDARDS :

bmRequestType bRequest wValue wIndex wLength Phase de données

0000 0000 0000 0001 0000 0010

CLEAR_FEATURE (0x01)

Feature Selector

Zero Interface Endpoint

0

1000 0000 GET_CONFIGURATION

(0x08) 0 0 1

Configuration Value

1000 0000 GET_DESCRIPTOR

(0x06)

Descriptor Type and

Descriptor Index

0 or

Language ID

Descriptor Length

Descriptor

1000 0001 GET_INTERFACE

(0x0A) 0 Interface 1

Alternate Interface

1000 0000 1000 0001 1000 0010

GET_STATUS (0x00)

0 Zero

Interface Endpoint

2

Device Interface or

Endpoint Status

0000 0000 SET_ADDRESS

(0x05) Device

Address 0 0

0000 0000 SET_DESCRIPTOR

(0x07)

Descriptor Type and

Descriptor Index

0 or

Language ID

Descriptor Length

Descriptor

0000 0000 0000 0001 0000 0010

SET_FEATURE (0x03)

Feature Selector

Zero Interface Endpoint

0

0000 0001 SET_INTERFACE

(0x0C) Alternate Setting

Interface 0

0000 0000 SET_CONFIGURATION

(0x09) Configuration

Value 0 0

1000 0010 SYNC_FRAME

(0x0C) 0 Endpoint 2

Frame Number

Page 101: 16 Octobre 2007JF VIENNELE BUS USB SLIDE 1 LE BUS USB B (Universal Serial Bus) DIAPORAMA EN LIGNE => viennevienne.

16 Octobre 2007 JF VIENNE LE BUS USB SLIDE 101

LE BUS USB

(Universal Serial BBus)

FIN

DIAPORAMA EN LIGNE => www.ecole.ensicaen.fr/~vienne