Vous n'êtes pas identifié(e).
J’utilise souvent un adaptateur USB <-> Ethernet pour ajouter à ma machine de développement un port réseau supplémentaire et pouvoir ainsi facilement me connecter avec une IP statique sur une carte de développement.
Ce type d'équipement électronique est très probablement basé sur un ASIC spécialisé, qui réalise entièrement la fonction de façon “matérielle”, mais je vous propose aujourd’hui de construire la même fonction avec un microcontrôleur et des briques logicielles open-source.
Pour vous aider durant la lecture de cet article, le code source de ce projet est disponible sur le dépôt Github suivant:
https://github.com/remdzi/stm32-eth-usb
Le bus USB et la classe CDC-ECM
Un bus USB est constitué d’un "host" (l'hôte, votre PC par exemple) et de un ou plusieurs "devices" (périphériques, vos souris, clavier, etc). Chaque "device" implémente un ou plusieurs "endpoints" (EP) qui sont ses canaux de communication avec le "host". Les EP peuvent être de type "OUT" si l’échange des données se fait du "host" vers le "device", "IN" du "device" vers le "host" et "INOUT" si la communication est bi-directionnelle.
Lorsque vous connectez un "device" sur le bus, le "host" commence par la phase d’énumération qui consiste à lire le descripteur USB du "device" sur son EP0 qui est toujours de type "INOUT". Ce descripteur contient la fiche d’identité du "device" avec notamment son PID (ou "Product ID") et son VID (ou "Vendor ID") mais aussi le type de classe USB implémentée par le "device". Si le "device" annonce une classe USB standardisée alors le "host" connaît le rôle et le format des données supportées par chacun des autres EPs du "device" et peut donc charger un driver standard supportant cette classe. Si au contraire le "device" annonce une classe non standard alors c’est le couple PID/VID qui permet au "host" de reconnaître le "device" et de charger (s'il existe) le bon driver qui implémente la communication requise pour joindre les EPs du "device".
Il existe une multitude de classes USB standardisées, chacune étant destinée à un type de périphérique: "Human Interface Devices" (HID) pour les claviers et souris, USB "Video Class" pour les webcam, USB "Audio Class" pour les micros et casques, etc.
La suite du HowTo dans Linux Embedded
“ Aujourd'hui plus qu'hier et bien moins que demain „
|
#1 Le 08/01/2023, à 11:13 |
---|---|
|
... avec un microcontrôleur et des logiciels open-sourceRémy Dziemiaszko a écrit :
La suite du HowTo dans Linux Embedded “ Aujourd'hui plus qu'hier et bien moins que demain „ |
Hors ligne |
Hors ligne
Chouette ça !
Des simples adaptateurs USB / Ethernet, j'en ai dans mes réserves
L'amour est comme un jardin, il doit se cultiver chaque jour pour donner le meilleur de lui-même
|
#2 Le 08/01/2023, à 11:21 |
---|---|
|
Chouette ça ! Des simples adaptateurs USB / Ethernet, j'en ai dans mes réserves L'amour est comme un jardin, il doit se cultiver chaque jour pour donner le meilleur de lui-même |
Hors ligne |
Hors ligne
Non ?
“ Aujourd'hui plus qu'hier et bien moins que demain „
|
#3 Le 08/01/2023, à 11:24 |
---|---|
|
Non ? “ Aujourd'hui plus qu'hier et bien moins que demain „ |
Hors ligne |
Hors ligne
Si !
L'amour est comme un jardin, il doit se cultiver chaque jour pour donner le meilleur de lui-même
|
#4 Le 08/01/2023, à 11:24 |
---|---|
|
Si ! L'amour est comme un jardin, il doit se cultiver chaque jour pour donner le meilleur de lui-même |
Hors ligne |
Hors ligne
“ Aujourd'hui plus qu'hier et bien moins que demain „
|
#5 Le 08/01/2023, à 11:26 |
---|---|
|
“ Aujourd'hui plus qu'hier et bien moins que demain „ |
Hors ligne |
Hors ligne
L'amour est comme un jardin, il doit se cultiver chaque jour pour donner le meilleur de lui-même
|
#6 Le 08/01/2023, à 11:29 |
---|---|
|
L'amour est comme un jardin, il doit se cultiver chaque jour pour donner le meilleur de lui-même |
Hors ligne |
Hors ligne