This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

usb cppi dma for usb mass storage device

Other Parts Discussed in Thread: OMAP3530

I have a usb mass storage program using usb interrupts to fill and empty the usb fifos working without errors.  I would like to improve throughput by using the usb cppi dma engine.  The dma code i have gets through enumeration and the first few requests just fine, but i'm finding that i can't seem to transmit dma packets larger than 2176 bytes.  I never get an interrupt for the transmit completion queue for the packet.  Is it possible to tell if the dma is getting starved out?  Or is there some other error condition that I can look for?  I'm not seeing the dma engine mark the error bit in word 2 of the descriptor or anything like that.

The usb cppi dma documentation is a pretty tough read.  Is there any non-trivial example code that uses something other than endpoint 1?

Thank you

  • Bill Mckinney

    Can you clarify are your driver is working as Host or Device mode? There may be two reasons why usb cppi tx interrupts are not occuring, 1) Check whether tx completion queue information properly configured in Tx-DMA host packet descriptor and check the configuration of Tx-Global DMA channel configuration register. 2) Capture the data on CATC and check whether all the data is transmitted out of musb controller or you observe there is NAK/STALL from the device you have connected. The interupt completion will occur after successful transmission of the dma packets out of CPPI-DMA.

    Regards

    Ravi B

     

     

  • Hi Ravi,

    I am facing difficulties in enabling dedicated DMA for usb otg. I need to expose SDcard as mass storage through the HS USB OTG .

    My setup is as follows

    1. EVM MAIN BOARD REVG

    2. EVM 3530/37XX Processor module RevD with AM3730 processor.

    3. WINCE6.0 BSP version 6.15

    After enabling USB DMA, Its taking long time to mount and only some files are copied in a 900 MB folder.

    i hope its is know issue since in Registry entry i have seen an entry like this "; DMA currently not working". Do have resolved this or any solution?

    note: i found above comment in BSP_WINCE_ARM_A8_01_02_00 also

     

    Regards

    Jethin

  • What is the context of CPPI DMA? AM37x processor does not have any CPPI DMA.

    A8_01_02_00 release DOES support USB DMA - comment in registry may just be something leftover (we will check it). Also, DMA is enabled by default

     

    Atul

  • Hi Atul,

    Thanks for the quick reply, I have checked it, by default the "EnableDMA"=dword:0 in BSP_WINCE_ARM_A8_01_02_00, After enabling it is taking long time even for detecting as mass storage. Copying is not success.

    Jethin

  • Hi Atul,

     I have found similar one issue which as mentioned in known issue

    ID : SDOCM00075290

     

    Jethin

  • Jethin,

        Can you clarify your use case? Are you referring to Function mode driver or Host driver i.e is the EVM acting as Host or Function? DMA is enabled by default in Host mode driver. Regarding long enumeration time in function mode, have you tried with Windows XP Host?

     

    BTW, you are using EVM3530 but your post is in OMAP-L processor forum.....

     

    Atul

  • Thank you atul,

    I am using EVM OTG port as Client and Exposing as mass storage. Not tired in WinXp host, but this is not occurring in OMAP3530

    Jethin