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.

Starterware/AM3357: DMA needs dummy bytes

Guru 20755 points

Part Number: AM3357

Tool/software: Starterware

Hello,

We use uart with dma (vxworks) but it seems that dma does not function unless we send some dummy bytes.

The problem is that "dummy" bytes in uart device are problematic (we can't just mix illegal bytes with legal bytes in the device).

Is there some workaround for this issue ?

Thank you,

Ran

  • Hi,

    VxWorks is a third-party software and is not supported by TI. Please contact your BSP provider for support. There is no such issue with the TI released Processor SDK.
  • Hello Biser,

    In StarterWare example I also see a dummy transfer:
    processors.wiki.ti.com/.../CIR

    Isn't it a related issue ?

    Regards,
    Ran
  • HI Biser,

    Is there some way to emulate dma event ?
    If we can have the first dma event , then I manage to transfer all dma bytes without issues.
    For some reason seems that after trigerring dma, than the first dma event is missing - unless I force with writing 8 bytes to uart (directly without dma), but I rather force this event without writing any bytes if possible.

    Thank you,
    Ran
  • The dummy transfer described on the wiki page you mentioned relates to the EDMA. No data is actually transferred. By definition an EDMA dummy transfer is a legal transfer of 0 bytes. It's used because the UART is not an interface where you are constantly streaming data. By contrast, if you looked at say a McASP being used for sending audio data, every time there's space in the McASP FIFO you would want the EDMA sending more data. For UART on the other hand, you only copy data to the UART registers when you actually have a new packet of data to send. The UART will issue a DMA request as soon as there is room in its FIFO, but often we may not actually have any data to send. That's why a dummy request is used by the EDMA.

    Are you using dummy requests in the same manner? The fact that you say you need to "send some dummy bytes" sounds like something entirely different. It sounds like you're actually sending data to the UART, whereas the dummy transfer of the EDMA does not send anything.

    We aren't familiar with VxWorks to fix your driver, but if you can discuss your issues in terms of the hardware implementation, then we can probably help you. So for example, giving some details such as what your Parameter RAM entries look like, etc. would be useful. I'd like to see the working case and the failing case.