Vous êtes sur la page 1sur 10

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec) TD INFO INDUS PROTOCOLE USB : ANALYSE LOGIQUE

2008-2009

Rappels de cours 1. Flux de donnes, fonctionnement gnral

Un appareil USB communique avec un logiciel client install sur l'hte. Le systme USB cre des canaux virtuels ( pipe ) pour les diffrents flux de donnes. Les canaux de types contrles sont bi-directionnels, les autres sont unidirectionnels. Il y a donc sparation des flux de donnes de chaque appareil; un canal aboutit dans l'appareil sur une terminaison ( endpoint ). Un appareil possde plusieurs terminaisons et est toujours relis l'hte au moins par le canal par dfaut ( pipe0 ) aboutissant la terminaison numro zro ( endpoint0 ); cette terminaison est bi-directionnelle. Pour les autres terminaisons il peut y avoir 2 canaux, l'un montant et l'autre descendant; la combinaison de l'adresse de l'appareil, du numro de la terminaison et de la direction est unique. Les caractristiques de frquence, de bande passante, de taille de buffer, de type de transfert et de sens de flux dterminent les proprits de chaque terminaison. Un appareil basse vitesse est limit deux terminaisons optionnelles en plus de la terminaison de numro zro obligatoire, un appareil pleine vitesse peut avoir, en plus de la terminaison de numro 0, 15 terminaisons montantes et 15 descendantes. Un canal est caractris par sa terminaison, sa bande passante et son type de transfert. Sauf pour les transferts isochrones, un systme d'alternance entre deux types de paquet de donnes permet de dtecter un paquet perdu et donc de le retransmettre. Les canaux de type isochrones et interruptions obtiennent une bande passante rserve. 2. Protocole : Trame / Transaction / Packet

La priode est la dure de transmission d'un bit selon la vitesse utilise. Pour viter une dsynchronisation , des changements d'tats supplmentaires peuvent tre insrs (stuffing), ils sont retirs au dcodage (unstuffing). Chaque paquet commence par une srie de 7 transitions assurant la synchronisation. Le dbut d'un paquet est caractris par le passage de l'tat inoccup (tat J) l'tat K, puis vient la synchronisation. Les donnes viennent ensuite suivie par un tat SE0 durant le temps de 2 priodes et enfin le retour l'tat J. Un appareil doit laisser un temps d'une dure de 2 priodes aprs un paquet (EOP) et avant d'envoyer son paquet de rponse; cette dure peut atteindre 7,5 priodes. Les dures inter-paquet de l'hte sont identiques mais il n'y a pas de maximum pour des paquets de transactions diffrentes. Des dures inter-paquet de 16 18 priodes provoquent l'abandon d'une transaction. L'intervalle entre deux trames est compris entre 0,5 et 1,5 ms. Transaction IN. Rponse au jeton : - Si jeton reu corrompu : pas de rponse - Si terminaison bloque : rponse STALL - Si terminaison incapable d'envoyer des donnes : rponse NAK - Si terminaison capable d'envoyer des donnes : rponse DATA Transaction OUT. Rponse aprs rception du jeton et des donnes : - Si paquet reu corrompu : pas de rponse - Si terminaison bloque : rponse STALL - Si terminaison accepte les donnes : rponse ACK - Si terminaison incapable d'accepter les donnes : rponse NAK Transaction SETUP. L'appareil doit accepter le paquet DATA0 qui suit un paquet SETUP puis rpondre par ACK si les paquets ne sont pas corrompus. 3. Protocole : diffrents modes de transfert 1 Acquittement : - Si donnes corrompues ou l'hte ne peut pas accepter les donnes : pas de rponse - Si donnes acceptes : rponse ACK

E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec)

2008-2009

Transfert de contrle ( control ). Destin la configuration et la commande d'un appareil. 3 transactions successives : 1. Setup , 2. des transactions de donnes ventuelles ( Data ) dans le sens indiqu par le Setup 3. statut ( Status ) Le systme USB utilise le canal par dfaut ( Pipe 0 ) pour configurer l'appareil par des transferts de contrle. La charge utile des paquets de donnes est de 8, 16, 32 ou 64 octets en pleine vitesse et de 8 octets en basse vitesse; la taille maximum est dfinie par les caractristiques de la terminaison ( endpoint ). Un systme de retransmission en cas d'erreur assure la fiabilit du transfert. Le transfert commence par une transaction SETUP. Ensuite une srie de transactions OUT ou IN selon le sens de transmission indiqu par le SETUP. Une transaction IN ou OUT inverse au sens de transmission prcdent termine le transfert en donnant le statut de celle-ci. Il y a alternance des paquets DATA0 et DATA1. Transfert isochrone ( isochronous ). C'est un transfert dbit constant tolrant aux erreurs destin aux flux importants de donnes tels l'audio ou la vido. Le dbit dans le canal est garanti. La charge utile des paquets peut atteindre 1023 octets en pleine vitesse et 1024 en haute vitesse; ce mode ne supporte pas la basse vitesse. Les erreurs sont signales mais il n'y a pas de retransmission. La synchronisation peut se faire, entre autre, en dtectant le paquet SOF qui est plac au dbut de chaque trame. Ce sont des jetons IN ou OUT selon le sens du canal suivis de paquets DATA0. Il n'y a pas de rponse ni de contrle du squencement des donnes. Transfert par interruption ( interrupt ). Il est destin aux appareils transmettant peu de donnes mais dans un dlai garanti. Il ne s'agit pas vraiment d'interruptions mais d'interrogations de l'appareil par l'hte une cadence fixe et garantie. La charge utile des paquets de donnes est identique celle des transferts de contrle. En cas d'erreur il y a retransmission lors de l'interrogation suivante. A intervalle rgulier et ngoci lors de l'tablissement du canal, l'hte excute une transaction IN ou OUT selon le sens du canal. Il y a alternance des paquets DATA0 et DATA1 Transfert en bloc ( bulk ). Il est destin aux gros volumes de donnes sporadiques et sans contraintes temporelles (ex : imprimante). Le systme peut retarder un transfert en bloc jusqu' disposer de suffisamment de bande passante. Aucun format n'est impos aux donnes. La charge utile des paquets de donnes est de 8, 16, 32 ou 64 octets. Les transferts en bloc supportent la correction des erreurs; ils sont en pleine ou haute vitesse. C'est une suite de transactions OUT ou IN selon le sens du canal. L'alternance des paquets DATA0 et DATA1 permet de contrler l'intgrit des donnes. 4. Protocole : Descripteurs
Type Appareil (device) Configuration (config) Chaine de caractres (string) Interface (interface) Terminaison (endpoint) Qualificateur d'appareil Autre configuration de vitesse Interface de puissance (power) Classe (class) Valeur 1 2 3 4 5 6 7 8 21

Types de descripteur :

E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec)

2008-2009

Descripteur d'appareil (valeur 1, 18 octets) : Chaque appareil doit avoir un numro de fabriquant (VID) et un numro de produit (PID). Tous les appareils ne sont pas rattachs une classe.
Champ bLength bDescriptorType bcdUSB bDeviceClass bDeviceSubClass bDeviceProtocol bMaxPacketSize0 idVendor idProduct bcdDevice iManufacturer iProduct iSerialNumber bNumConfigurations Taille 1 1 2 1 1 1 1 2 2 2 1 1 1 1 Description Taille du descripteur en octets Type du descripteur = 1 Version USB code en BCD Code de classe assign par l'USB-IF Code de sous-classe dpendant de la classe Code de protocole dpendant de la classe Taille maximum des paquets pour la terminaison 0 Code fabricant assign par l'USB-IF (VID) Code produit assign par le fabricant (PID) Version d'appareil cod en BCD Index du descripteur de chaine du fabricant Index du descripteur de chaine de l'appareil Index du descripteur de chaine du numro de srie Nombre de configurations possibles

Descripteur de configuration (valeur 2, 9 octets) :


Champ bLength bDescriptorType wTotalLength bNumInterfaces bConfigurationValue iConfiguration bmAttributes bMaxPower Taille 1 1 2 1 1 1 1 1 Taille du descripteur en octets Type du descripteur = 2 Taille totale de tous les descripteurs pour cette configuration Nombre d'interfaces supportes par cette configuration Numro de cette configuration (A utiliser par SET_CONFIGURATION) Index du descripteur de chaine dcrivant cette configuration Bit 6 : auto-alimentation, bit 5 : commande de rveil, bit 7 = 1 Consommation maximum en units de 2 mA. Description

Descripteur de chane (valeur 3, 4 octets pour string0) :Ces descripteurs sont facultatifs; si un appareil ne les supporte pas, les rfrences des descripteurs de chaine doivent tre 0. Ils sont en UNICODE et peuvent supporter plusieurs langues. Chaque langue possde un identificateur sur 2 octets. Le descripteur de chaine d'index 0 contient un tableau des identificateurs des langues supportes. Les 10 derniers bits identifient la langue, les 6 premiers le pays d'application. - Quelques identificateurs de langues courantes :
Langue Identificateur (Hexa) Franais Anglais Allemand Italien Espagnol 040c 0409 0407 0410 040a

- Descripteur de chaine d'index 0 :


Champ bLength bDescriptorType wLANGID[0] ... wLANGID[N] Taille 1 1 2 2 2 Description Taille du descripteur en octets Type du descripteur = 3 Identificateur de langue d'index 0 ... Identificateur de langue d'index N

- Descripteur de chaine d'index suprieur 0 :


Champ bLength bDescriptorType bString Taille 1 1 X Description Taille du descripteur en octets Type du descripteur = 3 Chaine UNICODE

E. MAGAROTTO

TD Informatique Industrielle Champ bLength bDescriptorType bInterfaceNumber bAlternateSetting bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface Taille 1 1 1 1 1 1 1 1 1

L3 IE-EEA-EIA-Info (option Elec) Description Taille du descripteur en octets Type du descripteur = 4 Numro de cette interface (Base 0) Numro de l'interface alternative Nombre de terminaisons excluant les terminaisons zro Code de classe assign par l'USB-IF Code de sous-classe dpendant de la classe Code de protocole dpendant de la classe Index du descripteur de chaine dcrivant cette interface

2008-2009

Descripteur d'interface (valeur 4, 9 octets) :

Descripteur de terminaison (valeur 5, 7 octets) :


Champ bLength bDescriptorType bEndpointAddress Taille 1 1 1 Taille du descripteur en octets Type du descripteur = 4 Adresse de cette terminaison Bits 0 3 : Numro de terminaison Bit 7 : direction (O=OUT, 1=IN) - Ignor pour canal de contrle Proprits de la terminaison. Bit 0 et 1 : Type de transfert - 00 Contrle - 01 Isochrone - 10 Bloc - 11 Interruption Bit 2 5 : Paramtres pour transfert isochrone Taille maximum des paquets de donnes en octets Intervalle entre chaque demande de donnes de l'hte en nombre de trames. - Transfert isochrone pleine et haute vitesse : 1 16 - Transfert par interruption pleine et basse vitesse : 1 255 - Transfert par interruption haute vitesse : 1 16 - Transfert en bloc OUT haute vitesse : 1 255 Description

bmAttributes

wMaxPacketSize

bInterval

Composition des PID selon jeton :


Bits (3-0) 0001 1001 0101 1101 0011 1011 0111 1111 0010 1010 1110 0110 1100 1100 1000 0100 Nom OUT IN SOF SETUP DATA0 DATA1 DATA2 MDATA ACK NAK STALL NYET PREP ERR SPLIT PING Type de paquet Jeton Jeton Jeton Jeton Donnes Donnes Donnes Donnes Acquittement Acquittement Acquittement Acquittement Jeton Acquittement Jeton Jeton Description criture (W) du host pour l'appareil Lecture (R) du host pour l'appareil Dbut de trame Initialisation pour transaction control Donnes paquet pair Donnes paquet impair donnes haute vitesse donnes haute vitesse pour transactions Split Acquittement positif Acquittement ngatif, appareil occup Terminaison ou canal hors service Acquittement ngatif haute vitesse Trafic vers un appareil basse vitesse Erreur dans une transaction Split Transaction avec un hub haute vitesse Vrification de liaison

5.

Enumration

Aprs sa mise sous tension, un appareil ne rpond aucune transaction avant d'avoir reu un reset du bus. Aprs cela l'appareil est adressable son adresse par dfaut. Aprs raccordement d'un appareil, le systme USB procde l'numration qui ralise les actions suivantes : aliment / dfaut / adress / configur Le host dtecte un priphrique (D+ ou D- change) et sa vitesse. Le host attend au moins 100 ms (temps utile pour : prise compltement insere et alimentation stabilise) Il ny a pas encore dactivit sur les lignes DATA car le host nest pas encore autoris.
E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec)

2008-2009

Reset gnral Fin tat aliment Le host effectue une requte (GetDeviceDescriptor) afin de dfinir la taille max des paquets du endpoint0 Reset gnral Fin tat dfaut Le host effectue une requte (SetAddress) afin dattribuer la nouvelle adresse au priphrique Le priphrique est dsormais adress Fin tat adress Le host effectue une requte (GetDeviceDescriptor) Le host effectue une requte (GetConfigDescriptor) Le host effectue une requte (GetConfigDescriptor) Le host lit les informations de configuration et assigne l'appareil l'une de ses configurations. La puissance fournie par Vbus peut alors augmenter; l'appareil est prt tre utilis. Fin tat configur Tous les appareils supportent un jeu de requtes communes. A l'exception de la requte "SetAdress" et de certaines requtes longues, le traitement de la requte doit tre termin avant que l'appareil ne renvoie l'acquittement. Ces requtes se font par transfert de contrle sur le canal par dfaut; elles sont envoyes dans les 8 octets du paquet de donne d'une transaction SETUP et doivent en gnral tre termine en moins de 5 secondes. Les principales requtes : Effectues par le jeton Setup. Les jetons SETUP ont 8 octets de donnes diviss en 5 champs :
Jeton SETUP (8 octets) Taille Nom du champ (octets) bmRequestType bRequest wValue wIndex wLength 1 1 2 2 2 BmRequest Type 0x80 0x80 0x81 0x00 0x00 0x00 0x01 bRequest + valeur
GET_CONFIGURATION (8) GET_DESCRIPTOR (6) GET_INTERFACE (10) SET_ADDRESS (5) SET_CONFIGURATION (9) SET_DESCRIPTOR (7) SET_INTERFACE (11)

wValue 0 Type descripteur et index 0 Adresse Valeur Config. Type descripteur et index Configuration 0

wIndex

wLength 1 Longueur max desc. 1 0 0 Longueur max desc. 0

Donnes Valeur config. Descripteur Configuration

0 ou Id de langue Interface 0 0 0 ou Id de langue Interface

Descripteur

Logiciel dacquisition :graphicUSB boutons min : seulement vnements de niveau haut Affiche les tats lectriques du bus USB (vert clair) SOF : Start of Frame Show Chirps (high speed only) Show transactions : affiche uniquement les transactions Show packet : affiche la profondeur maximale de la trame (niveau parquets) Show NAK : affiche les NAK Show NYET (high speed only) Show Spurious data (optionnel) Max : vnements de bas niveau Barre travail : Enregistrement/export Options dimpressions (choix de la fentre imprimer) et de visualisation : time / bandwidth

E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec)

2008-2009

Exo 1 : Couche noire et bleu (transferts) Charger fichier mouse_hid.mqu Afficher les tats (lectriques) du bus A quel instant (en s) se fait la connexion ? Comment le host dtecte la vitesse du priphrique (ici une souris) ? Que signifie le suspend ? Pourquoi le host procde-t-il 2 reset ? A quoi sert la premire requte GetDeviceDescriptor ? A quel instant le priphrique est-il disponible pour utilisation. Comment sappelle la phase prcdente ? A quoi sert-elle ? afficher SOF -> commentaires ! Dtailler les diffrentes tapes de cette phase en explicitant les descripteurs (et le sens des transferts de commande ( control transfert ) Pourquoi tous les control transfert se font-ils en endpoint 0 et les interrupt transfert en endpoint 1 ?

Exo 2 : Couche jaune (transactions) Remarques : La rponse une requte GetDescriptor se dcompose en plusieurs transactions : Setup /Data (IN ou OUT) / Status (OUT ou IN) La requte GetConfig fournit une rponse de plusieurs descripteurs (config, interface, endpoint, string, autres). Afficher NAK : vrifier que la plupart des transferts sont NAK, ce qui ne signifie pas une erreur mais une demande de r-mission. Par souci de clart, on affichera uniquement les transferts ACK. Analyse du transfert de commande n1 (event #5683) - GetDeviceDescriptor : Setup / data IN / status OUT - Commenter le sens de chaque transaction - Pourquoi 3 transactions data IN ? Analyse du transfert de commande n2 (event #106113) - SetAddress : Setup / data IN - Commenter le sens de chaque transaction - Pourquoi aucune transactions status ? Analyse des autres transferts de commande - idem Analyse dun transfert interrupt (communication avec la souris) - Pas de descripteur : pourquoi? - Pas de transaction Setup : pourquoi ? - A quoi correspond la transaction IN ? Interprtation des donnes descripteurs : Device DATA1 DATA0 DATA1 Config DATA1 DATA0 12 03 00 09 32 01 06 01 02 00 01 71 68 00 00 00 01 00 04 08 22

22 00

01 01

00

A0

E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec)

2008-2009

Interface DATA1 DATA0 Endpoint DATA1

09 00 07

04

00 00

01 03

01

02

05

81 03

08 00

0A 22 32

HID : rponse de 4 octets / 10 ms DATA1 09 21 00 01 00 01 DATA0 00 String0 DATA1 String 34 DATA1 DATA0 DATA1 DATA0 DATA1 04 22 20 73 54 20 03 03 00 00 00 00 09 04 55 4D 65 44 00 00 00 00 53 6F 20 2E 00 00 00 00

42 75 53 20

00 00 00 00

Vrifier le contenu des rapports de la souris ( input report ) : exemples #5230-5232, #6018-6020, #20892-20894 Exo 3 : Couche blanche (paquet) Chaque transaction contient une succession de paquets TDH Donner le contenu des champs de chaque paquet Identifier et vrifier chaque PID (pour chaque paquet)

E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec) CORRECTION

2008-2009

Exo 1 : Couche noire et bleu (transferts) On connecte le priphrique (ici une souris) partir de 34 secondes. La connexion se fait sur la ligne Ddonc le priphrique est basse vitesse (low speed). Ensuite il y a une suspension du bus car il ny a pas dactivit sur les lignes de donnes D-/D+ car le host nest pas encore autoris. Aprs sa mise sous tension, un appareil ne rpond aucune transaction avant d'avoir reu un premier reset du bus (le device est positionn dans ltat dfaut, il peut maintenant rpondre ladresse par dfaut 0) Fin phase alimente Aprs cela l'appareil est adressable son adresse par dfaut. Il faut au pralable envoyer une requte GetDeviceDescriptor pour dfinir la taille max des paquets du endpoint 0 (le chef de table qui doit changer principalement les informations de configuration/setup). Un deuxime reset est ncessaire pour pouvoir positionner le device dans ltat adressable (pouvoir lui attribuer son adresse diffrente de 0). Fin phase dfaut SetAddress permet dattribuer une adresse la souris (ici address = 1). Fin phase adresse Plusieurs requtes sont alors envoyes par le host afin de rcuprer lensemble des informations ncessaires la configuration de lappareil. Fin phase configure Le priphrique est prt pour utilisation (communication par transfert de type interrupt car le volume de donnes est peu important mais doit tre garantit intervalles rguliers, ici une trame chaque ms). Plusieurs remarques : Si on affiche les SOF (Start Of Frame), on saperoit que de nombreuses trames sont vides (exemple 52 trames de #4 #55). Par souci de clart, on fera apparatre uniquement les trames non vides (comprenant des rponses). Tous les transferts de commande ( control transfert ) se font en endpoint0 car il est le seul endpoint habilit changer ce type dinformation (de configuration). Les transferts de communication (ici interrupt ) se font avec les autres endpoint (ici endpoint 1). Pour rappel, un priphrique basse vitesse comporte seulement 3 endpoint (endpoint0 bidirectionnel IN/OUT, endpoint1 de sens IN et endpoint1 de sens OUT) tandis quun pleine ou haute vitesse peut en comporter 31 (endpoint 0 + 15 dans chaque sens) Le groupe de requte (GetDevice, GetConfig x2, GetString0, GetString34) se fait 2 fois : une fois par driver charg dans la pile (ici 2 drivers). Pour monter un priphrique, le systme dexploitation vrifie que les donnes (dusine) situes dans les descripteurs sont en accord avec celles requises par les drivers (exemple Vendor IDentificator, Product IDentificator, etc). Le cas chant, lnumration est refuse. Lensemble de ces 4 phases reprsente lnumration (qui dure ici environ 4 ms). Dtail de la phase configure (requtes et descripteurs en rponse) GetDeviceDescriptor : information gnrale sur le priphrique (quel type de priphrique, ici une souris standard USB) GetConfigDescriptor x 2 : en rponse cette requte on reoit plusieurs descripteurs (Config, Interface, HID, Endpoint et ventuellement dautres). Le host connait uniquement la taille du premier descripteur (Config, 9 octets) mais ne connait pas la taille globale de lensemble des descripteurs qui suivent. Il fait une premire requte pour obtenir Config dans lequel apparait la taille globale des descripteurs suivants (34). Ensuite, il recommence lopration pour obtenir lensemble des descripteurs. GetString0 : information sur le langage par dfaut (anglais) et la liste des langages. GetString34 : informations sur le produit (une chane de caractres unicode de longueur 34 ici qui dcrit le produit). Plusieurs requtes terminent la phase dnumration : 8

E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec)

2008-2009

SetConfig : permet la configuration du priphrique en fonction des informations recueillies prcdemment. SetIdle : Le host demande au priphrique de renvoyer un rapport en rponse chaque transfert de type interrupt sur chaque nouvel vnement. GetHIDClassReport : le host informe le driver quil va recevoir un rapport (de la souris) de longueur dfinie (ici 4 octets) sur endpoint IN (interrupt) Exo 2 : Couche jaune (transactions) Un transfert de commande se dcompose en 3 transactions (SETUP / Data IN ou OUT / status OUT ou IN inversement) tandis que les autres transferts (bulk, interrupt, isochronous) contiennent uniquement des transactions IN ou OUT Analyse du transfert de commande n1 (event #5683) - GetDeviceDescriptor : Setup / data IN / status OUT - Le sens de chaque transaction : Setup (Write), 3 transactions IN (Read), status OUT (Write) - Pourquoi 3 transactions data IN ? car descripteur de longueur 18 octets (soit 8 + 8 + 2) Analyse du transfert de commande n2 (event #106113) - SetAddress : Setup / status IN - Setup (W), Status IN (R, obligatoirement invers par rapport au prcdent) - Pourquoi aucune transaction data IN/OUT ? optionnel, ici pas de donnes transmettre ou bien lire, opration SetAddress impose uniquement ladresse. Analyse dun transfert interrupt (communication avec la souris) - Pas de descripteur : Ce nest pas un transfert de commande (pas un control transfert ) - Pas de transaction Setup : Pas besoin (pas dadresse et de numro de trame reconfigurer). Uniquement besoin de transaction IN ou OUT selon le sens des changes. - A quoi correspond la transaction IN ? Une lecture par le host des donnes souris (en fait : lecture du rapport fourni par la souris). Interprtation des donnes descripteurs : les donnes interprter en priorit sont en rouge. ----------------------------------------------------------------------------------------------------------------Device
DATA1 DATA0 DATA1 12 (taille) 03 00 01 (type) 06 01 00 71 01 68 00 00 00 01 00 04 08 (taille max des paquets) 22

0x08 correspond la taille max des paquets du endpoint 0 0x0603 correspond au code vendeur de Novatek (la marque de la souris) 0X6871 correspond au code produit pour une souris ----------------------------------------------------------------------------------------------------------------Config
DATA1 DATA0 09 (taille) 32 02 (type) 22 00 01 01 00 A0

0x0022 34 correspond la taille de lensemble des descripteurs qui suivent. 0x32 50 units de 2 mA 100 mA dalimentation pour ce priphrique ----------------------------------------------------------------------------------------------------------------Interface
DATA1 DATA0 09 (taille) 00 04 (type) 00 00 01 03 01 02

0x01 correspond au numro du endpoint charg des changes (ici endpoint1, voir remarques) ----------------------------------------------------------------------------------------------------------------Endpoint
DATA1 07 (taille) 05 (type) 81 03 08 00 0A

0x81 correspond ladresse du endpoint1 (qui sera charg des changes) 0x0008 correspond la taille max des paquets. 0x0A 10 signifie un rapport de priphrique tous les 10 trames (soit 10 ms) ----------------------------------------------------------------------------------------------------------------E. MAGAROTTO

TD Informatique Industrielle

L3 IE-EEA-EIA-Info (option Elec) 21 (type) 00 01 00 01 22 32

2008-2009

HID : rponse de 4 octets / 10 ms


DATA1 DATA0 09 (taille) 00

0x22 34 correspond au type (code 34 pour un rapport) 0x0032 50 correspond la longueur du rapport (50 octets) ----------------------------------------------------------------------------------------------------------------String0
DATA1 04 (taille) 03 (type) 09 04

0x0409 correspond au code langage pour Anglais String 34


DATA1 DATA0 DATA1 DATA0 DATA1 22 20 73 s 54 T 20 03 00 . 00 . 00 . 00 . 55 U 4D M 65 e 44 D 00 . 00 . 00 . 00 . 53 S 6F o 20 2E 00 . 00 . 00 . 00 . 42 B 75 u 53 S 20 00 . 00 . 00 . 00 .

String34 : contient les donnes descriptives de la souris en unicode (ici U.S.B. M.o.u.s.e. S.T.D. ----------------------------------------------------------------------------------------------------------------Le contenu des rapports (envoy toute les 10 trames) de la souris ( input report ) :
#5230-5232 #6018-6020 #20892-20894

Dplacement dune Unit (droite) selon Y

dplacement de 5 units (droite) en X et 3 units (gauche) en Y

click bouton 2

Exo 3 : Couche blanche (paquet) Chaque transaction contient une succession de paquets TDH : Token (jeton), Data (donnes, optionnel, Handshake). Selon le type de transfert, on peut avoir diffrentes combinaisons : TDH, TH, etc T :Le jeton peut tre de diffrente nature selon laction venir : TIN ou TOUT ou TSETUP (voire TSOF). Un jeton SETUP caractrise entirement la requte (la direction, le type et la source du transfert, suivi du type de requte et du nom du descripteur demand avec sa longueur reserve). D : Le paquet DATA vient immdiatement aprs un jeton SETUP ou un jeton IN ou OUT. Pour un priphrique basse vitesse, il y a alternance DATA0/DATA1 (8 octets max) H : Ce paquet indique que le paquet de donnes a t reu sans erreur (par le host ou le device selon le sens du transfert) Donner le contenu des champs de chaque paquet : SYNC/PID/SPecific Information/CRC/EOP. Seul le champ SPI est diffrent (sa structure) : ADDR + EndP pour Token (T), Payload pour Data (D), vide pour Handshake (H). Les valeurs des PID sont adaptes selon laction (voir question suivante) Identifier et vrifier chaque PID (pour chaque paquet) : les bits 0-3 sont complts par le complment 2 pour la dtection derreur relative au seul PID, on obtient un codage du PID sur 1 octet.
Code PID SETUP : Code PID IN : Code PID OUT : Code PID DATA0 : Code PID DATA1 : Code PID ACK : 1101 ( D) 1001 ( 9) 0001 ( 1) 0011 ( 3) 1011 ( B) 0010 ( 2) octet : 0 x 2D octet : 0 x 69 octet : 0 x E1 octet : 0 x C3 octet : 0 x 4B octet : 0 x D2

E. MAGAROTTO

10