2009-06-19 2 views
0

Я разрабатываю драйвер CDC для устройства USB, и я натыкаюсь на некоторые проблемы. Драйвер, который я использую на стороне Windows, использует Clear endpoint Feature как какой-то механизм flish или для правильного получения данных. Это вызывает у меня много троллей, потому что я не могу заставить его работать. Я думаю, что данные переключения не согласны, и я пропускаю важную передачу данных, даже не получая связанного прерывания с этой целью из-за плохой передачи данных. Я переустанавливаю данные на 0 в заданный интерфейс и функцию очистки, как указано в стандарте USB. Есть ли еще ситуация, когда я должен это сделать? Или есть простой способ обработки неверных данных.USB Clear Endpoint Feature

Спасибо за понимание. У меня есть анализатор usb, но теперь я ничего не делаю. Из того, что мне удалось собрать, и я думаю, что это происходит. Я установил бит datatoggle в hardvare после функции Clear (как это и должно быть сделано) для соответствующей конечной точки. Отправляйте некоторые данные, они извлекаются на ПК. Я знаю эту форму анализатора USB, и я проследил драйвер Vcom с монитором порта. Затем я жду некоторых данных, поскольку все настроено (перечислены устройства и т. Д.), Исходный вопрос аннулирован, но следующий - нет, после четкой конечной точки, сторона ПК снова задает вопрос. Это должно привести к прерыванию UBS для соответствующей конечной точки, но это происходит, снова через некоторое время появляется четкая функция конечной точки и один и тот же пакет, и на этот раз ответ приходит, и в протоколе связи есть молчание. Я подсчитал запрошенный переход по сравнению с отсутствующими прерываниями, и соотношение составляет ровно 2: 1, поэтому я думаю, что переключение данных в два раза неверно, но как это может произойти, если я устанавливаю бит для переключения данных каждый раз, когда получаю четкую функцию конечной точки.

Надеюсь, что я четко сформулировал проблему, поскольку для гарварской стороны я считаю, что единственное, что есть, - это бит, который я устанавливаю. В нем указано «Напишите 1 этому биту, чтобы сбросить данные о конечных точках до 0.» Хорошо, я думаю (надеюсь) Я решил Clear endpoint, другие ошибки были вызваны другими вещами, и кумулятивная проблема была трудно поймать.


Ok Я установил этот вопрос некоторое время назад, сейчас я даже не помню, что было причиной, а как Ususally есть - это было что-то другое. Каждый, кто привязался к anwser спасибо.

ответ

1

Помните, что в некоторых версиях usbser.sys Windows неправильно очищает трубу после передачи точного кратного 64 байта. Я не совсем понимаю ваш вопрос, так ли это поведение, которое вы видите, но анализатор USB должен помочь вам определить, так ли это. Если вы используете XP SP2, перейдите на SP3.

+0

Любопытный, но мой случай был проще, ошибка была четкой конечной точкой и отсутствием обработки, во-вторых, у меня была проблема с обработкой задач внутри моего USB-накопителя, поэтому было замечено странное поведение. – CrazyChris

1

Я предлагаю использовать usb snoopy (программный анализатор usb), чтобы понять, что вы делаете неправильно. Если у вас есть бюджет, вам лучше получить аппаратный анализатор usb, например, Lecroy или Ellisys. Или получить коммерческий CDC-драйвер, есть достаточно всего лишь Google для драйвера cdc. Описание проблемы очень общее и может быть рассмотрено напрямую.