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.

TMS320C6678: Hyperlink RXSEGSEL configuration

Part Number: TMS320C6678

Dear,

I am using Hyperlink to connect two C6678 device and I found that the RXSEGSEL can be set to 0 where(Hyperlink User guide Table3-10) the datasheet explain as "If rxsegsel=0,use 0 as index to lookup segment/length table, use 0xffffffff as offset mask."

I am wondering:

1. is the segment max. size 256MB? how can the segment use 32bit as address?

2. Hyperlink userguide Page 35(2.7.4.2.2 address remapping on the RX side say:  "The translated Address at the RX side is equal to the Segment Address + (Rx Address& OFFSET_MASK)."

Is the equation still work for "RXSEGSEL = 0" case?

Thanks a lot.

  • Hi,

    Question 1: Yes, the size can be up to 256MB.

    Question 2: Yes, the equation still works for RXSEGSEL = 0x0.


    Best Regards,
    Yordan
  • Hi, Yordan,

    Thanks a lot for your reply.

    Maybe I did not discribe the question quite clearly.

    Fort the first question, as you can see if the RXSEGSEL setting is 0, the address offset mask is 32bit over 28bit(256MB), 32 bit can access 4GB.

    But the datasheet shows the Segment max. size 256MB. Are they conflict?

    For the section question, let's have a example here

    RX address is: 0x5XXXXXXX

    Segment 0 value= 0x8000 offset mask= 0x0FFFFFFF.

    If the RXSEGSEL is set to 0, as Hyperlink User guide Tbale 3-10 said, "if rxsegsel = 0, use 0 as index to look up segment/length table, use 0xFFFFFFFF as offset mask"

    SO my quesiton is: The decoded base address is 0x80000000+0x5XXXXXXX=> 0xDXXXXXXX?  Access space is 256MB?

    Or deceoded base address is 0x5XXXXXXX and access space is 4GB?

    Besides, the question behind is:  all privilege master in DSP 1 can access total 256MB space in DSP2 or each master can access 256MB in any where of 4GB space in DSP2?

    Thanks.

  • I see, I've misunderstood the question indeed. Let me check further.

    Best Regards,
    Yordan
  • Hi,

    The maximum segment size is 256MB, as this is address 0x4000_0000 to 0x4FFF_FFFF in the C6678 memory map. If you use RXSEGSEL = 0, the decoded base address is 0x80000000+0x5XXXXXXX=> 0xDXXXXXXX. Access space is 256MB.

    The typical way we do this is select a small segment size, like several mega byte. Then create multiple mapping (in segment index and segment value register) to access different memory locations of the remote side.

    Regards, Eric
  • Hi Eric,

    Thanks for your reply.

    Does that mean every core in DSP1 can access a 256MB space and every 256MB can be mapped to any location of 0x00000000 To 0xFFFFFFFF of DSP2 independently?

    I am concern that I have total 256MB Hyperlink space for all core or individual 256MB for every core.

    For example, can I set DSP1 Core 1 access local 0x40000000 and Core 2 access local 0x40000000 map to different remote address at DSP2?

    Thanks.

  • No, the Hyperlink is per device, not per core. DSP1 core1 and core2 have the same mapping, so they access the same address at the remote DSP2.

    Regards, Eric