calidad de servicio de RS232 vs USB CDC / ¿deberían los mensajes contener una suma de comprobación?

12

¿El USB tiene una garantía de calidad de servicio para los datos enviados entre mi dispositivo USB-CDC y el host USB?

Sé que con el RS232 tradicional en una situación ruidosa (por ejemplo, un puerto de diagnóstico automotriz) ocurren con frecuencia bits malos que las sumas de verificación son importantes para el protocolo. Si tuviera que adaptar dicho protocolo a una aplicación puramente USB, ¿puedo omitir de forma segura la suma de comprobación y las rutinas de manejo de errores relacionadas?

Para referencia, estoy usando un AT91SAM7S256 con marco USB-CDC proporcionada por Atmel .

Actualizar:

Ejercí mi Google-Fu un poco más en este problema y encontré este artículo que describe una subclase de CDC para la emulación de Ethernet y los estados:

  

A través del cable USB, las tramas Ethernet encapsuladas fluyen a partir de   La dirección MAC de destino y finaliza justo antes de la suma de comprobación de trama.   (La suma de verificación de cuadros no es necesaria ya que el USB es un transporte confiable).

Pueden significar que USB-CDC es un transporte confiable, no USB en general, ya que es posible que algunas clases de dispositivos destinados a datos en ráfaga de alto rendimiento (¿una cámara web?) no quieran rellenar los búferes si un programa no puede sondear los datos rápidamente suficiente.

Todavía me gustaría confirmación adicional sobre esto.

    
pregunta Steven T. Snyder

2 respuestas

10

Esto depende de lo que tipos de punto final estén usando.

Un resumen rápido tomado de USB en pocas palabras :

  

Interrupción de transferencias

     
  • Latencia garantizada
  •   
  • Stream Pipe - Unidireccional
  •   
  • Detección de errores y reintento del siguiente período.
  •   

Transferencias isócronas

     
  • Las transferencias isócronas proporcionan acceso garantizado al ancho de banda USB.
  •   
  • Latencia acotada.
  •   
  • Stream Pipe - Unidireccional
  •   
  • Detección de errores a través de CRC, pero sin reintento ni garantía de entrega.
  •   
  • Completo & Sólo modos de alta velocidad.
  •   
  • Sin cambio de datos.
  •   

Transferencias masivas

     
  • Se utiliza para transferir grandes datos en ráfagas.
  •   
  • Detección de errores a través de CRC, con garantía de entrega.
  •   
  • No hay garantía de ancho de banda o latencia mínima.
  •   
  • Stream Pipe - Unidireccional completo & solo modos de alta velocidad.
  •   

Para responder correctamente a su pregunta, deberá averiguar qué modos de transferencia se están utilizando debajo para implementar el dispositivo CDC. La especificación de clase de dispositivo CDC puede ser un punto de partida. Si tiene un código fuente para el dispositivo, entonces sería aún mejor. No estoy familiarizado con la clase CDC, por lo que no puedo comentar sobre sus estándares de implementación, pero a primera vista en algunos documentos y en google, parece que hay cierta flexibilidad en la implementación.

EDIT

Después de leer el documento de Atmel que has vinculado, ¡parece que depende de ti!

  

El modelo de control abstracto requiere dos interfaces, una comunicación   Interfaz de clase y una interfaz de clase de datos. Cada uno de ellos debe tener   dos puntos finales asociados. El primero tendrá un punto final dedicado   a la gestión de dispositivos (punto de control predeterminado 0) y uno para eventos   notificación (punto final de interrupción IN adicional).

     

La clase de datos   La interfaz necesita dos puntos finales a través de los cuales transportar datos desde y hacia   el anfitrión. Dependiendo de la aplicación, estos puntos finales pueden ser   A granel o isócrono. En el caso de un USB para   convertidor de serie, utilizando puntos finales a granel es probablemente más apropiado,   Dado que la fiabilidad de la transmisión es importante y los datos   las transferencias no son críticas en el tiempo.

Por lo tanto, en su implementación, asegúrese de utilizar transferencias masivas en su interfaz de clase de datos para garantizar un transporte confiable.

    
respondido por el Jon L
3

El USB puede ser un protocolo relativamente confiable, pero no todos los dispositivos y controladores que usan CDC son confiables. He visto un par de dispositivos diferentes que tenían un hábito bastante molesto de omitir bytes de datos que fueron enviados por la PC. Al observar los datos en un alcance, se demostró que el problema no era que el dispositivo receptor se había sobrepasado, simplemente faltaban algunos bytes de datos (pude capturar un paquete completo en el alcance; tanto el encabezado como el pie de página estaban presentes, pero algunos de los bytes entre ellos faltaban). No estoy seguro de qué fue exactamente lo que falló en causar ese comportamiento, pero tratar de enviar datos demasiado rápido parecía ser un factor contribuyente.

    
respondido por el supercat

Lea otras preguntas en las etiquetas