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.

TI-RTOS v2.00.00.22 - Ethernet not functioning on TMDSCNCDH52C1 new Concerto Control Card

Hi,

I have updated to latest "TI RTOS v2.00.00.22 - TI RTOS for c2000" hoping it had the fix to the Ethernet problem on concerto control card discussed in my previous forum post http://e2e.ti.com/support/embedded/tirtos/f/355/t/329635.aspx. But the problem remains same and Ethernet module is not functioning as expected. The green LED on the Ethernet connector never comes ON and I can't establish any connection via Ethernet. We have already developed and completed software using TI RTOS, based on the  TMDXCNCDH52C1 card (which is working fine) but this is now discontinued as the chip was changed to production version and upgraded to TMDSCNCDH52C1. TI RTOS Ethernet drivers do not seem to be working with this new board.

Would really appreciate if anybody can provide a solution to this problem as our whole project is on hold due to this issue.

Many Thanks,
Bin        

  • Hi Bin,

    We were not able to address the issue in the 2.00.00.22 (or 2.00.01.23) release as we had hoped to. I'm looking at the issue now and should have an answer by the end of the week.

    Todd

  • Hi Todd,

    I finally found a solution to this problem and I had tested that is working to my new control card. Below is my change to file TMDXDOCKH52C1.c. Please feel free to give it a try.


    Regards,

    Bin

    Void TMDXDOCKH52C1_initEMAC(Void)
    {
        /*
         *  Set up the pins that are used for Ethernet
         *  MII_TXD3
         */
        GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_PIN_TYPE_STD);
        //HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL) &= 0xFFF0FFFF;
        //HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL) |= 0x00030000;
        GPIOPinConfigure(GPIO_PC4_MIITXD3);

        /* MII_MDIO */
        GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_6, GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_6, GPIO_PIN_TYPE_STD);
        GPIOPinConfigure(GPIO_PE6_MIIMDIO);
        /*HWREG(GPIO_PORTE_BASE + GPIO_O_APSEL)|= 0x00000040;
        HWREG(GPIO_PORTE_BASE + GPIO_O_PCTL) &= 0xF0FFFFFF;
        HWREG(GPIO_PORTE_BASE + GPIO_O_PCTL) |= 0x0C000000;*/

        /* MII_RXD3 */
        GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_5, GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_5, GPIO_PIN_TYPE_STD);
        GPIOPinConfigure(GPIO_PF5_MIIRXD3);
        /*HWREG(GPIO_PORTF_BASE + GPIO_O_PCTL) &= 0xFF0FFFFF;
        HWREG(GPIO_PORTF_BASE + GPIO_O_PCTL) |= 0x00300000;*/

        /* MII_TXER , MII_RXDV , MII_RXD1 , MII_RXD2 */
        GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_7|GPIO_PIN_3|GPIO_PIN_1|GPIO_PIN_0,
                       GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(GPIO_PORTG_BASE, GPIO_PIN_7|GPIO_PIN_3|GPIO_PIN_1|
                         GPIO_PIN_0,
                         GPIO_PIN_TYPE_STD);
        GPIOPinConfigure(GPIO_PG0_MIIRXD2);
        GPIOPinConfigure(GPIO_PG1_MIIRXD1);
        GPIOPinConfigure(GPIO_PG3_MIIRXDV);
        GPIOPinConfigure(GPIO_PG7_MIITXER);
        /*HWREG(GPIO_PORTG_BASE + GPIO_O_APSEL)|= 0x0000000B;
        HWREG(GPIO_PORTG_BASE + GPIO_O_PCTL) &= 0x0FFF0F00;
        HWREG(GPIO_PORTG_BASE + GPIO_O_PCTL) |= 0x3000C0CC;*/

        /* MII_TXCK , MII_TXEN , MII_TXD0 , MII_TXD1 , MII_TXD2 , MII_RXD0 */
        GPIODirModeSet(
            GPIO_PORTH_BASE, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4|
            GPIO_PIN_3|
            GPIO_PIN_1, GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(
            GPIO_PORTH_BASE, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4|
            GPIO_PIN_3|
            GPIO_PIN_1, GPIO_PIN_TYPE_STD);
        GPIOPinConfigure(GPIO_PH1_MIIRXD0);
        GPIOPinConfigure(GPIO_PH3_MIITXD2);
        GPIOPinConfigure(GPIO_PH4_MIITXD1);
        GPIOPinConfigure(GPIO_PH5_MIITXD0);
        GPIOPinConfigure(GPIO_PH6_MIITXEN);
        GPIOPinConfigure(GPIO_PH7_MIITXCK);
        /*HWREG(GPIO_PORTH_BASE + GPIO_O_APSEL)|= 0x000000C2;
        HWREG(GPIO_PORTH_BASE + GPIO_O_PCTL) &= 0x00000F0F;
        HWREG(GPIO_PORTH_BASE + GPIO_O_PCTL) |= 0xCC9990C0;*/

        /*
         *  MII_PHYRSTn , MII_PHYINTRn , MII_CRS , MII_COL , MII_MDC , MII_RXCK ,
         *  MII_RXER
         */
        GPIODirModeSet(
            GPIO_PORTJ_BASE, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4|
            GPIO_PIN_3|
            GPIO_PIN_2|GPIO_PIN_0, GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(
            GPIO_PORTJ_BASE, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4|
            GPIO_PIN_3|
            GPIO_PIN_2|GPIO_PIN_0, GPIO_PIN_TYPE_STD);
        GPIOPinConfigure(GPIO_PJ0_MIIRXER);
        GPIOPinConfigure(GPIO_PJ2_MIIRXCK);
        GPIOPinConfigure(GPIO_PJ3_MIIMDC);
        GPIOPinConfigure(GPIO_PJ4_MIICOL);
        GPIOPinConfigure(GPIO_PJ5_MIICRS);
        GPIOPinConfigure(GPIO_PJ6_MIIPHYINTRn);
        GPIOPinConfigure(GPIO_PJ7_MIIPHYRSTn);

        /*HWREG(GPIO_PORTJ_BASE + GPIO_O_APSEL)|= 0x000000FC;
        HWREG(GPIO_PORTJ_BASE + GPIO_O_PCTL) &= 0x000000F0;
        HWREG(GPIO_PORTJ_BASE + GPIO_O_PCTL) |= 0xCCCCCC03;*/

        /* Enable and Reset the Ethernet Controller. */
        SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
        SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);

        if (macAddress[0] == 0xff && macAddress[1] == 0xff &&
            macAddress[2] == 0xff && macAddress[3] == 0xff &&
            macAddress[4] == 0xff && macAddress[5] == 0xff) {
            System_abort("Change the macAddress variable to match your board's MAC sticker");
        }

        /* Once EMAC_init is called, EMAC_config cannot be changed */
        EMAC_init();
    }