Hello,
I'm having some problems when I start DMA transfers that write data into the display frame buffer. Sometimes short flicker can be seen, other times my DMA function returns a time-out after 1 second ( the DMA CSR register bit 5 is not set ). I'm sure that this is a problem related to DMA, because when I write pixel by pixel into the frame buffer, everything works fine.
In http://focus.ti.com/lit/ug/spruf98d/spruf98d.pdf, chapter
15.3.2.1.1
I have read, that there is a DMA synchronization line
(DSS_LINE_TRIGGER) used to signalize when memory can be updated:
"One DMA synchronization line (DSS_LINE_TRIGGER) is
connected to the sDMA by the sDMA controller
(S_DMA_5) input line.
This DMA request is not a classical one but a synchronization signal
from the
display subsystem to the sDMA informing the sDMA that a
programmable number of lines are output to
the LCD, and that the
system memory can be updated. This request is related to an interrupt
event
described in Section 15.3.2.2, Interrupt Requests. This
allows the sDMA channel to be synchronized with
the Display
subsystem internal DMA controller. In other words, it allows to
synchronize a memory to
memory frame buffer update based on the
scan line of the frame buffer in system memory (SDRAM or
SRAM) by
the display controller. The DSS_LINE_TRIGGER DMA request is generated
at a programmable
line number defined in
DSS.DISPC_LINE_NUMBER[10:0] LINENUMBER field."
I could not understand HOW to use this DMA line for synchronisation. Can you give me a
hint ?
I have to write directly to the registers, because my
application is not running on Windows or Linux.
Thanks in advance
Jerome