Hi All,
I am facing an issue with USB driver on ARM platform. the bulk in rx endpoint stops polling for rx packets after some time, when the issue occurs I see(with USB analyzer) all the other endpoints(tx and interrupt) are operational and I don't see any abnormal packets on rx endpoint.
But when I do abort, reset and resubmit the rx buffers on Bulk IN endpoint , it starts polling for rx packets and able to receive packets. This issue is frequent event after after doing(abort, reset & resubmit), it stops polling for rx packets after some time(after 1-2mins).
Pls suggest me the possible cause for this issue.
Regards Akhil
> I am facing an issue with USB driver on ARM platform
Which MCU are you working on? And does it work as a host or device? Also, what is the USB library which runs on the firmware?
Sound like the problem is specific to the USB engine on the chip, or the library.
Tsuneo
Hi Tsuneo,
thank you for the reply,
It is a DaVinci based platform running WinCE 6 and the problem is on the Host driver. Same USB driver working fine on X86 Platform.
Regards Akhil.
Which DaVinci? Is it DM31x / DM64x etc. I believe DaVinci series have common USB subsystem.
Do you see any error bit is set on this register, when the polling IN transaction stops?
USBn_HOST_RXCSR - bit8: RXSTALL - bit3: DATAERR_NAKTIMEOUT - bit2: ERROR
Stop the execution on a debugger, and read this register out.
> Same USB driver working fine on X86 Platform.
The X86 Platform should mount different USB engine from DaVinci. The low-level driver under HAL (Hardware abstraction Layer) should be also chip-specific.
It is a DM64x based Platform and we are using visual studio for our development, we can't read any hardware specific registers.
Ask to the BSP provider about the implementation of the error handling on above USBn_HOST_RXCSR bits. How are these errors reported to the client driver?
Also, using trigger function of the USB hardware analyzer, find any error event on the trafic. If you would see many error events, your board should be noisy.