|
Les fonctions USB
Quand nous pensons à un appareil USB, nous pensons à un périphérique USB, mais un appareil
USB peut signifier un appareil émetteur / récepteur USB sur l'hôte ou périphérique, un
HUB USB ou un circuit intégré contrôleur d'hôte ou un appareil périphérique USB.
Par conséquent le standard fait références aux fonctions USB qui peuvent être considérées
comme appareil USB qui fournissent une possibilité ou une fonction comme une imprimante,
in lecteur Zip, un scanner, un modem ou un autre périphérique.
Donc à l'heure qu'il est nous devrions savoir de quoi est composé un paquet USB.
Ce n'est pas le cas ? Vous avez déjà oublié combien de bits composent un champ PID ?
Bon, ne vous alarmez pas trop. Heureusement la plupart des fonctions USB manipulent
les protocoles USB bas niveau jusqu'à la couche transaction ( que nous traiterons au
chapitre prochain) dans le silicium. La raison pour laquelle nous traiterons cette
information est que la plupart des contrôleurs de fonction USB signaleront des erreurs
comme l'Erreur d'Encodage PID. Sans traiter rapidement ceci, l'on pourrait se demander
ce qu'est l'erreur d'encodage PID ? Si vous avez proposé que les 4 derniers bits du PID ne
correspondent pas au complément des 4 premiers bits alors vous auriez raison.
La plupart des fonctions auront des séries de tampons (buffers), généralement de 8
octets de long. Chaque tampon appartiendra à une terminaison EP0 IN, EP0 OUT etc...
Supposons par exemple, que l'hôte envoie une demande de descripteur d'appareil.
La fonction matérielle lira le paquet d'installation et déterminera à partir du champ
adresse si le paquet est pour lui-même, et si c'est le cas, il copiera la " charge utile
" du paquet de données suivant au tampon de la terminaison appropriée, dictée par la
valeur dans le champ de la terminaison du jeton d'installation. Il enverra ensuite un
paquet " poignée de mains " pour valider la réception de l'octet et génèrera une interruption
interne à l'intérieur du semi-conducteur / microcontrôleur pour la terminaison appropriée
signalant qu'il a reçu un paquet. C'est en principe déjà intégré dans la matière (silicium).
Le logiciel a maintenant une interruption, et doit lire le contenu du tampon de terminaison et
analyser la demande de descripteur d'appareil.
Les terminaisons
Les terminaisons peuvent être décrites comme émetteurs ou récepteurs de données.
Du fait que le bus est régi par l'hôte, les terminaisons se présentent à la fin de
la chaîne de communications sur la fonction USB. Au niveau de la couche logicielle,
le pilote (driver) logiciel de votre appareil va envoyer, par exemple, un paquet à vos appareils
EP1. A la sortie de l'hôte, la donnée aboutira au tampon EP1 OUT.
Votre microprogramme pourra alors lire à loisir cette donnée. S'il veut retourner la
donnée, la fonction ne peut pas simplement écrire sur le BUS comme celui-ci est contrôlé
par l'hôte. Par conséquent il écrit la donnée dans EP1 IN qui s'installe dans le tampon
jusqu'à ce que l'hôte envoie un paquet IN à cette terminaison demandant la donnée.
Les terminaisons peuvent être aussi considérées comme l'interface entre le matériel
de l'appareil de fonction et le microprogramme s'exécutant sur ce même appareil.
Tous les appareils doivent prendre en charge la terminaison zéro. C'est la terminaison
qui reçoit la totalité de la commande des appareils et des demandes d'états pendant
l'énumération et tant que l'appareil est opérationnel sur le bus.
Canaux de communications (Pipes)
Tandis que l'appareil envoie et reçoit des données sur une succession de terminaisons,
le logiciel client transfère des données à travers des canaux de communications.
Un canal de communication (Pipe) est une connexion logique entre l'hôte et les
terminaisons. Les canaux de communications auront aussi un ensemble de paramètres
qui leur seront associés tels que : combien de bande passante leur est allouée,
quel type de transfert (Commande, Bloc, Iso ou Interruption) ils utilisent, la
direction du flux de données et les tailles maximales du paquet / tampons. Par exemple
le canal de communication par défaut est un canal bidirectionnel composé d'une terminaison
zéro IN et d'une terminaison zéro OUT avec un type de transfert de commande.
L'USB définit 2 types de canaux de communications
-
Les flux de données (Stream Pipes) n'ont pas de format USB défini. Cela veut
dire que vous pouvez envoyer n'importe quelle sorte de données par un flux de données et
que vous pouvez rapporter les données de sorties à l'autre extrémité. Les données circulent
séquentiellement et ont une direction prédéfinie, soit en entrée soit en sortie.
Les flux de données supporteront les types de transferts en Bloc, Isochrone et d'Interruptions.
Les flux de données peuvent soit être contrôlés par l'hôte ou l'appareil.
-
Les canaux de messages (Message Pipes) ont un format USB défini. Ils sont contrôlés par
l'hôte et sont initiés par une demande émanant de l'hôte. Les données sont ensuite transférées
dans la direction voulue, dictées par la demande. Par conséquent les canaux de messages
permettent aux données de circuler dans les deux directions mais ne prendront seulement
en charge que les transferts de commande.
|