質問

USBデバイス用のCDCドライバーを開発していますが、いくつかの問題に出くわします。 Windows側で使用しているドライバーは、何らかのエンドポイント機能として、またはデータを正しく取得するために、クリアエンドポイント機能を使用しています。私はそれを動作させることができないので、それは私に多くのトラブルを引き起こします。データトグルは同意しないと思い、重要なデータ転送が欠落していると思います。クリアデータのトグルが悪いために、そのエンドポイングに関連する割り込みが発生していません。 USB標準で指摘されているように、インターフェイスの設定と機能のクリアでデータトグルを0にリセットします。 これを行うべき状況はありますか?または、無効なデータの切り替えを処理するエラーの簡単な方法があります。

アンウェザリングに感謝します。私はUSBアナライザーを持っていますが、今は何の役にも立ちません。なんとか集められたから、起こっていると思う。対応するエンドポイントのClear機能の後に(必要に応じて)ハードウェアでデータトグルビットを設定します。いくつかのデータを送信し、PCで受信します。このフォームのUSBアナライザーを知っており、ポートモニターでVcomドライバーをトレースしました。 次に、すべてが構成されている(デバイスが列挙されているなど)ため、いくつかのデータを待ちます。最初の質問は答えられますが、次の質問は答えられません。これにより、対応するエンドポイントのUBS割り込みがトリガーされますが、しばらくすると、明確なエンドポイント機能と同じパッケージが存在し、今回は応答しますが、通信プロトコルには沈黙があります。要求された転送と欠落している割り込みをカウントし、比率は正確に2:1なので、データの切り替えは半分の時間で間違って設定されていると思いますが、エンドポイント機能をクリアするたびにデータトグルビットを設定するとどうなりますか?

問題を明確に述べたいと思います。ハーバード側にとっては、私が設定しているビットが唯一の厄介なことだと思います。 「エンドポイントデータトグルを0にリセットするには、このビットに1を書き込みます」と表示されます。 わかりました(できれば)Clearエンドポイントの機能を解決しました。他のエラーは他のものによって引き起こされ、累積的な問題を見つけるのは困難でした。


さて、私はしばらく前に問題を修正しましたが、今は原因を思い出すことすらできませんが、通常はそうではありません-それは何か他のものでした。アンサーのおかげで結ばれたすべての人に感謝します。

役に立ちましたか?

解決

usbser.sysの一部のバージョンでは、64バイトの正確な倍数の転送後にWindowsがパイプを正しくフラッシュしないことに注意してください。これがあなたが見ている動作であるかどうかあなたの質問から正確にはわかりませんが、USBアナライザーは、これが事実かどうかを判断するのに役立つはずです。 XP SP2を使用している場合は、SP3にアップグレードします。

他のヒント

あなたが何であるかを理解するために、 usb snoopy (ソフトウェアusbアナライザー)を使用することをお勧めします。間違っている。予算があれば、 LecroyなどのハードウェアUSBアナライザーを入手した方が良いまたは Ellisys 。または、市販のCDCドライバーを入手してください。cdcドライバー用にgoogleだけがたくさんあります。 問題の説明は非常に一般的であり、直接対処できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top