Question

Je développe un pilote CDC pour périphérique USB et je tombe sur un problème. Le pilote que j'utilise côté Windows utilise Clear Endpoint Feature comme une sorte de mécanisme Flish ou pour obtenir des données exactes. Cela me cause beaucoup de trobule parce que je ne peux pas le faire fonctionner. Je pense que la bascule de données n’est pas d’accord et il me manque un transfert de données important, même si je n’obtiens pas d’interruption associée à cette fin en raison d’une mauvaise bascule de données claire. Je remets les données à zéro à l'interface définie et à la fonction d'effacement définie dans la norme USB. Y a-t-il plus de situation où je devrais faire cela? Ou existe-t-il un moyen simple de gérer les erreurs lors du basculement des données non valides?

Merci de votre réponse. J'ai un analyseur USB, mais je ne me fais aucun bien maintenant. De ce que je peux réussi à rassembler et je pense que se passe. J'ai mis le bit datatoggle dans hardvare après la fonction Clear (comme il se doit) pour le point final correspondant. Envoyer des données, il est recived sur PC. Je connais cette forme d’analyseur USB et j’ai tracé mon pilote Vcom avec le moniteur de port. Ensuite, j'attends quelques données car tout est configuré (périphérique énuméré, etc.), la question initiale est posée mais la suivante ne l’est pas. Une fois que le point final est clair, le PC remet la question à nouveau. Cela devrait déclencher une interruption UBS pour le point final correspondant, mais cela se produit. Après un certain temps, la fonction de point final est clairement définie et le même package est présent, et le système réagit encore et encore. Le protocole de communication est silencieux. J'ai compté le transfert demandé par rapport aux interruptions manquantes et le rapport est exactement de 2: 1. Je pense donc que le basculement des données est incorrect à la moitié du temps.

J'espère avoir clairement énoncé le problème. Pour le côté harvare, je pense que la seule chose qui compte, c'est le peu que je fais. Il indique "Ecrivez un 1 sur ce bit pour réinitialiser le basculement des données de point de terminaison à 0". Ok, je pense (espérons-le), j'ai résolu le problème du point final Clear, d'autres erreurs ont été causées par d'autres facteurs, et le problème cumulatif était difficile à détecter.

Ok, j’ai résolu le problème il ya un certain temps. Maintenant, je ne me souviens même plus de la cause, mais comme c’est habituellement le cas, c’était autre chose. Tous ceux qui sont attachés à la réponse merci.

Était-ce utile?

La solution

Sachez que sur certaines versions de usbser.sys, Windows ne purge pas correctement le tuyau après le transfert d’un multiple exact de 64 octets. Je ne comprends pas très bien si votre comportement est correct, mais un analyseur USB devrait vous aider à déterminer si tel est le cas. Si vous utilisez XP SP2, effectuez une mise à niveau vers SP3.

Autres conseils

Je suggère d'utiliser usb snoopy (analyseur usb logiciel) pour comprendre ce que vous êtes faire le mal. Si vous avez un budget, vous avez intérêt à disposer d'un analyseur usb matériel tel que celui-ci Lecroy ou Ellisys . Ou obtenez un pilote commercial CDC, il y en a beaucoup disponible juste pour Google pilote cdc. La description de votre problème est très générale et peut être traitée directement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top