AnsweredAssumed Answered


Question asked by Colin on Dec 22, 2009
Latest reply on Dec 24, 2009 by PrasanthR


   I had exactly the same problem with buffers as ThomasSchuldes did in "Switching between LCD buffers in ADI_DEV_MODE_CHAINED_LOOPBACK" (See, the solution there has helped me get it working.


  While trying to get the buffers to swap data sources I also tried ADI_DEV_MODE_SEQ_CHAINED without loopback but I could never get further than the second buffer.

I defined two 2D buffers, both with callback parameters, neither had "Next" links. I used

    adi_dev_Write(DriverHandle, ADI_DEV_2D, (ADI_DEV_BUFFER *)&LcdBuffer);

    adi_dev_Write(DriverHandle, ADI_DEV_2D, (ADI_DEV_BUFFER *)&LcdBuffer2);

to give them both to the driver, and then

    adi_dev_Control(DriverHandle, ADI_DEV_CMD_SET_DATAFLOW, (void *)TRUE);

to start the PPI.


The callback is called on the completion of the first frame and the code there calls

    adi_dev_Write(DriverHandle, ADI_DEV_2D, (ADI_DEV_BUFFER *)&LcdBuffer);

to re-submit the first buffer.  The call to adi_dev_Write() does not return an error.

At the end of the next frame the callback is called with a DMA error.


My questions are:


1) Should I be able to keep re-submitting buffers as they're displayed or doesn't

ADI_DEV_MODE_CHAINED work that way?


2) In general, how do I work out what caused the DMA error?



I'm using BF534, VDSP 5.0 Update 7

The PPI is in STREAMING mode.