• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Digital Signal Processors (DSP) » C6000 Multicore DSP » Keystone Multicore Forum (C66, 66A, AM5) » question about hyperlink interface
Share
C6000 Multicore DSP
  • Forums
  • Announcements
Options
  • Subscribe via RSS
Training Available
TI provides self-paced online training that introduces the primary components of the KeyStone II family of SoC devices.

  • KeyStone II SoC Overview >
  • KeyStone II Software Overview >
  • KeyStone II ARM Cortex-A15 Corepac Overview >
  • More Information >
  • Check out
    Multicore Mix blog
    • $core_v2_blog.Current.Name

      Geeks UNITE for Geek Pride Day

      Posted 6 hours ago
      by Lauren Reed1
      Happy Geek Pride Day from the Processors team! We wanted to celebrate...
    • $core_v2_blog.Current.Name

      OpenMP - All aboard!

      Posted 2 days ago
      by Debbie Greenstreet
      With so many end products today relying on multicore DSPs for...
    • $core_v2_blog.Current.Name

      A look back: Two years of Multicore Mix

      Posted 3 days ago
      by Lauren Reed1
      A big thank you to everyone who participated in our contest last...

    Forums

    question about hyperlink interface

    This question is answered
    ahmed abouzaid
    Posted by ahmed abouzaid
    on Jul 27 2012 13:36 PM
    Intellectual625 points

    hello ;

    i have a question about the presentation that talk about hyperlink( http://keystone-workshop.googlecode.com/svn/trunk/pdf/Intro%20to%20Hyperlink.pdf )

    1-In slide 16 : i couldn't understand by (Privilege ID) and what is the mean by (Lower portion of the remote address – offset into the segment)

    2-In slide 17 : is (Segment Lookup Table) determine the portion of memory that will be transferred by hyperlink interface or what ?

    Is the example about Hyperlink (pdk_C6678_1_0_0_17\packages\ti\drv\exampleProjects\hyplnk_exampleProject.) is adjusted to certain number of segments or i have to Build  the Segment Lookup Table and do i need to use EDMA , if yes why ??

    and i understood from the presentation that the hyperlink interface will transfer the the data that put in certain location in memory from Tx(0x4000_0000 to 0x4FFF_FFFF.) to certain location determined by Segment Lookup Table

    Regards

    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • Albert Bae
      Posted by Albert Bae
      on Jul 27 2012 14:47 PM
      Intellectual2280 points

      Hi,

      That presentation doesn't give you the detail for the hyperlink. Please download hyperlink Users guide from TI website and read it first before you get answer from us. I believe the UG may have all answers you asked. Let me know if you still have the same question after you fully read the document.

      Regards,

      Albert 

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jhon Scott
      Posted by Jhon Scott
      on Jul 31 2012 08:02 AM
      Intellectual530 points

      Ahmed,

      Try to understand the examples given in the document http://keystone-workshop.googlecode.com/svn/trunk/pdf/Intro%20to%20Hyperlink.pdf

      They are very helpful to understand the address translation.

      For your questions, I understood that you have to program two Look Up Tables : one for the segments and one for the PrivID.

      According to the documents, I understood that PrivID can have two values: 0xD if a request come from a core and 0xE if a request come from an other master.

      By programing the register on Tx side, you can choose the place of the PrivID index on Tx address.

      In the example given by Texas, only 1 segment of 4MB is declared.

      Try to read this example and specially the function : hyplnkExampleAddrMap().

      This is where the address translation take place.Try to understand it after reading the User Guide and the .pdf presentation.

      Regards.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • ahmed abouzaid
      Posted by ahmed abouzaid
      on Aug 03 2012 20:41 PM
      Intellectual625 points

      thank you John ,

      but in the user guide

      -In page 33:(The main function of the ingress address translation is to overlay the control information into the address field.) so, what is the mean by overlay the control information into the address field and the engress address and is that the address of the data in memory (DDR-L2 or what)

      -In page 34 : (On the TX side, the TX overlay control register determines how the security bit and PRIVID overlay on top of the slave address to form the outgoing address.) so, what is the mean by overlay on top of the slave address

      wait your response

      Allen Lee ArunMani cb1_mobile RandyP Tom Johnson16214
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • ahmed abouzaid
      Posted by ahmed abouzaid
      on Aug 04 2012 09:21 AM
      Intellectual625 points

      any body help me there ??

      6670 multicore boot HRi John
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jhon Scott
      Posted by Jhon Scott
      on Aug 06 2012 01:39 AM
      Intellectual530 points

      Ahmed,

      this two things mean that you have to program where you want to put the privID and the security bit.

      The main purpose of the address translation on Tx side is to put the privID and the security bit in the 32 bits address.

      On the Tx side you have two things to configure: the place of the PrivID and the place of the security bit.

      For a simple transaction between two processor using hyperlink don't take care about the values of the PrivID and focus on the segment look up table of the Rx side.

      Have a look to the function hyplnkexampleaddrmap() on the TI example. If you understand this function and the examples on the document http://keystone-workshop.googlecode.com/svn/trunk/pdf/Intro%20to%20Hyperlink.pdf  then all will be clear for you.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • ahmed abouzaid
      Posted by ahmed abouzaid
      on Aug 08 2012 00:01 AM
      Intellectual625 points

      thanks John for your help

      I read  the example in the user guide and the example in the presentation and understood the address Translation and as you told me and as i discovered In the example given by Texas, only 1 segment of 4MB is declared in the remote device.

      But as in the hyplnkexampleaddrmap()                                                                                                                                                                                                                                        /* Make one segment which can see dataBuffer */
        if ((globalAddr >= 0x800000) && (globalAddr < 0xa00000)) {
          /* Address is in L2 */
          globalAddr |= 0x10000000 | (DNUM << 24);
        } else {
          System_printf ("Don't know how to make global address for 0x%08x\n", globalAddr);
        }

      I didn't understand this section, is that mean  the address On the receive side must be from 0x800000 to 0xa00000(before applying Address Translation on the RX Side) and then the address of the data at remote device will be at L2 at 0x10000000 (because i understood that globalAddr & 0x3fffff(mask of rxSegSel) )? and what is the mean by (DNUM << 24) ?

      And is the dataBuffer is the address of the data that it's sent before applying Address Translation on the TX Side ?

      wish anybody can help me .



      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jhon Scott
      Posted by Jhon Scott
      on Aug 08 2012 02:12 AM
      Intellectual530 points

      Ahmed,

      What I understood from the example given by Texas is that a token or a block is sent from L2SRAM of DSP local to L2SRAM of DSP remote.

      To answer to your question, DNUM is the number of the core running and "<<24" mean that you shift this number to the 24th bit on the left.

      Maybe this link http://en.wikipedia.org/wiki/Bitwise_operation#Shifts_in_C.2C_C.2B.2B.2C_C.23 would be clearer.

      To be clear, the variable "globalAddr" is set to the base adress of L2SRAM of each core running.

      If Core0 is running, the value of "globalAddr" would be 0x10800000

      If Core1 is running, the value of  "globalAddr" would be 0x11800000

      If Core2 is running, the value of "globalAddr"would be 0x12800000

      ...


      Personaly, when I wrote my own software, I didn't use this thing because it seems a little bit confusing.


      The transfer of the data is made in this function "hyplnkExampleIOCycle"


      You should run the example in debug mode and look for L2SRAM memory of each DSP (run only core0, it would be easier to debug) and look when the buffer appear on DSP remote. By doing this you will maybe better understand when the transaction is made and how.


      Regards.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • ahmed abouzaid
      Posted by ahmed abouzaid
      on Aug 09 2012 07:32 AM
      Intellectual625 points

      thank you for your reply but to allocate the data to be sent by hperlink interface(o/p from core 0) to L2SRAM memmory.

      there is a liker file i made it so, is there any modification to it ?

      5037.LTE2(1).cmd.txt

      thanks you in advance;

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jhon Scott
      Posted by Jhon Scott
      on Aug 09 2012 07:48 AM
      Intellectual530 points

      Well... I'm sorry not to answer you about that question. I'm not yet familiar with linker files...

      The best way is to try running your sofware and check with the debugger if your variables are located where you want.

      Regards.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • ahmed abouzaid
      Posted by ahmed abouzaid
      on Aug 09 2012 10:23 AM
      Intellectual625 points

      so, how to active the example(how to start the sending of data) ,is there any functions must be called in order to operate hyperlink , in the presentation ,in slide 45, It is written, (Configuration functions are part of the HyperLink example in the PDK release) and in the example ,in hyplnkLLDIFace.c at line no. 627 it's written, Place peripheral into reset.

      so i don't to operate the example ,please  help me

      Ahmed

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Uday
      Posted by Uday
      on Aug 09 2012 11:41 AM
      Expert3730 points

      Hi Ahmed

      Have you gone through the HyperLink User's Guide? It is located at http://www.ti.com/lit/ug/sprugw8a/sprugw8a.pdf. It contains a lot of useful information that will be helpful in getting you started, along with this example.

      Here are some points that address your questions

      I. Addressing your question on how to operate Hyperlink....
      The typical configuration flow for HyperLink is provided below.
      Step 1. PLL, Power and SerDes
             -- Setup PLL
             -- Enable power domain for HyperLink
             -- Configure SerDes
             -- Confirm that power is enabled
      Step 2.Configure HyperLink Registers
             -- Enable HyperLink via HyperLink Control Register (base + 0x4)
             -- Once link is up, both devices can see each other‟s registers. Here there‟s a choice: device configures own registers; or one master programs registers for both devices; or direction-based.
            -- Register configuration also involves specifying address translation scheme on Tx & Rx side, and any event/interrupt configuration

      The PDK example, along with the address translation examples in the user guide, as Jhon mentioned, will be useful in understanding how this is done.
      Once steps 1 and 2 are done, as soon as you write to memory in the HyperLink address space (0x4000_0000 to 0x4FFF_FFFF), a write transaction will occur, and similarly for read. You can see how write/read transactions take place by reading the description in the HyperLink user guide.

      II. How is the above done in software ...
      Both the Chip Support Library (CSL) and HyperLink Low-Level Drivers (LLD) make available APIs that can be used to configure HyperLink. The general recommendation is that wherever LLD functions are available to do something, use LLD. If LLD API does not exist for what you want to achieve, use CSL. You can see how various CSL and LLD functions are used to setup PLL, power and Serdes, and configure registers for address translation. You can essentially use the various functions created in this example directly into your project and modify whatever you need to modify.

      III. Addressing your earlier question on writing to Segment LUT (or PrivID LUT)
      To program the LUT:
      •Write to Rx Address PrivID/Segment Index Register
      •Write to Rx Address PrivID/Segment Value Register, which will populate the corresponding index in the LUT with this value
      To check LUT content:
      •Write to Rx Address PrivID/Segment Index Register
      •Read Rx Address PrivID/Segment Value Register, which will return value from LUT for index specified in Index Register

      - Uday

      --- If you need more help, please reply. If this answers your question, please Verify Answer below this post ---

      HyperLink
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jhon Scott
      Posted by Jhon Scott
      on Aug 10 2012 03:54 AM
      Intellectual530 points

      The configuration of the Hyperlink is made at the beginning of the program when the function hyplnkExampleSysSetup() is called.

      Then, the DSP wait the remote side to initialize his module too in that function: hyplnkExamplePeriphSetup().

      Take a look at the hyperlink user guide, it's very well explained (if you want to have different configurations for the hyperlink module).

      Once Hyperlink is configured, you don't have to re configure it to send data. You just have to configure the address translation.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • ahmed abouzaid
      Posted by ahmed abouzaid
      on Aug 11 2012 08:22 AM
      Intellectual625 points

      thanks John for your effort , but what do you mean by configure the address translation , you mean to configure the registers that are in section Address Translation in user guide such as (TX Address Overlay Control register - RX Address Selector Control Register - Rx Address PrivID Index Register - Rx Address PrivID
      Value Register) according to the following values

      TXAddrOvly.txSecOvl    = 0;  /* Ignore the secure bit */
        TXAddrOvly.txPrivIDOvl = 12; /* Put privid in the MS 4 bits of address */
        TXAddrOvly.txIgnMask   = 11; /* Open whole 256MB window */

        RXAddrSel.rxSecHi     = 0; /* Don't care about secure */
        RXAddrSel.rxSecLo     = 0; /* Don't care about secure */
        RXAddrSel.rxSecSel    = 0; /* Don't care about secure */
        RXAddrSel.rxPrivIDSel = 12; /* Symmetric with TXAddrOvly.txPrivIDOvl */
        RXAddrSel.rxSegSel    = 6;  /* Make segments of 4MB each */

      and put the configuration in hyplnkExamplePeriphSetup or you mean to form the Segment Lookup Table ??

      thank you again for helping me;

      Ahmed

      John Scott
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jhon Scott
      Posted by Jhon Scott
      on Aug 13 2012 04:34 AM
      Intellectual530 points

      You have to configure the address translation like they did in the function : hyplnkExampleAddrMap();

      This function place the fields needed where the user wants. (place of the PrivID or the index of segment).

      This function also initializes segments that will be used for the translation address on remote side (look up table).

      I think you have to spend a lot of time on the documents (the example code, the UG and the power point presentation) to have your ideas clear on that subject.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • ahmed abouzaid
      Posted by ahmed abouzaid
      on Aug 19 2012 18:37 PM
      Intellectual625 points

      hello John;

      I just want to ensure that this example is a write operation .I mentioned that The General Bus Control Word transfers bus commands that provide the capability to
      read and write remote HyperLink devices. i didn't find it in the example but i notice from the main function that it's a write operation ?

      another question,when simulating the example , i need to connect both boards or i can simulate the example by debugging the code without connecting both boards? .That's because, i understood from the user guide that the Tx wait to the other side to come up .

      thanks in advance

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    12
    TI E2E™ Community
    • Support Forums
    • Blogs
    • Videos
    • Groups
    • Site Support & Feedback
    • Settings
    TI E2E™ Community Groups
    • TI University Program
    • Make the Switch
    • Microcontroller Projects
    • Motor Drive & Control
    Other Communities
    • Deyisupport
    • Designsomething.org
    • beagleboard.org
    • TI on Element 14
    • TI on TechXchangeSM
    Other Technical & Support Resources
    • WEBENCH® Design Center
    • Product Information Centers
    • Technical Documents
    • TI Design Network
    • TI Technical Articles
    • TI Training

    All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

    Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

    Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
    TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

    TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
    embedded processors, along with software, tools and the industry’s largest sales/support staff.

    © Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
    Trademarks | Privacy Policy | Terms of Use