UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Explorer
Explorer
3,619 Views
Registered: ‎11-24-2013

USB3 Bulk Transmissions | Gadget Driver in Linux

Hi everyone,

 

I would like to use the new ZCU102 as a USB Device. A PC Host should be able to read information from the board with USB by using Bulk In transmission. That means, I would like the board to be recognized as a USB device (gadget) by the host. The host should "see" one interface with 1 IN Ep and 1 Out Ep. I would like to have Linux on the board.

 

All the books and websites I consulted pointed out that the "Linux-USB Gadget API Framework" is the right solution, so I started working with it. My progress was:

  • I tested g_ether and g_serial gadgets. The ZCU102 Board was bein recognized as serial (ACM) and Ethernet device respectively. This could have been a solution for me to send data, but the data rates I obtained were unfortunately not good enough.
  • I tested gadgetfs in another board with USB2. After loading this kernel module, the UDC was shown in /dev/gadget/. I modified the usb.c example code to work with the Xilinx UDC driver and run it. This was working properly, but is not a right solution for me, since it is not compatible with USB3. Moreover, I did not get this with the ZCU working (maybe because it's not compatible with USB3.
  • I tested g_zero and this was giving and acceptable data rate (of 0s, of course).
  • I tested g_ffs and configured the function SourceSink. This was also working OK and at acceptable data rate.

After testing this options, it's time for me to figure out what kind of solution I can implement. My ideas are:

  • Use g_zero as a template to make a kernel module that, instead of the 0s, returns the information I want.
  • Use g_ffs and add my own function equivalent to SourceSink. This function should return the information I want.

I honestly don't have much experience with kernel programming and I don't know if these 2 solutions are adequate, or if this is the way to go when facing such USB communication. Therefore, I would really appreciate if someone with more experience in this topic could give mi some hints to face this implementation: where I can get useful information, how this kind of problems are normally faced... Any help will be much appreciated!

 

Thanks a lot for your time!

 

Kind regards,

Ignacio

Tags (4)
0 Kudos
5 Replies
Visitor shawnlxf
Visitor
3,103 Views
Registered: ‎04-09-2017

Re: USB3 Bulk Transmissions | Gadget Driver in Linux

I have the same question with you. Could you share any idea ?

0 Kudos
Visitor sungrace
Visitor
2,017 Views
Registered: ‎03-24-2018

Re: USB3 Bulk Transmissions | Gadget Driver in Linux

Hello
Did anyone of you got the solution?
I am looking for the same.


0 Kudos
Explorer
Explorer
1,889 Views
Registered: ‎11-24-2013

Re: USB3 Bulk Transmissions | Gadget Driver in Linux

Hi all,

 

sorry for the delay.

 

unfortunately we didn't find any solution for this problem yet.

 

Regards

Ignacio

 

0 Kudos
Explorer
Explorer
1,696 Views
Registered: ‎07-05-2017

Re: USB3 Bulk Transmissions | Gadget Driver in Linux

I am looking for similar solutions if anyone found any.

0 Kudos
Observer nikola.stojkov
Observer
350 Views
Registered: ‎03-01-2017

Re: USB3 Bulk Transmissions | Gadget Driver in Linux

Any progress on this topic ?

Can someone from Xilinx answer this?

0 Kudos