Author Topic: Xilinx bare metal USB issue  (Read 2518 times)

0 Members and 1 Guest are viewing this topic.

Offline grouchobyteTopic starter

  • Regular Contributor
  • *
  • Posts: 244
  • Country: cn
Xilinx bare metal USB issue
« on: July 02, 2017, 12:23:21 am »
I am having an issue with a Xilinx Z7020 on a Microzed board.  |O I'm trying to send data out of the device to a bulk IN endpoint. I frequently get status code 1412 returned from EpBufferSend(), similar to this forum thread:

https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Is-this-a-USBPS-bug/td-p/510393

and this one:

https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Zynq-Baremetal-USB-Device-Running-out-of-dTDs/td-p/669855

The first thread mentions the solution is to zero out the memory before calling ConfigureDevice(), but the example shipped with SDK 2016.04 does that.

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/usbps/examples/xusbps_intr_example.c#L253

Calling EpBufferSend() once with a small buffer works OK and I can read the bytes out with WinUSB's ReadPipe(). But I would like to send a continuous stream from the device and read it on the host. When I try calling EpBufferSend multiple times, I get status 1412. Why is this happening and what is the proper way to send large amount of data from the device to the host on the zynq using bare-metal?

Thanks for any suggestions...

@grouchobyte
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf