La plupart d'entre nous ne pensent jamais beaucoup à nos périphériques USB, nous les branchons simplement et les oublions. Mais que faire si vous êtes du genre curieux qui veut en savoir plus sur le fonctionnement de l'USB? Le post de questions-réponses sur les superutilisateurs d'aujourd'hui contient les réponses aux questions d'un lecteur curieux.
La session de questions et réponses d’aujourd’hui nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement de sites Web de questions-réponses géré par la communauté.
Photo gracieuseté de Evilelka Kowalski (Flickr) .
The Question
Le lecteur SuperUser smeeb veut savoir s'il existe réellement un protocole de communication USB:
Selon Wikipedia, USB :
- Définit les câbles, connecteurs et protocoles de communication utilisés dans un bus pour la connexion, la communication et l'alimentation électrique entre les ordinateurs et les appareils électroniques.
Mais y a-t-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 en quelque sorte ( bonus si vous savez! ) et le charge.
- L'appareil est maintenant connecté sous / dev / theDevice .
- Les applications de l'espace utilisateur peuvent désormais lire et écrire dans / 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.
Autant que je sache, un Protocole de communication USB n'apparaît nulle part dans ce flux. Si ma compréhension est correcte, l'USB n'est que le câble et la connexion électrique entre le PC et l'appareil.
Ai-je tort ici? L'USB met-il réellement en œuvre une sorte de protocole de bas niveau qui souligne le flux ci-dessus? Si oui, de quoi s'agit-il et comment cela fonctionne-t-il à une vue de 30 000 pieds?
Existe-t-il un véritable protocole de communication USB?
La réponse
Les contributeurs SuperUser RedGrittyBrick et projectdp ont la réponse pour nous. Tout d'abord, RedGrittyBrick:
Oui ( voir les 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ériques.
Par exemple, les périphériques USB peuvent se conformer à des modèles de haut niveau tels que le stockage de masse, le clavier, le 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 la prise en charge USB de bas niveau du système d’exploitation puisse 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 de quoi s'agit-il?
Répondre
Oui il y a. La spécification USB inclut le protocole USB qui définit la façon dont le bus est utilisé au niveau du bit. Ce serait le protocole de bas niveau qui sous-tend les protocoles de niveau supérieur (c'est-à-dire stockage de masse, HID, etc.).
Pour plus de détails sur le fonctionnement du protocole USB, ce Wiki OSDev est utile. En voici un autre description intéressante en utilisant des diagrammes de séquence pour décrire les différentes transactions de données selon le protocole USB.
Bonus Question
Comment Linux trouve-t-il et charge-t-il le pilote de périphérique pour ce périphérique?
Bonus Answer
Sous Linux, lors de l'utilisation d'un noyau compatible USB, un périphérique USB fonctionnel 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 hôte USB. Ensuite, dans le noyau, le pilote du contrôleur hôte prend le relais et traduit les bits de bas niveau sur le câble en informations formatées par le protocole USB. Ces informations sont ensuite renseignées dans le pilote usbcore du noyau.
J'ai paraphrasé cet excellent Opensourceforu article , qui a 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? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici .