Ich entwickle CDC-Treiber für USB-Gerät und stolpere über ein Problem. Der Treiber, den ich auf der Windows-Seite verwende, verwendet Clear Endpunkt Feature als eine Art von Mechanismus oder um Daten richtig zu bekommen. Das verursacht mir eine Menge Trouble, weil ich es nicht funktioniere. Ich denke, Daten-Toggle stimmen nicht überein, und ich vermisse einige wichtige Datentransfer, auch nicht mit diesem Endpointing verbundenen Interrupt wegen der schlechten Daten deaktivieren. Ich setze den Datenumschalter bei der eingestellten Schnittstelle auf 0 zurück und lösche die Funktion, wie im USB-Standard angegeben. Gibt es mehr Situation, wenn ich das tun sollte? Oder gibt es einen einfachen Weg zur Fehlerbehandlung bei ungültigen Datenumschaltungen.USB Clear Endpoint Feature
Danke für anwsering. Ich habe einen USB-Analyzer, aber ich tue mir nichts Gutes. Von dem, was ich geschafft habe zu sammeln und ich denke, passiert. Ich setze das Datatoggle-Bit in hardvare nach der Clear-Funktion (wie es sein sollte) für den entsprechenden Endpunkt. Senden Sie einige Daten, es wird am PC empfangen. Ich kenne diesen USB-Analyzer und habe meinen Vcom-Treiber mit Port-Monitor verfolgt. Dann warte ich auf einige Daten, wie alles konfiguriert ist (Gerät aufgezählt usw.), die erste Frage wird beantwortet, aber die nächste ist nicht, nach klarer Endpunkt-Funktion stellt die PC-Seite die Frage erneut. Dies sollte den UBS-Interrupt für den entsprechenden Endpunkt auslösen, aber es passiert nicht, nach einiger Zeit gibt es ein eindeutiges Endpunktmerkmal und das gleiche Paket, und es wird geantwortet, dieses Mal gibt es Schweigen auf dem Kommunikationsprotokoll. Ich habe den angeforderten Transfer im Vergleich zu fehlenden Interrupts gezählt und das Verhältnis ist genau 2: 1, also denke ich, dass die Datenumschaltung zur Hälfte der Zeit falsch eingestellt ist. Aber wie kann das passieren, wenn ich das Daten-Toggle-Bit jedesmal setze, wenn ich ein klares Endpunkt-Feature bekomme.
Ich hoffe, ich habe das Problem deutlich gemacht, für die harvare Seite denke ich, das einzige wichtige Ding ist das Bit, das ich setze. Es heißt "Schreiben Sie eine 1 in dieses Bit, um den Endpunktdatenschalter auf 0 zurückzusetzen". Ok ich denke (hoffentlich) ich löste die Clear-Endpunkt-Funktion, andere Fehler wurden durch andere Dinge verursacht, und kumulative Problem war schwer zu fangen.
Ok fixierte ich vor einiger Zeit Thema, jetzt habe ich noch nicht einmal remeber, was die Ursache war, aber als ususally ist - es ist etwas anderes. Jeder, der an Dank geht, dankt.
Courious, aber mein Fall war einfacher, der Fehler war klar Endpunkt-Funktion und mangelnde Handhabung, zweitens hatte ich Probleme mit der Aufgabenbehandlung in meinem USB-Stack, so seltsames Verhalten wurde gesehen. – CrazyChris