L'USB a-t-il une garantie de qualité de service pour les données envoyées entre mon périphérique USB-CDC et l'hôte USB?
Je sais qu'avec le RS232 traditionnel dans une situation bruyante (par exemple un port de diagnostic automobile), les mauvais bits se produisent assez souvent pour que les sommes de contrôle soient importantes pour le protocole. Si je devais adapter un tel protocole à une application purement USB, puis-je omettre en toute sécurité la somme de contrôle et les routines de gestion des erreurs associées?
Pour référence, j'utilise un AT91SAM7S256 avec le cadre USB-CDC fourni par Atmel.
Mise à jour:
J'ai exercé mon Google-Fu un peu plus longtemps sur ce problème et j'ai trouvé cet article qui décrit une sous-classe CDC pour l'émulation Ethernet et déclare:
Sur le câble USB, les trames Ethernet encapsulées circulent en commençant par l'adresse MAC de destination et se terminant juste avant la somme de contrôle de la trame. (La somme de contrôle du cadre n'est pas nécessaire car l'USB est un moyen de transport fiable.)
Ils peuvent signifier que l'USB-CDC est un transport fiable, pas l'USB en général, car certaines classes d'appareils destinées aux données en rafale à haut débit (webcam?) Pourraient ne pas vouloir remplir les tampons si un programme ne peut pas interroger les données assez rapidement.
J'aimerais encore une confirmation supplémentaire à ce sujet.
la source
L'USB peut être un protocole relativement fiable, mais tous les périphériques et pilotes qui utilisent CDC ne sont pas fiables. J'ai vu quelques appareils différents qui avaient l'habitude plutôt ennuyeuse de sauter des octets de données envoyés par le PC. L'observation des données sur une portée a montré que le problème n'était pas lié au dépassement du périphérique récepteur - certains octets de données étaient simplement manquants (j'ai pu capturer un paquet entier sur la portée; l'en-tête et le pied de page étaient tous les deux présents, mais certains des octets entre eux manquaient). Je ne sais pas exactement ce qui s'est mal passé pour provoquer ce comportement, mais essayer d'envoyer des données trop rapidement semblait être un facteur contributif.
la source