Forums

Can QDMA be paused by the CPU (TI, 67xx)

Started by howy November 11, 2004
Hi folks, 

On a TI c6713 DSP I have the QDMA sending a few Mbytes per second (a
few kbytes per transfer) of data from SDRAM to a hard drive
periodically.  Each QDMA data transfer lasts longer than a few audio
processing interrupts.  The audio processing interrupt is a great time
for this transfer to happen since SDRAM is hardly accessed and
therefore the QDMA transfer happens almost for free. The problem is
that there is one routine in the audio interrupt that accesses SDRAM
significantly, and therefore each SDRAM access turns into an
out-of-page hit which slows the system down terribly. Changing the
QDMA priority wont help since the offending routine is not accessing
SDRAM fast enough to completely hold off the QDMA transfers.

Is there a way to pause a QDMA transfer that is already in progress so
I can turn it off only during this single portion of the audio
interrupt?

thanks,
-howy
Once the QDMA request has been submitted there's no stopping it.  You'll 
need to figure another way around it.  How about putting the variables being 
accessed by your ISR into L2 RAM so that you eliminate the external accesses 
entirely?

Brad

"howy" <howard@zaxcom.com> wrote in message 
news:e137a0a0.0411111518.3cc7a9ae@posting.google.com...
> Hi folks, > > On a TI c6713 DSP I have the QDMA sending a few Mbytes per second (a > few kbytes per transfer) of data from SDRAM to a hard drive > periodically. Each QDMA data transfer lasts longer than a few audio > processing interrupts. The audio processing interrupt is a great time > for this transfer to happen since SDRAM is hardly accessed and > therefore the QDMA transfer happens almost for free. The problem is > that there is one routine in the audio interrupt that accesses SDRAM > significantly, and therefore each SDRAM access turns into an > out-of-page hit which slows the system down terribly. Changing the > QDMA priority wont help since the offending routine is not accessing > SDRAM fast enough to completely hold off the QDMA transfers. > > Is there a way to pause a QDMA transfer that is already in progress so > I can turn it off only during this single portion of the audio > interrupt? > > thanks, > -howy
>Once the QDMA request has been submitted there's no stopping it. >You'll need to figure another way around it. How about putting >the variables being accessed by your ISR into L2 RAM so that you >eliminate the external accesses entirely?
The offending SDRAM accesses that are colliding are audio FIFOs which are 20Mbytes in size. I may try to break up the QDMA into smaller blocks, so they get done before that portion of the interrupt. It might also be more beneficial to use a manual foreground copy instead of QDMA under these conditions. thanks, -howy