Dear Community.
Our customer has question below.
They using a OTG port of i.MX6DL by USB Function and it is operating with CDC/NCM Class.
It's done now using gadget/f_ncm.c, chipidea/udc.c.
When it's made setting of 1 Transaction Max 8KByte as setting of NCM,it's normally operation , but when it's made setting of Max 64KByte in 1 Transaction, it'll be abnormal movement.
When data is received, an error occurs in hardware_dequeue () of udc.c.
Description of i.MX6SDLRM at "65.4.5 of Device Data Structure" the maximum size of "Total Bytes" is 20 KByte. (Recommend is 16 KBytes).
<Question>
Is 20KByte the upper limit for the size in once of Transaction?
When 20KByte upper limit, would like to do any more data transfer (data reception) in case, is there a method to realize with the current BSP?
Thank you,
Best Regards.
T.Takahashi
Hi Takashi,
According with AE team, the transfer descriptor (dTD) allows for 5 buffers of 4 KB each, so 20K is the maximum per transfer descriptor. If you need to transfer more, you can link transfer descriptors.
To do so, you create as many transfer descriptors as you need and set the "Next dTD Pointer" in the dTD to the address of the next dTD. Clear all T-bits in the transfer descriptors, except in the last one. (T-bit = Terminate bit, means last one in the linked list).
See section "Device Operation" in the USB chapter of the RM for more details.
Hope this will be useful for you.
Best regards!
/Carlos
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------