DSPRelated.com
Forums

prob: TS101S - DMA - LINK PORT

Started by albert89k October 31, 2003

Platform: ADSP-TS101S EZ-KIT lite REV 1.3 / VisualDSP++ 2.0
Problem: DMA & LINK PORTs I have to do some data transfer from one platform (EZ-KIT) to another
one.
The easiest way to do that is through the link ports, but I have a
problem. DSP-B of the transmitting platform generates 32 words and stores them
in internal memory, then sets up a chained DMA transfer from internal
memory to LINK PORT 0.

TCB is chained to itself, obtaining an infinite loop (transmits 32
words, then another 32 words and so on...) :

chained_LP0_TX.DP = TCB_INTMEM | TCB_QUAD | TCB_CHAINPTRM2 |
TCB_CHAIN | TCB_DMA4DEST | (((long)(&chained_LP0_TX) >> 2) & 0x7fff); The problem arises with the receiving platform (EZ-KIT) : second
platform has to receive 256 consecutive word from LINK PORT 0 (DSP-A)
and transfer them into SDRAM.
Words are taken from the "infinite" stream of data generated by the
other platform. Platforms are connected throug link port cable (I use
the one indicated on analog site; part number : ADDS-LPCAB-30); link
port speed set to CCLK/8.

Well, I set up TCB (of the receiver) for a single 256-word DMA
transfer and all seemed to be ok. Now, assume that the transmitter is
running :

- If I connect link port cable BEFORE starting the receiver ("Debug" -
> "Run" on VisualDSP), then NO data is received. DMA control register
(receiving platform) indicates "DMA transfer in progress", so there's
not an error condition.

- If I connect link port cable AFTER the receiver is started, then
transfer is successfully completed.

Have you any suggestion ?
Marco Albertini PS:
I did same question to Analog's DSP Support, but I'm still waiting
for an answer.



On Fri, 31 Oct 2003, albert89k wrote:

> Words are taken from the "infinite" stream of data generated by the
> other platform. Platforms are connected throug link port cable (I use
> the one indicated on analog site; part number : ADDS-LPCAB-30); link
> port speed set to CCLK/8.
>
> Well, I set up TCB (of the receiver) for a single 256-word DMA
> transfer and all seemed to be ok. Now, assume that the transmitter is
> running :
>
> - If I connect link port cable BEFORE starting the receiver ("Debug" -
> > "Run" on VisualDSP), then NO data is received. DMA control register
> (receiving platform) indicates "DMA transfer in progress", so there's
> not an error condition.
>
> - If I connect link port cable AFTER the receiver is started, then
> transfer is successfully completed.
>
> Have you any suggestion ?

Try starting the receiver before the transmitter with the cable already
connected. It sounds like you are starting the transmitter, so the
dma controller is seeing it's lines toggle but it hasn't been programmed
yet. What other kind of handshake can you do so the transmitter can
know when the receiver is ready?

Patience, persistence, truth,
Dr. mike



> > - If I connect link port cable BEFORE starting the receiver
("Debug" -
> > > "Run" on VisualDSP), then NO data is received. DMA control
register
> > (receiving platform) indicates "DMA transfer in progress", so
there's
> > not an error condition.
> >
> > - If I connect link port cable AFTER the receiver is started, then
> > transfer is successfully completed.


> Try starting the receiver before the transmitter with the cable
already
> connected. It sounds like you are starting the transmitter, so the
> dma controller is seeing it's lines toggle but it hasn't been
programmed yet. > What other kind of handshake can you do so the transmitter can
> know when the receiver is ready?
>

In my project, transmitter can't know when the receiver is ready.
Transmitter provides a continous data stream ( like broadcast
telecommunications ;) ), then TX ever starts before receiver.

Receiver does not have to take ALL data from transmitter, it needs
only 256 words in-a-row and it should start only when it needs those
256 words.