Existe-t-il un protocole de communication USB réel?
La plupart d'entre nous ne pensons jamais beaucoup à nos périphériques USB, nous les connectons et les oublions. Mais que se passe-t-il si vous êtes du genre curieux qui veut en savoir plus sur le fonctionnement de l'USB? Le message de questions et réponses du superutilisateur d'aujourd'hui contient les réponses aux questions d'un lecteur curieux.
La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..
Photo gracieuseté de Evilelka Kowalski (Flickr).
La question
SuperUser Reader smeeb veut savoir s’il existe réellement un protocole de communication USB:
Selon Wikipedia, USB:
- Définit les câbles, les connecteurs et les protocoles de communication utilisés dans un bus pour la connexion, la communication et l'alimentation entre ordinateurs et périphériques électroniques..
Mais y at-il un réel Protocole de communication USB? Ma compréhension est que:
- Vous connectez un périphérique USB à une machine (Ubuntu ou tout type de Linux par exemple).
- Linux trouve le pilote de périphérique pour ce périphérique d’une manière ou d’une autre (bonus si vous connaissez!) et le charge.
- L'appareil est maintenant connecté sous / dev / theDevice.
- Les applications de l'espace utilisateur peuvent maintenant lire et écrire / dev / theDevice et le pilote gère l'entrée et la sortie de bas niveau vers le périphérique / matériel sous-jacent.
Pour autant que je sache, un Protocole de communication USB n'apparaît nulle part dans ce flux. Si ma compréhension est correcte, la clé USB est simplement le câble et la connexion électrique entre le PC et le périphérique.
Est-ce que je me trompe ici? USB utilise-t-il réellement un type de protocole de bas niveau qui souligne le flux ci-dessus? Si oui, de quoi s'agit-il et comment fonctionne-t-il à une vue de 30 000 pieds?
Existe-t-il un protocole de communication USB??
La réponse
RedGrittyBrick et projectdp, contributeurs à SuperUser, ont la solution pour nous. Tout d'abord, RedGrittyBrick:
Oui (voir protocoles USB).
Si je comprends bien, la spécification USB définit un ensemble complexe de protocoles en couches et de profils de périphérique..
Par exemple, les périphériques USB peuvent être conformes aux modèles de haut niveau tels que stockage de masse, clavier, périphérique d'interface humaine, etc., et être gérés par un pilote de périphérique générique. Certains périphériques USB peuvent communiquer à un niveau inférieur, de sorte que le support USB de bas niveau du système d'exploitation peut reconnaître que des pilotes de niveau supérieur spécifiques au périphérique sont nécessaires..
Suivi de la réponse de projectdp:
Question
Existe-t-il un protocole de communication USB de bas niveau en action et en quoi consiste-t-il??
Réponse
Oui il y a. La spécification USB inclut le protocole USB qui définit la manière dont le bus est utilisé au niveau du bit. C’est le protocole de bas niveau qui sous-tend les protocoles de plus haut niveau (c’est-à-dire stockage de masse, HID, etc.).
Pour plus de détails sur le fonctionnement du protocole USB, ce wiki OSDev est utile. Voici une autre description intéressante utilisant des diagrammes de séquence pour décrire les différentes transactions de données selon le protocole USB..
Question bonus
Comment Linux trouve-t-il et charge-t-il le pilote de périphérique pour ce périphérique??
Réponse bonus
Sous Linux avec un noyau compatible USB, un périphérique USB en état de fonctionnement sera détecté via le matériel et le noyau en raison de la spécification USB. Côté matériel, la détection est effectuée par le contrôleur d’hôte USB. Ensuite, dans le noyau, le contrôleur de contrôleur hôte prend le relais et convertit les bits de bas niveau du fil en informations formatées selon le protocole USB. Ces informations sont ensuite renseignées dans le pilote usbcore du noyau..
Je paraphrase de cet excellent article Opensourceforu, qui contient beaucoup plus de détails et de clarté sur votre question dans le contexte Linux.
Assurez-vous de consulter le reste de la discussion animée via le lien de fil partagé ci-dessous.!
Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.