Hola a todos.
El tema va de monitorizar el tráfico en el bus USB.
He probado con varias aplicaciones:
UsbLyzerUsbTraceSourceUsbDevice Monitoring StudioTambién he probado SnoopyPro, UsbSpy, etc...
Y estoy con el siguiente dilema:
Estoy desarrollando un dispositivo implementando el protocolo USB a bajo nivel, es decir, gestionando desde el firmware todas las transferencias, incluyendo las transferencias de control. Para ello he estado estudiando a fondo el funcionamiento del protocolo, al menos para las transferencias de control, que son las necesarias para conseguir que el dispositivo enumere y sea configurado por el host.
Estoy intentando llevar a cabo la primera transferencia, que es iniciada por el host tras conectar el dispositivo al bus, y que consiste en un GET_DESCRIPTOR Request.
Dicha transferencia consiste en 3 etapas: SETUP, DATA y STATUS.
- En la etapa de SETUP, el host inicia la transferencia y envía al dispositivo el Request (8 bytes).
- En la etapa de DATA, el dispositivo envía al host los datos solicitados (Descriptor de dispositivo: 18 bytes).
- En la etapa de STATUS, el host envía un paquete de datos de tamaño cero para indicar que se recibió correctamente el descriptor y, seguido a esto, el dispositivo debe concluir la transferencia con un Handshake.
Hasta el momento, tengo superadas las 2 primeras etapas...pero creo que mi problema está en que no consigo completar la etapa de STATUS (recibo el paquete de tamaño cero del host pero creo que no consigo enviar correctamente el Handshake).
La forma en que esto se realiza depende del HW utilizado. En mi caso estoy usando el integrado
TUSB3200 controlado por un MSP430.
Aunque no quiero entrar a analizar el problema del hardware ni del firmware, sino que la intención de este hilo es tratar el tema relativo a la monitorización del tráfico con aplicaciones como las mencionadas arriba.
Por lo general, este tipo de aplicaciones no muestran las transferencias del proceso de enumeración, o al menos, no lo hacen si el dispositivo no ha sido previamente enumerado y reseteado. Aparte, no dan la posibilidad de mostrar de forma desglosada las etapas y paquetes correspondientes a cada transferencia de control entre el host y el dispositivo.
Un caso especial es SourceUsb.
Creo que esta aplicación sí da esa posibilidad...pero las limitaciones de la versión free parece que no permiten precisamente esa visualización que necesito a nivel de paquete entre host y dispositivo (no se pueden activar las opciones marcadas en rojo en la imagen).
Pues ando a la busca de solucionar el problema de monitorización a ver si me ayuda a encontrar el fallo en el firmware.
¿Alguna sugerencia?