[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [usb] USB1.1 Core Address Assignment Failing. Debugging suggestions?



> SETUP (host -> device address: 0 endpoint: 0)
> DATA0 GetDescriptor (h -> d)
> ACK (d - > h)
>
> ... ~ 1ms later:
>
> SOF (h - > d)
> IN (h -> d addr: 0 endpoint: 0)
> DATA1 (d -> h) -- contains 0x0000 then the 2 bytes CRC
> ACK (h -> d)
>
> ... ~1ms later:
>
> SOF (h->d)
> OUT (h->d) addr: 0 endpoint: 0)
> DATA1 (h->d) -- contains no data, and the CRC
> ACK (d->h)
>
> This is mysterious: Shouldn't the device send back the first 8 bytes of
> the descriptor, so the OS can read the max packet size?

The device should send back the number of bytes that the host requested.
You don't indicate how many bytes were requested.  What OS is this on?

> Also
> mysterious: The subsequent times that we plug in the device, we see
> this SetAddress request:
>
> SETUP (host -> device address: 0 endpoint: 0)
> DATA0 SetAddress (h -> d) (with the address that matches the one
> reported by the kernel)
> ACK (d - > h)
>
> ... ~ 1ms later:
>
> SOF (h - > d)
> IN (h -> d addr: 0 endpoint: 0)
> DATA1 (d -> h) -- contains 0x0000 then the 2 bytes CRC
> ACK (h -> d)
>
> ~1ms later the bus seems to get reset (goes low for a long time). What
> went wrong? Isn't this a correct address assignment sequence?

No data is supposed to be returned on SetAddress status phase.  You need to
examine the code for the device that is feeding and controlling your core.

Check out USB Snoopy for more visibility about how Windows is communicating
with your device:

   http://home.jps.net/~koma/

Marc Reinig
System Solutions


--
To unsubscribe from usb mailing list please visit http://www.opencores.org/mailinglists.shtml