DSPRelated.com
Forums

EDMA3 2D copy with byte offset of more the 32K

Started by lior...@amat.com January 18, 2011
Hi
I need to do some processing where the processed lines are far away one to
another.
For this purpose i am using 2D EDMA3 (2D to 1D) transfer of these line
from DDR2 external memory to DSP;s internal memory.
The problem come out when the byte offset between the lines is more then
32K and i can not perform 2D transfer because the the SRCBIDX register
which indicating the byte offset is only 16bits size.
Any Idea for taking care this issue are welcome.

Lior Yehieli
DSP & Optimization Software Team Leader | WI Division | Process
Diagnostics and Control | Applied Materials
9 Oppenheimer Street, Rehovot, 76705. Israel.
Office +972.8.948.8796 | Mobile +972.54.44.88.796 | Fax +972.8.948.8848

The content of this message is Applied Materials Confidential. If you are
not the intended recipient and have received this message in error, any
use or distribution is prohibited. Please notify me immediately by reply
e-mail and delete this message from your computer system. Thank you.

** Save paper and trees! Please consider the environment before printing
this e-mail.
Lior-

> I need to do some processing where the processed lines are far away one to
> another.
> For this purpose i am using 2D EDMA3 (2D to 1D) transfer of these line
> from DDR2 external memory to DSP;s internal memory.
> The problem come out when the byte offset between the lines is more then
> 32K and i can not perform 2D transfer because the the SRCBIDX register
> which indicating the byte offset is only 16bits size.

Not sure which chip or EVM board) you're using, but what about programming a second transfer to automatically start
when the first one completes? The penalty would be that you need to use another EDMA3 channel, assuming you have it
available.

TI calls this "chaining". In this doc

http://focus.ti.com/lit/ug/spru966b/spru966b.pdf

section 2.8 talks about chaining EDMA3 channels.

-Jeff

_____________________________________
Lior-

> Thanks for your response.
> I am using TMS320DM6435 which contain C64+ and EDMA3
> I am aware to the linking and chaining options but in this case i will
> need a lot of EDMA channels in order to maintain double buffer processing
> from/to DDR to/from DSP internal memory.

Well, my first thought is "are you being super efficient with your EDMA channels?" Maybe the trick here is to find a
way to "oversubscribe" your channels; i.e. make use of one for purpose B when it's not doing purpose A.

-Jeff

PS. Post to the group, not to me. There are some true experts on this forum who may have far better advice for you
than I do.
> From: "Jeff Brower"
> To: Lior Yehieli/AMIL/APPLIED MATERIALS@AMAT
> Cc: c...
> Date: 18/01/2011 09:38
> Subject: Re: [c6x] EDMA3 2D copy with byte offset of more the 32K
> Sent by: c...
> Lior-
>
>> I need to do some processing where the processed lines are far away one
> to
>> another.
>> For this purpose i am using 2D EDMA3 (2D to 1D) transfer of these line
>> from DDR2 external memory to DSP;s internal memory.
>> The problem come out when the byte offset between the lines is more then
>> 32K and i can not perform 2D transfer because the the SRCBIDX register
>> which indicating the byte offset is only 16bits size.
>
> Not sure which chip or EVM board) you're using, but what about programming
> a second transfer to automatically start
> when the first one completes? The penalty would be that you need to use
> another EDMA3 channel, assuming you have it
> available.
>
> TI calls this "chaining". In this doc
>
> http://focus.ti.com/lit/ug/spru966b/spru966b.pdf
>
> section 2.8 talks about chaining EDMA3 channels.
>
> -Jeff

_____________________________________