web-dev-qa-db-fra.com

Comment un ordinateur sait-il quel appareil est connecté au port USB?

Je me demandais que dans un même port USB, de nombreux appareils peuvent être connectés comme clavier, souris, dispositif de stockage, etc. Alors, comment un ordinateur sait-il quel périphérique est connecté au port USB, comme lorsque nous branchons un clavier comment une adapasse du clavier Dans la carte mère sait qu'il est clavier qui est branché et commence à communiquer avec elle?
[.____] Est-ce que chaque périphérique USB envoie des informations uniques à leur sujet à l'ordinateur à reconnaître par l'ordinateur?

22
Kapil

Chaque périphérique USB envoie-t-il des informations uniques sur eux à l'ordinateur à reconnaître par l'ordinateur?

Oui.

Fondamentalement, les périphériques USB ont un numéro de classe (qui n'est pas super unique entre les périphériques, mais définit le "type" du périphérique) et un identifiant de fournisseur (VID) et ID de produit (PID) qu'ils disent à l'hôte lorsqu'ils se connectent. Sous Windows, dans Device Manager, vous pouvez voir le numéro de classe USB ici sous "IDS compatibles" ...

enter image description here

... et vous pouvez voir la Vid et PID sous "Ids matériels" ...

Illustration of USB PID/VID in devmgmt.msc

Les fabricants de périphériques obtiennent de nouveaux vids USB à partir du forum des implémentations USB et de la USB-si elles conservent également la liste des codes de classe.

L'exemple ci-dessus, si vous regardez ceci , vous pouvez voir que la classe 0x03 est un "périphérique d'interface humaine". Un système d'exploitation ou d'un autre peut supporter des éléments basés sur la classe ou la combinaison de classe + pid/vid.

Les identifiants de fournisseur USB (VID) et ID de produit (PID) sont des numéros de 16 bits utilisés pour identifier les périphériques USB à un ordinateur ou à un autre hôte. Chaque identifiant de fournisseur est attribué par le Forum des implémentations USB à une société spécifique, qui assigne à son tour un PID à des produits individuels. Référence

PCI/PCIe (et ISA au début des années 90 avec ISAPNP) avait ce mécanisme avant USB et c'est ce qui a rendu PCI/PCIe "Plug and Play" - où le système d'exploitation pourrait détecter un appareil et une charge Un conducteur automatiquement. Le mécanisme de PCI/PCIe est plus complexe car le système d'exploitation peut attribuer des ressources au dispositif en plus de simplement obtenir le Vid/PID.

20
LawrenceC

Une bonne source d'informations sur USB est le www.usb.org , plus à ce sujet plus tard. J'avoue qu'il peut être difficile de comprendre où commencer, alors j'essaie de donner une courte introduction ci-dessous.

Premièrement, il y a plusieurs variantes sur USB, mais elles fonctionnent essentiellement la même chose. Le périphérique USB est connecté à l'ordinateur avec son propre câble. Le plus souvent en utilisant un hub, mais laissez-nous le garder simple ici.

Une fois que le micro-ordinateur dans l'appareil est alimenté, il tentera de communiquer avec l'ordinateur. L'ordinateur et l'appareil commencent par ce que vous pourriez appeler une "négociation" où ils sont d'accord sur un certain nombre de choses. L'une est la vitesse à utiliser, ils vont de 1,5 mbit par seconde et vers le haut à 10gbits/s. Comme chaque périphérique USB a sa propre connexion à l'ordinateur, via le moyeu, chacune peut avoir une vitesse différente. L'appareil négocie également pour le pouvoir, car il ne peut que tirer 100 mA du début.

Le périphérique USB aura un ou plusieurs points de fin. Ceci peut être utilisé comme exemple d'un périphérique ayant à la fois une interface audio et un clavier MIDI.

Le périphérique USB se présentera dans le protocole présenté avec un identifiant de fournisseur, c'est-à-dire un numéro unique attribué à un fournisseur et plus d'informations sur l'appareil. Ces informations permettent à un pilote de périphérique spécifique au fournisseur de l'ordinateur de parler avec l'appareil.

Toujours exiger que les appareils spécifiques au fournisseur ne soient cependant pas une bonne idée. La plupart des appareils sont aujourd'hui "conformes à la classe" - ils envoient un code de classe et se comportent comme prévu. Les codes de classe sont définis ici: https://www.usb.org/defined-Class-codes . L'un des codes de classe les plus courants, 03, est utilisé pour les périphériques d'interface humaine, un nom collectif pour les claviers, les souris, le joystick, etc. Dans la section Document de www.usb.org Il existe un document décrivant comment les différentes classes sont censées se comporter. Un exemple est ici https://usb.org/sites/default/files/hut1_2.pdf AVERTISSEMENT - Vérifiez la version LATES du document.

16
ghellquist

Chaque périphérique USB envoie-t-il des informations uniques sur eux à l'ordinateur à reconnaître par l'ordinateur?

Oui, il s'appelle "descripteur de périphérique".

Il existe un processus dans le cadre USB appelé "dénombrement". Lorsqu'un périphérique est connecté à l'un des ports USB PC, l'hôte initialise le port, attribue une nouvelle adresse USB unique et demande à l'appareil de fournir un ensemble de "descripteurs". Les descripteurs font comme le nom l'indique, décrivent ce que l'appareil est. Outre les identifiants de fournisseur et de produit, l'appareil fournit une information sur laquelle il appartient de la classe de périphérique USB. Et beaucoup plus d'informations sur les besoins de puissance, les détails fins des interfaces, les paramètres de gestion de l'alimentation, etc. La classe est l'information la plus importante que les appareils fournissent.

Les classes sont définies pour la commodité du système d'exploitation, elles ont un moyen courant d'utiliser des contrôles sur l'appareil. Les claviers génériques et les souris appartiennent (conçus) à la classe HID (classe d'appareils d'interface humaine). Les autres classes typiques sont des périphériques COM, la classe vidéo Webcam, la classe de stockage de masse. Les classes de périphérique USB définissent la fonctionnalité de base et la manière courante de contrôler les données. Donc, le système charge un pilote commun pour la classe d'appareils et que l'appareil ne fonctionne que. Des périphériques plus sophistiqués peuvent définir des interfaces exclusives, puis vous devrez télécharger et installer des pilotes propriétaires pour obtenir des fonctionnalités étendues de l'appareil. Mais pour la commodité de l'utilisateur, tous les périphériques USB implémentent généralement une fonctionnalité de classe de base, un utilisateur peut donc commencer à l'utiliser.

Les claviers sont conçus pour se conformer à la classe HID de périphériques. Votre BIOS implémente un seul pilote, HID. Ainsi, quel que soit l'ID de fournisseur ou l'ID de produit, un pilote fonctionne pour tous les claviers (s'ils sont conçus correctement), pour des centaines d'entre elles. Cependant, toutes les clés (spéciales) ne peuvent fonctionner que si vous chargez un bon pilote, ce qui ne peut être que sous OS.

Si vous êtes curieux, vous voudrez peut-être utiliser un utilitaire appelé " SBtreeView ", vous serez étonné de la quantité d'informations qu'un périphérique USB fournit à l'hôte USB.

9
Ale..chenski

( Référence plus courte de FTDI )

Les claviers et les souris sont légèrement spéciaux en USB. Bien qu'ils disposent d'un fournisseur et d'un identifiant de produit, vous ne voulez pas une situation dans laquelle un nouveau fabricant de clavier est incapable de travailler avec des ordinateurs fabriqués avant leur existence et ne veut pas avoir à expédier des pilotes pour chaque clavier.

Donc, dans le même descripteur qui a le fournisseur et l'identifiant de produit, il existe une classe de périphérique , une sous-classe de périphérique et un protocole. Tous les claviers signalent comme classe de périphérique 3 (Dispositif d'interface humaine, protocole "HID") 1 (clavier).

Il existe alors un autre ensemble de "usages" disponibles sur l'ordinateur à partir de l'appareil pour décrire le nombre de clés sur le clavier, quelle langue il s'agit, etc. Pour les souris, celles-ci décrivent les axes (généralement deux, mais vous pouvez avoir une souris 3D) et des boutons (autant que vous le souhaitez). Idem pour les joysticks; Le protocole HID peut tout couvrir d'un joystick un bouton à deux axes à un contrôleur de vol compliqué. Et il ne suffit pas de couvrir l'entrée, il couvre la sortie telle que les lumières du clavier et la rétroaction de force ou de la vibration.

USB-HID est assez utile dans sa capacité à construire des appareils génériques sans avoir besoin de trop de travail de conducteur. Vous pouvez obtenir un lanceur de missiles USB de bureau, par exemple un appareil HID.

7
pjc50