Pregunta

Estoy desarrollando un controlador CDC para dispositivos USB y me encuentro con algún problema. El controlador que estoy usando en el lado de Windows usa Clear Endpoint Feature como algún tipo de mecanismo de flish o para obtener los datos correctos. Eso me causa muchos trobulos porque no puedo hacer que funcione. Creo que la alternancia de datos no está de acuerdo y me estoy perdiendo alguna transferencia de datos importante, incluso si no se asocia la interrupción con esa finalización debido a una mala alternancia de datos claros. Restablezco el cambio de datos a 0 en la interfaz establecida y borro la función, como se señala en el estándar USB. ¿Hay más situaciones en las que debería hacer esto? ¿O hay una manera fácil de error al manejar la alternancia de datos no válidos?

Gracias por responder. Tengo un analizador USB, pero ahora no me sirve de nada. Por lo que pude reunir y creo que está sucediendo. Configuré el bit datatoggle en hardvare después de la función Clear (como debería hacerse) para el punto final correspondiente. Enviar algunos datos, se recibe en la PC. Conozco este analizador USB y rastreé mi controlador Vcom con el monitor de puerto. Luego espero algunos datos ya que todo está configurado (dispositivo enumerado y así sucesivamente), la pregunta inicial se responde pero la siguiente no, después de aclarar el punto final, el lado de la PC vuelve a hacer la pregunta. Esto debería desencadenar la interrupción de UBS para el punto final correspondiente, pero no está sucediendo, nuevamente después de algún tiempo hay una función clara de punto final y el mismo paquete, y se responde una y otra vez hay silencio en el protocolo de comunicación. Conté la transferencia solicitada frente a las interrupciones faltantes y la relación es exactamente 2: 1, así que creo que la alternancia de datos se establece mal la mitad del tiempo, pero ¿cómo puede suceder esto si configuro el bit de alternancia de datos cada vez que obtengo una función de punto final clara?

Espero haber explicado el problema con claridad, por el lado de Harvare, creo que lo único importante es la parte que estoy configurando. Establece " Escribe un 1 en este bit para restablecer la alternancia de datos de punto final a 0. " Ok, creo que (con suerte) resolví el punto final Clearureure, otros errores fueron causados ??por otras cosas, y el problema acumulativo fue difícil de detectar.


Ok, solucioné el problema hace algún tiempo, ahora ni siquiera recuerdo cuál fue la causa, pero como suele ser, fue otra cosa. Todos los que ataron a anwser gracias.

¿Fue útil?

Solución

Tenga en cuenta que en algunas versiones de usbser.sys, Windows no descarga correctamente la tubería después de una transferencia de un múltiplo exacto de 64 bytes. No estoy exactamente claro en su pregunta si este es el comportamiento que está viendo, pero un analizador USB debería ayudarlo a determinar si este es el caso. Si está utilizando XP SP2, actualice a SP3.

Otros consejos

Sugiero utilizar usb snoopy (software usb analyzer) para comprender qué es usted haciendo mal Si tiene algún presupuesto, es mejor que tenga un analizador USB de hardware como Lecroy o Ellisys . O bien, obtenga un controlador CDC comercial, hay muchos disponibles solo google for cdc driver. La descripción de su problema es muy general y puede abordarse directamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top