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.

how can I get solution that make DSP to use 2 ethernet port

Other Parts Discussed in Thread: TMS320C6670

I want to use 2 ethernet port in a DSP.

I use a unknown b'd which has a TMS320C6670, 2 ethernet port.

The ethetnet ports are connected to PHY not AMC. (SGMII0 to PHY, SGMII1 to PHY also)

 

I tested SGMII1 with "client" sample.

But I can't use simultaneously SGMII0 and SGMII1 as external links.

How can I get solution for this?

  • Hi Hui-kwon,

    Try http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/196772.aspx

    Thanks,

    HR

  • Hi,

    we are using the ports of a C6678 device like a normal ethernet switch. You can take a look at my modifications to the NIMU driver here:
    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/196772.aspx

    Ralf

  • In the discuss,

    the major issue seems that it did not completely solved.

    I also(like some people) want to use 2 SGMII ports as seperate net device that each has own IP.

     

    Do you already have modified(upgraded) code "nimu_eth.c"?

    If "yes",

    where can I get(download) it?

    Let me know.

     

    Thank you.

  • I'm not sure which changes are needed to make the NIMU driver work with two ports independently.
    But I think you have to create to device instances, one for each port and place them into NIMUDeviceTable[].
    See also:
    http://e2e.ti.com/support/embedded/tirtos/f/355/t/257607.aspx

    Yes, I modified the code to use both ports like a switch, but there are too many hardware specific changes in this file.

    Ralf

  • Hi,

    There is no test code for make a two port enable configuration for SGMII on C6670 device.
    You need to config the phy which is using by you. NIMU is only intended to be used with NDK.
    The users should not tie up to its API directly. This wiki gives the details like how to use NDK on the custom board.
    And also this explains different TI device. You have understand this and can implement on your custom board.
    http://processors.wiki.ti.com/index.php/Network_Developers_Kit_FAQ#Q:_Is_there_any_information_that_can_help_if_I_want_to_port_NDK_to_my_custom_hardware_that_uses_a_different_PHY.3F

  • Thank you for your supports.

    But I can't understand completely what I should do.

     

    My b'd has 2 ethernet PHYs. both transiver of them are same "Mavell 88E1111".

    I tested with "client" in mcsdk_2_00_00_11\examples\ndk.(no modification).

    It worked with SGMII1. So, I knew the driver(NIMU and emac) does not need to be modified for Mavell 88E1111.

    Because I had to use 2 port, I searched way to enable SGMII0 like SGMII1.

    But, the "nimu_eth.c" in pdk_C6670_1_1_2_6\packages\ti\transport\ndk\nimu\src seemed that supports ONLY 1 PHY(PLATFORM_EMAC_PORT_MODE_PHY).

    So, I searched many posts and queried to get information or ways.

    But, I actually do not get perfect understand and solution.

     

    On collected information,

    I have to seperate driver for each interface(SGMII0, SGMII1).

    Then, I have to connect the drivers to NIMU table(NIMUDeviceTable).

     

    I have no much time to develop driver.

    I just want to modify simply and use "nimu_eth.c".

    Is this possible?

    I tried to modify "nimu_eth.c". But it was not easy. ^^;;;

    I will explain my modification at next post

    Please, teach me.

     

  • 1. NIMUDeviceTable

    NIMU_DEVICE_TABLE_ENTRY NIMUDeviceTable[] =
    {
    /**
      * @brief  EmacInit for the platform
      */
        Emac2Init0, // for SGMII0
        Emac2Init1, // for SGMII1
        NULL
    };

      * Emac2Init0 and Emac2Init1 is copy version of EmacInit. 0 and 1 means index of physical interface(SGMII0 and 1).

     

    2. EMACInit_Core

       - I put the index to ptr_pvt_data->pdi.PhysIdx instead of corenum. -> ptr_pvt_data->pdi.PhysIdx = index

       - I make to perform Init_PASS() and Init_Cpsw() when index=0

       - forecd mac address mapping(instead of searching PLATFORM_EMAC_PORT_MODE_PHY part)

          platform_get_emac_info(index, &emac_info);
          memcpy(ptr_pvt_data->pdi.bMacAddr, emac_info.mac_address, 6);

    3. EmacStart

       - I make to perform Setup_Tx() and Setup_Rx() when index=0

     

    These are all of my modification for 2 ports activatity. -_-;;

    After this, SGMII0 works but SGMII1 does not work(initial fail).

     

       * I think I have to

         - register interrupt for SGMII1.

         - somethings more...

         But, I don't know well. I need some help.

  • Hi,

    I have posted on your similar new thread.

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/330555/1153722.aspx#1153722