This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c6678 hyperlink

hello:

1. I am working with hyperlink, and If I want to send the data from local BufferA to the remote BufferB by the hyperlink, what  shoul I need do about the address map?

I find that the hyperlink in the mcsdk , a function : hyplnkExampleAddrMap (&dataBuffer, (void **)&bufferThroughHypLnk), it seems like that it uses as address map !

below is my idea,maybe not right:

hyplnkExampleAddrMap (&BufferA , (void **)&BufferAThroughHypLnk),

hyplnkExampleAddrMap (&BufferB , (void **)&BufferBThroughHypLnk),

then   memcpy(BufferBThroughHypLnk,    BufferAThroughHypLnk,    sizeof(BufferAThroughHypLnk));

is it right???

2. because hyperlink has only 256MB memoryspace  access,  if I have 1GB data in local DDR, and I want send the 1GB data to the remote DDR, what shoud I do?

Thanks very much!

  • Hi,

    See the following procedure.

    hyplnkExampleAddrMap (&BufferA , (void **)&BufferAThroughHypLnk), for local Hyperlink.

    hyplnkExampleAddrMap (&BufferB , (void **)&BufferBThroughHypLnk), for remote Hyperlink

    then   memcpy(BufferAThroughHypLnk,    BufferA,    sizeof(BufferAThroughHypLnk)); from Local DSP and check result on remote DSP BufferB

    for number two, you can send any size of data through Hyperlink. 256 MB is the maximum temporary hyperlink buffer size for the whole sectors.

    it is just a midium buffer and not a destination memory, so it doesn't make any trouble even when you transfer very big size of data.

    Regards,

    Albert  

  • Albert ,

    thanks for your reply,

    1.you mean that if local device wans to send the data of BufferA   to the remote device BufferB, the procesure is: first, the data of BufferA  send to the local memory space in BufferAThroughHypLnk, then  the data in BufferAThroughHypLnk will be transfered by the local hyperlink , in the remote side, the remote hyperlink receives  the data and stores in the BufferBThroughHypLnk, and last the data in BufferBThroughHypLnk will be send to BufferB , is the procesure  right?

    2. above is write , if I want to read from BufferB  to BufferA,  what should I do?  how do the data  move?

    3. you have saw that "256 MB is the maximum temporary hyperlink buffer size for the whole sectors",   because the buffer is only 256MB, and it can not hold the 1GB data .so I think that when I send IGB data to the  temporary hyperlink buffer , before I have sent all data, once  the temporary hyperlink buffer has data in, it will send the data to the remote  device! is this right?

  • and there are another questions :

    4. are  the BufferA   and BufferB  should be remap to the same segment and have the same start address in hyperlink space witch is from 0x40000000 to 0x4FFFFFFF?

    5. Can the hyperlink transfer data and at the same time ,it receives data,it means Full-duplex?

    the hyperlink guide 1.4 Functional Block Diagram says: The HyperLink module implements two 256-bit,

    and 2.7.3 HyperLink Format says:

    The example above shows what can happen to a Write Burst due to remote FIFO state
    changes. In HyperLink, the outbound transactions and the return data share the same
    physical link to the remote device. The outbound transactions and data return can be
    interleaved. However, the data return has higher priority than the outbound
    transactions.

    so I am confused !  I am not sure witch is right.


  • 1. Yes

    2. try to copy data from BufferAThroughHyperlink to BufferA then HW automatically try to read data from remote BufferB

    3. Yes

    4. BufferA and BufferB setup has no special relation because each buffer is in different DSP and using different hyperlink internal memory. it doesn't matter if you use same segment or not. it depends on  your hypelink memory segment management policy.

    5. the section explains the "Read" process of hyperlink and it is more complex than "Write" process. Read process requires some control word transaction and we need to share the same link for sending and recieving control word and it looks like interleaving. however,for overall process, we can do Read and Write process at the same time and it is fully matched with full duplex concept.

    Regards,

    Albert

  • Albert,

    thanks for your reply.

    1.I have a idea that the local DSP read or write  the remote DSP DDR, and at the same time,  the remote DSP read or write the local DSP DDR,  will it be OK?

     2. I want to know that if I transfer data from  DDR to the MSM RAM of remote device with EDMA0 by hyperlink, is the Bandwidth the same with transferring from DDR to local MSM RAM with EDMA0?

    thanks!

  • I understand the questions a little differently, so I add some comments:

     

    1. The HyperLink physical interface supports two independent transfers, from device A to device B and from B to A.  You can see it in figure 3-1 in the HyperLink User Guide – document number SPRUGW8A.
    2. Let’s use the notation; local device wants to read memory from the remote device.  The purpose was to make the read (and write) from the remote device almost transparent to the user, so to read a remote memory, the local device reads an address that is between 0x4000 0000 to 0x4fff ffff.
    3. The total remote memory that can be access (without re-configuration) is 256MB. The address translation  procedure enables the local device to read any remote memory (as long as the total memory is less than 256MB). The user must configure the address translation process.
    4. An overview of the HyperLink address translation is given in the HyperLink presentation.  You can find it on http://processors.wiki.ti.com/index.php/Keystone/Trainings/Reading-MAR-27-12

    Ran