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.

[参考译文] TDA4VH-Q1:如何对链路接通和断开;故障问题进行故障排除 (&quot)?

Guru**** 2553450 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1552878/tda4vh-q1-how-should-i-troubleshoot-a-link-up-failure-issue

器件型号:TDA4VH-Q1
Thread 中讨论的其他器件:TDA4VH

工具/软件:

你(们)好
  

  在 RTOS 中调试 2-0 的 SGMII PHY。


  TDA4VH SDK0902  PC 端口 4 服务器 1 线路 1 <----- SGMII-- >开关。   

{/*“P3"*/“*/
.macPort = ENET_MAC_PORT_4、
.mii ={ENET_MAC_LAYER_GMII、ENET_MAC_SUBLAYER_SERIAL}、/* ENET_MAC_SUBLAYER_SERIAL SGMII*/
.phyCfg =

.phyAddr = ENETPHY_INVALID_PHYADDR
.isStraped = BFALSE、
.skipExtendedCfg = BFALSE、
.extendedCfg = NULL、
.extendedCfgSize = 0U、
}、
sgmiiMode = ENET_MAC_SGMIIMODE_SGMII_FORCEDLINK
.linkCfg ={ENET_SPEED_1Gbit、ENET_DUPLEX_FULL}、
}、

Board_STATUS Board_CfgSgmii_serdes1(void)
{
    CSL_SerdesResult result;
    CSL_SerdesLaneEnableStatus laneRetVal = CSL_SERDES_LANE_ENABLE_NO_ERR;
    CSL_SerdesLaneEnableParams serdesLane0EnableParams  = {0};
    memset(&serdesLane0EnableParams, 0, sizeof(serdesLane0EnableParams));

    /* SGMII Config */
    serdesLane0EnableParams.serdesInstance    = (CSL_SerdesInstance)CSL_TORRENT_SERDES1;
    serdesLane0EnableParams.baseAddr          = CSL_WIZ16B8M4CT3_1_WIZ16B8M4CT3_BASE;
    serdesLane0EnableParams.refClock          = CSL_SERDES_REF_CLOCK_100M;
    serdesLane0EnableParams.refClkSrc         = CSL_SERDES_REF_CLOCK_INT0;
    serdesLane0EnableParams.linkRate          = CSL_SERDES_LINK_RATE_1p25G;
    serdesLane0EnableParams.numLanes          = 0x1;
    serdesLane0EnableParams.laneMask          = 0x2;
    serdesLane0EnableParams.SSC_mode          = CSL_SERDES_NO_SSC;
    serdesLane0EnableParams.phyType           = CSL_SERDES_PHY_TYPE_SGMII;
    serdesLane0EnableParams.operatingMode     = CSL_SERDES_FUNCTIONAL_MODE;
    serdesLane0EnableParams.phyInstanceNum    = 0;//BOARD_SERDES_LANE_SELECT_CPSW;
    serdesLane0EnableParams.pcieGenType        = CSL_SERDES_PCIE_GEN3;

    serdesLane0EnableParams.laneCtrlRate[0]   = CSL_SERDES_LANE_FULL_RATE;
    serdesLane0EnableParams.loopbackMode[0]   = CSL_SERDES_LOOPBACK_DISABLED;

    serdesLane0EnableParams.laneCtrlRate[1]   = CSL_SERDES_LANE_FULL_RATE;
    serdesLane0EnableParams.loopbackMode[1]   = CSL_SERDES_LOOPBACK_DISABLED;

    CSL_serdesPorReset(serdesLane0EnableParams.baseAddr);
        /* Select the IP type, IP instance num, Serdes Lane Number */
    CSL_serdesIPSelect(CSL_CTRL_MMR0_CFG0_BASE,
                       serdesLane0EnableParams.phyType,
                       serdesLane0EnableParams.phyInstanceNum,
                       serdesLane0EnableParams.serdesInstance,
                       1U);
    result = CSL_serdesRefclkSel(CSL_CTRL_MMR0_CFG0_BASE,
                                 serdesLane0EnableParams.baseAddr,
                                 serdesLane0EnableParams.refClock,
                                 serdesLane0EnableParams.refClkSrc,
                                 serdesLane0EnableParams.serdesInstance,
                                 serdesLane0EnableParams.phyType);
    if (result != CSL_SERDES_NO_ERR)
    {
        return BOARD_FAIL;
    }
    /* Assert PHY reset and disable all lanes */
    CSL_serdesDisablePllAndLanes(serdesLane0EnableParams.baseAddr, serdesLane0EnableParams.numLanes, serdesLane0EnableParams.laneMask);
    /* Load the Serdes Config File */
    result = CSL_serdesEthernetInit(&serdesLane0EnableParams);
    /* Return error if input params are invalid */
    if (result != CSL_SERDES_NO_ERR)
    {
        return BOARD_FAIL;
    }
    /* Common Lane Enable API for lane enable, pll enable etc */
    laneRetVal = CSL_serdesLaneEnable(&serdesLane0EnableParams);
    if (laneRetVal != 0)
    {
        return BOARD_FAIL;
    }
    return BOARD_SOK;
}

现在 devmem2 0x0c000414 为  0x00000030

如何解决“链路接通“故障问题?

谢谢。此致、

 6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    您能否确认、您是否配置了带有 100MHz 时钟的 Serdes1 时钟?
    默认情况下、TI SDK 根据 EVM 连接使用 SerDes2。

    您能否分享 ETHFW 日志以检查是否报告了任何错误?

    另外、请确保 Linux 没有将 SerDes1 用于任何目的?

    检查 PHY 上的 SGMII 模式和自动协商功能。
    默认情况下、具有强制链路的 SGMII 在主模式下配置 MAC、并禁用自动协商。  

    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好
    1.

    Board_STATUS Board_CfgSgmii_serdes1(void)
    {
        CSL_SerdesResult result;
        CSL_SerdesLaneEnableStatus laneRetVal = CSL_SERDES_LANE_ENABLE_NO_ERR;
        CSL_SerdesLaneEnableParams serdesLane0EnableParams  = {0};
        memset(&serdesLane0EnableParams, 0, sizeof(serdesLane0EnableParams));
    
        /* SGMII Config */
        serdesLane0EnableParams.serdesInstance    = (CSL_SerdesInstance)CSL_TORRENT_SERDES1;
        serdesLane0EnableParams.baseAddr          = CSL_WIZ16B8M4CT3_1_WIZ16B8M4CT3_BASE;
        serdesLane0EnableParams.refClock          = CSL_SERDES_REF_CLOCK_100M; // CSL_SERDES_REF_CLOCK_156p25M; //CSL_SERDES_REF_CLOCK_100M;
        serdesLane0EnableParams.refClkSrc         = CSL_SERDES_REF_CLOCK_INT0;  //CSL_SERDES_REF_CLOCK_INT1;//CSL_SERDES_REF_CLOCK_INT0;
        serdesLane0EnableParams.linkRate          = CSL_SERDES_LINK_RATE_1p25G;//CSL_SERDES_LINK_RATE_3p125G;//CSL_SERDES_LINK_RATE_1p25G;
        serdesLane0EnableParams.numLanes          = 0x1;
        serdesLane0EnableParams.laneMask          = 0x2;
        serdesLane0EnableParams.SSC_mode          = CSL_SERDES_NO_SSC;
        serdesLane0EnableParams.phyType           = CSL_SERDES_PHY_TYPE_SGMII; //CSL_SERDES_PHY_TYPE_XAUI;//CSL_SERDES_PHY_TYPE_SGMII;
        serdesLane0EnableParams.operatingMode     = CSL_SERDES_FUNCTIONAL_MODE;
        serdesLane0EnableParams.phyInstanceNum    = 0;//BOARD_SERDES_LANE_SELECT_CPSW;
        serdesLane0EnableParams.pcieGenType        = CSL_SERDES_PCIE_GEN3;
    
        serdesLane0EnableParams.laneCtrlRate[0]   = CSL_SERDES_LANE_FULL_RATE;
        serdesLane0EnableParams.loopbackMode[0]   = CSL_SERDES_LOOPBACK_DISABLED;
    
        serdesLane0EnableParams.laneCtrlRate[1]   = CSL_SERDES_LANE_FULL_RATE;
        serdesLane0EnableParams.loopbackMode[1]   = CSL_SERDES_LOOPBACK_DISABLED;
    
        CSL_serdesPorReset(serdesLane0EnableParams.baseAddr);
            /* Select the IP type, IP instance num, Serdes Lane Number */
        CSL_serdesIPSelect(CSL_CTRL_MMR0_CFG0_BASE,
                           serdesLane0EnableParams.phyType,
                           serdesLane0EnableParams.phyInstanceNum,
                           serdesLane0EnableParams.serdesInstance,
                           1U);
        result = CSL_serdesRefclkSel(CSL_CTRL_MMR0_CFG0_BASE,
                                     serdesLane0EnableParams.baseAddr,
                                     serdesLane0EnableParams.refClock,
                                     serdesLane0EnableParams.refClkSrc,
                                     serdesLane0EnableParams.serdesInstance,
                                     serdesLane0EnableParams.phyType);
        if (result != CSL_SERDES_NO_ERR)
        {
            return BOARD_FAIL;
        }
        /* Assert PHY reset and disable all lanes */
        CSL_serdesDisablePllAndLanes(serdesLane0EnableParams.baseAddr, serdesLane0EnableParams.numLanes, serdesLane0EnableParams.laneMask);
        /* Load the Serdes Config File */
        result = CSL_serdesEthernetInit(&serdesLane0EnableParams);
        /* Return error if input params are invalid */
        if (result != CSL_SERDES_NO_ERR)
        {
            return BOARD_FAIL;
        }
        /* Common Lane Enable API for lane enable, pll enable etc */
        laneRetVal = CSL_serdesLaneEnable(&serdesLane0EnableParams);
        if (laneRetVal != 0)
        {
            return BOARD_FAIL;
        }
        return BOARD_SOK;
    }

    2. MCU2-0 日志;
    [MCU2_0] 4.475869 s: ### CPU Frequency = 1000000000 Hz
    [MCU2_0] 4.475894 s: CPU is running FreeRTOS
    [MCU2_0] 4.475912 s: APP: Init ... !!!
    [MCU2_0] 4.475945 s: SCICLIENT: Init ... !!!
    [MCU2_0] 4.476062 s: SCICLIENT: DMSC FW version [9.0.6--v09.00.06 (Kool Koala)]
    [MCU2_0] 4.476089 s: SCICLIENT: DMSC FW revision 0x9
    [MCU2_0] 4.476108 s: SCICLIENT: DMSC FW ABI revision 3.1
    [MCU2_0] 4.476127 s: SCICLIENT: Init ... Done !!!
    [MCU2_0] 4.476145 s: UDMA: Init ... !!!
    [MCU2_0] 4.476920 s: UDMA: Init ... Done !!!
    [MCU2_0] 4.476951 s: UDMA: Init for CSITX/CSIRX ... !!!
    [MCU2_0] 4.477375 s: UDMA: Init for CSITX/CSIRX ... Done !!!
    [MCU2_0] 4.477402 s: MEM: Init ... !!!
    [MCU2_0] 4.477424 s: MEM: Created heap (DDR_LOCAL_MEM, id=0, flags=0x00000004) @ bb000000 of size 6291456 bytes !!!
    [MCU2_0] 4.477465 s: MEM: Created heap (L3_MEM, id=1, flags=0x00000000) @ 60000000 of size 262144 bytes !!!
    [MCU2_0] 4.477500 s: MEM: Created heap (DDR_CACHE_WT_MEM, id=7, flags=0x00000000) @ bb600000 of size 2097152 bytes !!!
    [MCU2_0] 4.477535 s: MEM: Init ... Done !!!
    [MCU2_0] 4.477551 s: IPC: Init ... !!!
    [MCU2_0] 4.477582 s: IPC: 11 CPUs participating in IPC !!!
    [MCU2_0] 4.477611 s: IPC: Waiting for HLOS to be ready ... !!!
    [MCU2_0] 12.564335 s: IPC: HLOS is ready !!!
    [MCU2_0] 12.571084 s: IPC: Init ... Done !!!
    [MCU2_0] 12.571126 s: APP: Syncing with 10 CPUs ... !!!
    [MCU2_0] 12.789073 s: APP: Syncing with 10 CPUs ... Done !!!
    [MCU2_0] 12.789099 s: REMOTE_SERVICE: Init ... !!!
    [MCU2_0] 12.789495 s: REMOTE_SERVICE: Init ... Done !!!
    [MCU2_0] 12.789572 s: ETHFW: Init ... !!!
    [MCU2_0] 12.794351 s: ZD: autox_Board_serdesCfgSgmii
    [MCU2_0] 12.794406 s: ZD: autox_Board_serdesCfgSgmii 4
    [MCU2_0] 12.796029 s: ETHFW: Warning: Using 6 random MAC address(es)
    [MCU2_0] 12.796062 s: ETHFW: Warning: Using 6 MAC address(es) from static pool
    [MCU2_0] 12.796131 s: ETHFW: Shared multicasts:
    [MCU2_0] 12.796161 s: ETHFW: 01:00:5e:00:00:01
    [MCU2_0] 12.796185 s: ETHFW: 01:00:5e:00:00:fb
    [MCU2_0] 12.796208 s: ETHFW: 01:00:5e:00:00:fc
    [MCU2_0] 12.796232 s: ETHFW: 33:33:00:00:00:01
    [MCU2_0] 12.796256 s: ETHFW: 33:33:ff:1d:92:c2
    [MCU2_0] 12.796279 s: ETHFW: 01:80:c2:00:00:00
    [MCU2_0] 12.796302 s: ETHFW: 01:80:c2:00:00:03
    [MCU2_0] 12.796322 s: ETHFW: Reserved multicasts:
    [MCU2_0] 12.796347 s: ETHFW: 01:80:c2:00:00:0e
    [MCU2_0] 12.796370 s: ETHFW: 01:1b:19:00:00:00
    [MCU2_0] 12.796399 s: ETHFW: CPSW recovery is not enabled
    [MCU2_0] 12.796424 s: EthFw_initMcm EnetMcm_init
    [MCU2_0] 12.796496 s: EthFw_initMcm EnetMcm_init done
    [MCU2_0] 12.796527 s: EthFw_initMcm EnetMcm_getCmdIf done
    [MCU2_0] 12.796570 s: EnetMcm: CPSW_9G on MAIN NAVSS
    [MCU2_0] 12.806960 s: EthFw_initLinkArgs into macPort=3
    [MCU2_0] 12.807001 s: EthFwBoard_findPortCfg
    [MCU2_0] 12.807034 s: EthFwBoard_findPortCfg chk port 0 3
    [MCU2_0] 12.807064 s: EthFwBoard_findPortCfg chk port 1 3
    [MCU2_0] 12.807094 s: EthFwBoard_findPortCfg chk port 3 3
    [MCU2_0] 12.807126 s: EthFw_initLinkArgs into macPort=3 status 0
    [MCU2_0] 12.807158 s: EthFw_initLinkArgs done i=1 macPort=3
    [MCU2_0] 12.807347 s: get SGMII portNum 3, force set is sgmiiStatus.bIsLinkUp =1
    [MCU2_0] 12.807505 s: CpswMacPort_open status : 0
    [MCU2_0] 12.807557 s: CPSW_MACPORT_IOCTL_GET_SGMII_LINK_STATUS *linkUp = CpswMacPort_getSgmiiStatus(sgmiiRegs, macPort) =0
    [MCU2_0] 12.807618 s: CPSW_MACPORT_IOCTL_GET_SGMII_LINK_STATUS *linkUp = CpswMacPort_getSgmiiStatus(sgmiiRegs, macPort) =0
    [MCU2_0] 12.807678 s: CPSW_MACPORT_IOCTL_GET_SGMII_LINK_STATUS *linkUp = CpswMacPort_getSgmiiStatus(sgmiiRegs, macPort) =0
    [MCU2_0] 12.807743 s: CPSW_MACPORT_IOCTL_GET_SGMII_LINK_STATUS *linkUp = CpswMacPort_getSgmiiStatus(sgmiiRegs, macPort) =0
    [MCU2_0] 12.807801 s: CPSW_MACPORT_IOCTL_GET_SGMII_LINK_STATUS *linkUp = CpswMacPort_getSgmiiStatus(sgmiiRegs, macPort) =0

    3.
    正在使用的 Linux 器件树是 TI EVM 中预构建的器件树。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    您能否请检查 CTRL MMR 寄存器组中的 SERDES 通道 CTRL 寄存器、以检查是否为 CPSW 端口或其他功能配置了串行器/解串器通道。  

    此致、  

    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Sudheer
    root@j784s4-evm:~# devmem2 0x104094
    /dev/mem 已打开。
    映射到地址 0xffffb2d1f000 的存储器。
    读取地址 0x00104094 (0xffffb2d1f094):0x00000000

    0010 4094h 32 4094h CFG0 CTRL_MMR_CFG0_SERDES1_LN1_CTRL 31:2 保留
    0010 4094h 32 4094h CFG0 CTRL_MMR_CFG0_SERDES1_LN1_CTRL 1:0 SERDES1_LN1_CTRL_LANE_FUNC_SEL
    选择 SERDES1 通道 1 功能
    字段值(其他值为保留值):
    2'b00
     

    root@j784s4-evm:~# devmem2 0x104050
    /dev/mem 已打开。
    映射到地址 0xffffa8a71000 的存储器。
    读取地址 0x00104050 (0xffa8a71050):0x00000003

    0010 4050hCTRL_MMR_CFG0_ENET4_CTRL    

    2:0 ENET4_CTRL_PORT_MODE_SEL

    字段值(其他值为保留值):
    3'b000-GMII/MII(不支持)
    3'b001-RMII(不支持)
    3'b010-RGMII(不支持)
    3'b011-SGMII
    3'b100-QSGMII
    3'b101-USXGMII/XFI
    3'b110-QSGMII_SUB
    3'b111-保留

    此致、  
    6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    让我在下周初查看并回复您。  

    此致、  

    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Sudheer
      

    Board_STATUS Board_CfgSgmii_serdes1(void)
    {
        CSL_SerdesResult result;
        CSL_SerdesLaneEnableStatus laneRetVal = CSL_SERDES_LANE_ENABLE_NO_ERR;
        CSL_SerdesLaneEnableParams serdesLane0EnableParams  = {0};
        memset(&serdesLane0EnableParams, 0, sizeof(serdesLane0EnableParams));
    
        /* SGMII Config */
        serdesLane0EnableParams.serdesInstance    = (CSL_SerdesInstance)CSL_TORRENT_SERDES1;
        serdesLane0EnableParams.baseAddr          = CSL_WIZ16B8M4CT3_1_WIZ16B8M4CT3_BASE;
        serdesLane0EnableParams.refClock          = CSL_SERDES_REF_CLOCK_100M; // CSL_SERDES_REF_CLOCK_156p25M; //CSL_SERDES_REF_CLOCK_100M;
        serdesLane0EnableParams.refClkSrc         = CSL_SERDES_REF_CLOCK_INT0;  //CSL_SERDES_REF_CLOCK_INT1;//CSL_SERDES_REF_CLOCK_INT0;
        serdesLane0EnableParams.linkRate          = CSL_SERDES_LINK_RATE_1p25G;//CSL_SERDES_LINK_RATE_3p125G;//CSL_SERDES_LINK_RATE_1p25G;
        serdesLane0EnableParams.numLanes          = 0x1;
        serdesLane0EnableParams.laneMask          = 0x2;
        serdesLane0EnableParams.SSC_mode          = CSL_SERDES_NO_SSC;
        serdesLane0EnableParams.phyType           = CSL_SERDES_PHY_TYPE_SGMII; //CSL_SERDES_PHY_TYPE_XAUI;//CSL_SERDES_PHY_TYPE_SGMII;
        serdesLane0EnableParams.operatingMode     = CSL_SERDES_FUNCTIONAL_MODE;
        serdesLane0EnableParams.phyInstanceNum    = 0;//BOARD_SERDES_LANE_SELECT_CPSW;
        serdesLane0EnableParams.pcieGenType        = CSL_SERDES_PCIE_GEN3;
    
        serdesLane0EnableParams.laneCtrlRate[0]   = CSL_SERDES_LANE_FULL_RATE;
        serdesLane0EnableParams.loopbackMode[0]   = CSL_SERDES_LOOPBACK_DISABLED;
    
        serdesLane0EnableParams.laneCtrlRate[1]   = CSL_SERDES_LANE_FULL_RATE;
        serdesLane0EnableParams.loopbackMode[1]   = CSL_SERDES_LOOPBACK_DISABLED;
    
        CSL_serdesPorReset(serdesLane0EnableParams.baseAddr);
            /* Select the IP type, IP instance num, Serdes Lane Number */
        CSL_serdesIPSelect(CSL_CTRL_MMR0_CFG0_BASE,
                           serdesLane0EnableParams.phyType,
                           serdesLane0EnableParams.phyInstanceNum,
                           serdesLane0EnableParams.serdesInstance,
                           1U);
        result = CSL_serdesRefclkSel(CSL_CTRL_MMR0_CFG0_BASE,
                                     serdesLane0EnableParams.baseAddr,
                                     serdesLane0EnableParams.refClock,
                                     serdesLane0EnableParams.refClkSrc,
                                     serdesLane0EnableParams.serdesInstance,
                                     serdesLane0EnableParams.phyType);
        if (result != CSL_SERDES_NO_ERR)
        {
            return BOARD_FAIL;
        }
        /* Assert PHY reset and disable all lanes */
        CSL_serdesDisablePllAndLanes(serdesLane0EnableParams.baseAddr, serdesLane0EnableParams.numLanes, serdesLane0EnableParams.laneMask);
        /* Load the Serdes Config File */
        result = CSL_serdesEthernetInit(&serdesLane0EnableParams);
        /* Return error if input params are invalid */
        if (result != CSL_SERDES_NO_ERR)
        {
            return BOARD_FAIL;
        }
        /* Common Lane Enable API for lane enable, pll enable etc */
        laneRetVal = CSL_serdesLaneEnable(&serdesLane0EnableParams);
        if (laneRetVal != 0)
        {
            return BOARD_FAIL;
        }
        return BOARD_SOK;
    }
    static void EthFwBoard_configTorrentClks(void)
    {
        uint32_t moduleId;
        uint32_t clkId;
        uint32_t clkRateHz;
    
        moduleId  = TISCI_DEV_SERDES_10G2;
        clkId     = TISCI_DEV_SERDES_10G2_CORE_REF_CLK;
        clkRateHz = 100000000U;
        EnetAppUtils_clkRateSet(moduleId, clkId, clkRateHz);
    
        EnetAppUtils_setDeviceState(moduleId, TISCI_MSG_VALUE_DEVICE_SW_STATE_ON, 0U);
    }

     
    关于:PROCESSOR-SDK-J784S4:需要将 ETHFW 配置从 1G 更改为 2.5G、因为 PHY 支持 2.5G 

      我遵循了此修改、但没有链路接通。
      如何修改此参数以支持 2.5Gbps 速率?
      还需要修改哪些内容?

     此致、  

     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    对于 2.5Gbps、您需要在串行器/解串器侧使用 156.25MHz 时钟。  

    上述配置映射 100MHz 的串行器/解串器时钟。

    此致、  

    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Sudheer
     如果开关侧设置为 1Gbps、则串行器/解串器可以以 1Gbps 建立链路。 但是、当交换机更改为 2.5Gbps 并相应地调整配置时、无法建立链路

       

          /* SGMII Config */
    serdesLaneEnableParams.serdesInstance = (CSL_SerdesInstance)CSL_TORRENT_SERDES1;
    serdesLaneEnableParams.baseAddr = CSL_WIZ16B8M4CT3_1_WIZ16B8M4CT3_BASE;
    serdesLaneEnableParams.refClock = CSL_SERDES_REF_CLOCK_156p25M; //CSL_SERDES_REF_CLOCK_100M;
    serdesLaneEnableParams.refClkSrc = CSL_SERDES_REF_CLOCK_INT1; //CSL_SERDES_REF_CLOCK_INT1;
    serdesLaneEnableParams.linkRate = CSL_SERDES_LINK_RATE_3p125G; //CSL_SERDES_LINK_RATE_1p25G;
    serdesLaneEnableParams.numLanes = 1U;
    serdesLaneEnableParams.laneMask = laneMask;
    serdesLaneEnableParams.SSC_mode = CSL_SERDES_NO_SSC;
    serdesLaneEnableParams.phyType = CSL_SERDES_PHY_TYPE_XAUI; //CSL_SERDES_PHY_TYPE_SGMII;
    serdesLaneEnableParams.operatingMode = CSL_SERDES_FUNCTIONAL_MODE;
    serdesLaneEnableParams.phyInstanceNum = 0;
    serdesLaneEnableParams.pcieGenType = CSL_SERDES_PCIE_GEN3;

     
    此致、  

     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    您可以将 refClkSrc 使用为 CSL_SERDES_REF_Clock_INT0

    您必须在 ethfw/utils/board/board/evm/文件夹的 board_j784s4_evm.c 文件中将 soc 时钟配置为 156.25MHz。  

     如果开关侧设置为 1Gbps、则 SerDes 可以建立速率为 1Gbps 的链路

    您指的是交换机连接到 MAC? 如果是、串行器/解串器的时钟设置很重要。  

    此致、  

    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Sudheer
      
    这是正确的配置吗? 我已经测试过、但无法建立链路。

    serdesLaneEnableParams.serdesInstance =(CSL_SerdesInstance) CSL_torrent_SERDES1;
    serdesLaneEnableParams.baseAddr = CSL_WIZ16B8M4CT3_1_WIZ16B8M4CT3_BASE;//
    serdesLaneEnableParams.refclock = CSL_SERDES_REF_clock_156p25M;//
    serdesLaneEnableParams.refClkSrc = CSL_SERDES_REF_CLOCK_INT0
    serdesLaneEnableParams.linkRate = CSL_SERDES_LINK_RATE_3p125G;
    serdesLaneEnableParams.numLanes = 1U;
    serdesLaneEnableParams.laneMask = laneMask;
    serdesLaneEnableParams.ssc_mode = CSL_SERDES_NO_SSC;
    serdesLaneEnableParams.phyType = CSL_SERDES_PHY_TYPE_XAUI;
    serdesLaneEnableParams.operatingMode = CSL_SERDES_Functional_mode;
    serdesLaneEnableParams.phyInstanceNum = 0;
    serdesLaneEnableParams.pcieGenType = CSL_SERDES_PCIe_Gen3;


    此致、  
     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    这是正确的配置吗? 我已经测试过它、但它无法建立链接。

    上述 SerDes 配置对于 XAUI 是正确的。

    从 ethfw/utils/board/j784s4/board_j784s4_evm.c src 文件中的串行器/解串器时钟设置如何  
    XAUI 的时钟设置必须如下所示。


    另外、确保已启用开关侧 XAUI/2.5G 链路设置。

    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好
    更改为 156.25MHz 后、发生了错误。

    moduleId = TISCI_SERDES_10G2;
    clkId = TISCI_SERDES_10G2_CORE_REF_CLK;
    clkRateHz = 156250000U;//100000U;
    EnetAppUtils_clkRateSet (moduleIdclkId、clkRateHz);
    EnetAppUtils_setDeviceState (moduleId、TISCI_MSG_VALUE_DEVICE_SW_STATE_ON0U);


    [MCU2_0] 13.268010 s:EthFwBoard_configTorrentClks
    [MCU2_0] 13.269002 s:时钟 ID = 6 时 PMLIBClkRateSet 失败
    [MCU2_0] 13.269045 s:断言@行:188 在 enet_apputils_k3.c 中:BFALSE:失败!!



    此致、  
     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    [quote userid=“464063" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1552878/tda4vh-q1-how-should-i-troubleshoot-a-link-up-failure-issue/5983743
    moduleId = TISCI_SERDES_10G2;
    clkId = TISCI_SERDES_10G2_CORE_REF_CLK;
    clkRateHz = 156250000U;//100000U;
    [/报价]

    您需要根据连接使用 SerDes1、如下所示。

    moduleId  = TISCI_SERDES_10G1;
    clkId  = TISIC_DEV_SERDES_10G1_CORE_REF_CLK;

    在 TI EVM 上、我们只有网络接口的 SerDes2 引脚排列、因此上面我分享的是 SerDes2 引脚排列。

    此致、
    Sudheer
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、
    我昨天已经进行了测试、得到了相同的误差。

    moduleId  = TISCI_SERDES_10G1;
    clkId  = TISIC_DEV_SERDES_10G1_CORE_REF_CLK;
    clkRateHz  =  156250000U;//100000U;
    EnetAppUtils_clkRateSet (moduleId、 clkId、clkRateHz );
    EnetAppUtils_setDeviceState (moduleId、TISCI_MSG_VALUE_DEVICE_SW_STATE_ON 、 0U);

    [MCU2_0] 13.268010 s:EthFwBoard_configTorrentClks
    [MCU2_0] 13.269002 s:时钟 ID = 6 时 PMLIBClkRateSet 失败
    [MCU2_0] 13.269045 s:断言@行:188 在 enet_apputils_k3.c 中:BFALSE:失败!!

    此致、  
     6 月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    [MCU2_0] 13.268010 s:EthFwBoard_configTorrentClks
    [MCU2_0] 13.269002 s:时钟 ID = 6 时 PMLIBClkRateSet 失败
    [MCU2_0] 13.269045 s:断言@行:188 在 enet_apputils_k3.c 中:BFALSE:失败!!

    您能否确认、Serdes1 在 u-boot 处(即在 MCU2_0 拥有 Serdes1 之前)已启用? 默认情况下、Serdes1 在 U-Boot 中启用、以便实现 TI SDK 中的 PCIe 功能。

    若要确认这一点、您是否可以仅通过调用以下项而不进行检查 EnetAppUtils_clkRateSet  阻抗是什么?
    EnetAppUtils_setDeviceState (moduleId、TISCI_MSG_VALUE_DEVICE_SW_STATE_ON 、 0U);
    如果上述请求失败、则 SerDES1 已经启用并由另一个内核(主要是 A72 内核)拥有。

    对于 SerDes2、我们未观察到任何错误、因为它仅在 MCU2_0 ETHFW 中启用。

    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

      仅调用 EnetAppUtils_setDeviceState (moduleId、TISCI_MSG_VALUE_DEVICE_SW_STATE_ON 、 0U) 时未报告错误;
    此致、  
     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

      仅调用 EnetAppUtils_setDeviceState (moduleId、TISCI_MSG_VALUE_DEVICE_SW_STATE_ON 、 0U) 时未报告错误;

    您能否共享 U-Boot 和 Linux 日志以检查 Serdes1 是否已启用?

    此外、您可以使用以下内容检查一次吗?
    EnetAppUtils_setDeviceState (moduleId、TISCI_MSG_VALUE_DEVICE_HW_STATE_OFF、 0U);


    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好
     SerDes1.  
     称为  EnetAppUtils_setDeviceState (moduleId、TISCI_MSG_VALUE_DEVICE_HW_STATE_OFF、 0U);
    MCU2_0 日志:

    [MCU2_0] 13.001808 s:ETHFW:init ...!!
    [MCU2_0] 13.002277 s:EthFwBoard_configTorrentClks 2.5Gbps 测试。
    [MCU2_0] 13.002324s:TISCI_DEV_SERDES_10G1 405 clkId 6 clkRateHz 156250000
    [MCU2_1] 4.179808 s:cio:init ...完成!!
    [MCU2_1] 4.179859 s:### CPU 频率= 1000000Hz
    [MCU2_1] 4.179883 s:CPU 正在运行 FreeRTOS
    [MCU2_1] 4.179899 s:app:init ...!!
    [MCU2_1] 4.179930 s:SCICLIENT:init ...!!
    [MCU2_1] 4.180070 s:SCICLIENT:DMSC FW 版本[9.0.6-
    ...
    C7x_4 ] 13.012821 s:IPC:回波状态:mpu1_0[x] MCU2_0[x] MCU2_1[P] mcu3_0[P] mcu3_1[P] mcu4_0[x] mcu4_1[P] c7x_1[P] c7x_2[P] c7x_3[P] c7x_4[s]
    [C7x_4 ] 13.029930 s:IPC:回波状态:mpu1_0[x] MCU2_0[x] MCU2_1[P] mcu3_0[P] mcu3_1[P] mcu4_0[P] mcu4_1[P] c7x_1[P] c7x_2[P] c7x_3[P] c7x_4[S]
    [MCU2_0] 29.163640 s:【致命】:内核已中止!!
    [MCU2_0] DFAR = 0x81a6 DFSR = 0x8
    [MCU2_0] 29.163675s:IFAR = 0x0 IFSR = 0x0
    [MCU2_0] 29.163693 s:CPSR =0x20080197 SP =0xa3ffffffe0
    [MCU2_0] 29.163713s:LR =0x2008001f R0 =0x2008001f
    [MCU2_0] 29.163732s:R1 =0x0 R2 =0x81a6
    [MCU2_0] 29.163748 s:R3 =0x100 R4 =0xa32f93ff
    [MCU2_0] 29.163765s:R5 = 0x81a6 R6 = 0x2
    [MCU2_0] 29.163781s:R7 = 0xa2fcdb78 R8 = 0x4a
    [MCU2_0] 29.163798s:R9 =0xffffffff R10 =0xa2100000
    [MCU2_0] 29.163817s:R11 =0xa33e33b4 R12 =0xa32f93f8

    Uboot 内核日志:|
    e2e.ti.com/.../uboot_5F00_kernel.log

      我们需要 sedser1 lane0 和 lane2 来连接到在 A72 Linux 上运行的 PCIe 器件。
      我们如何将 2.5Gbps 的 sedser1 lane1 SGMII 路由到交换机?
    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    [MCU2_0] 13.002277 s:EthFwBoard_configTorrentClks 2.5Gbps 测试。
    [MCU2_0] 13.002324s:TISCI_DEV_SERDES_10G1 405 clkId 6 clkRateHz 156250000

    您如何在不设置 ETHFW 的 SerDes1 时钟的情况下获得上述打印?

      我们需要 sedser1 lane0 和 lane2 来连接到在 A72 Linux 上运行的 PCIe 器件。
      我们如何以 2.5Gbps 的速率将 sedser1 lane1 SGMII 路由到交换机?

    如果您需要使用 Linux 和 RTOS SGMII 的 PCIe + 2.5G SGMII 和 PCIe、则引导加载程序必须配置 SerDes。
    U-boot 串行器/解串器不支持 2.5G XAUI 配置。

    上述组合无法从 TI SDK 中实现。

    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    1.  在没有设置 ETHFW 的 SerDes1 时钟的情况下,您如何获得上述打印?

    日志中读取我提供的信息。
    这是否意味着 u-boot 已经配置了 Serdes1?

    2.  
    如果您需要使用 Linux 和 RTOS SGMII 的 PCIe + 2.5G SGMII 和 PCIe、则引导加载程序必须配置 SerDes。
    U-boot 串行器/解串器不支持 2.5G XAUI 配置。
    上述组合无法从 TI SDK 中实现。


    如果我们在 u-boot 中禁用了 SerDes 配置、并在 RTOS 中将 lane1 配置为 SGMII 2.5Gbps、Linux 是否仍然可以在 lane0 和 lane2 上支持 PCIe? 或者、PCIe 仅在 SGMII1 为 1Gbps 时有效吗?

    Serdes2 lane0 和 lane1 是否以 SGMII 1Gbps 运行、Serdes2 lane2 和 lane3 以 10Gbps XFI 运行、是否所有这些配置都在 RTOS 下受支持?

     此致、  
     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    Serdes2 lane0 和 lane1 以 SGMII 1Gbps 运行、Serdes2 lane2 和 lane3 以 10Gbps XFI 运行、所有这些配置是否在 RTOS 下受支持?

     TI RTOS SDK 支持 SGMII + USXGMI 的串行器/解串器多链路配置。

    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我将在 EVM 上使用预编译的 U-Boot。 如何在 U-Boot 中禁用 SerDes1 配置?
    我可以在 DTS 中将其禁用吗?

     此致、  
     6 月
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我正在使用 EVM 上的预编译 U-Boot。 如何在 U-Boot 中禁用 SerDes1 配置?
    我可以在 DTS 中禁用它吗?

    是的、您可以在 DTS 文件中将状态设置为禁用。

    此外、还应在 Linux dts 文件中禁用以确保安全。

    此致、
    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

      您能给我一个有关串行器/解串器多链路配置的具体示例吗?

     此致、  
     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

     您能给我一个有关串行器/解串器多链路配置的具体示例

    您能否分享预期的组合、RTOS SDK 仅支持少数组合。  

    Linux 支持更多组合。  

    此外、您要在何处配置串行器/解串器多连接、例如 U-BOOT/Linux/RTOS?  

    此致、  

    Sudheer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  
    RTOS 配置解串器。
    具有两个通道的串行器/解串器支持 1Gbps 和 2.5Gbps 的 SGMII。
    具有两个通道的串行器/解串器支持 1Gbps 和 10Gbps 的 SGMII。
     此致、  
     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好  Sudheer

    cpsw9g<--> SGMII 2.5Gbps<-->交换机之间的链路在通电或重新引导期间未能成功出现。

    如何解决此问题?

    此致、  
     6 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    cpsw9g<--> SGMII 2.5Gbps<-->交换机之间的链路在通电或重新启动期间未能成功启动。

    检查开关侧配置、并确保 不应从配置 XAUI 接口中配置带有 156.25MHz 时钟和串行器/解串器的 CPSW9G 侧
    U-boot 或 Linux。

    具有两个通道的 SerDes 支持 1Gbps 和 2.5Gbps 的 SGMII。

    不受开箱即用 SDK 支持。 需要一个补丁来解决这个问题。
    补丁:
    e2e.ti.com/.../SerDes4_5F00_Multilink_5F00_configuration_5F00_L0_5F00_SGMII_5F00_L3_5F00_XAUI.zip

    具有两个通道的 SerDes 支持 1Gbps 和 10Gbps 的 SGMII。

    有关串行器/解串器多链路配置、请参阅下面的。

    static Board_STATUS Board_Cfg_SerDes_1(void)
    {
        CSL_SerdesResult result;
        uint32_t laneNum;
        //CSL_SerdesLaneEnableStatus laneRetVal = CSL_SERDES_LANE_ENABLE_NO_ERR;
        CSL_SerdesLaneEnableParams serdesLaneEnableParams  = {0};
        CSL_SerdesLaneEnableParams serdesLaneEnableParams1  = {0};
        CSL_SerdesMultilink multiLinkId = CSL_SERDES_USXGMII_SGMII_MULTILINK;
        CSL_SerdesInstance serdesInstanceId = CSL_TORRENT_SERDES2;
    
        memset(&serdesLaneEnableParams, 0, sizeof(serdesLaneEnableParams));
        memset(&serdesLaneEnableParams1, 0, sizeof(serdesLaneEnableParams1));
    
        /* serdes lane 3 USXGMII */
        serdesLaneEnableParams.serdesInstance    = (CSL_SerdesInstance)CSL_TORRENT_SERDES2;
        serdesLaneEnableParams.baseAddr          = CSL_WIZ16B8M4CT3_2_WIZ16B8M4CT3_BASE;
        serdesLaneEnableParams.refClock          = CSL_SERDES_REF_CLOCK_156p25M;
        serdesLaneEnableParams.refClkSrc         = CSL_SERDES_REF_CLOCK_INT1;
        serdesLaneEnableParams.linkRate          = CSL_SERDES_LINK_RATE_10p3125G;
        serdesLaneEnableParams.numLanes          = 1;
        serdesLaneEnableParams.laneMask          = 0x4; /* Lane 2 is USXGMII */
        serdesLaneEnableParams.SSC_mode          = CSL_SERDES_NO_SSC;
        serdesLaneEnableParams.phyType           = CSL_SERDES_PHY_TYPE_USXGMII;
        serdesLaneEnableParams.pcieGenType       = CSL_SERDES_PCIE_GEN3;
        serdesLaneEnableParams.operatingMode     = CSL_SERDES_FUNCTIONAL_MODE;
        serdesLaneEnableParams.phyInstanceNum    = 1;
    
        for(laneNum=0;laneNum<CSL_SERDES_MAX_LANES;laneNum++)
        {
            if ((serdesLaneEnableParams.laneMask & (1<<laneNum))!=0)
            {
                serdesLaneEnableParams.laneCtrlRate[laneNum] = CSL_SERDES_LANE_FULL_RATE;
                serdesLaneEnableParams.loopbackMode[laneNum] = CSL_SERDES_LOOPBACK_DISABLED;
            }
        }
    
        /* serdes lane 2 SGMII */
        serdesLaneEnableParams1.serdesInstance    = (CSL_SerdesInstance)CSL_TORRENT_SERDES2;
        serdesLaneEnableParams1.baseAddr          = CSL_WIZ16B8M4CT3_2_WIZ16B8M4CT3_BASE;
        serdesLaneEnableParams1.refClock          = CSL_SERDES_REF_CLOCK_100M;
        serdesLaneEnableParams1.refClkSrc         = CSL_SERDES_REF_CLOCK_INT0;
        serdesLaneEnableParams1.linkRate          = CSL_SERDES_LINK_RATE_1p25G;
        serdesLaneEnableParams1.numLanes          = 1;
        serdesLaneEnableParams1.laneMask          = 0x8; /* Lane 3 is SGMII */
        serdesLaneEnableParams1.SSC_mode          = CSL_SERDES_NO_SSC;
        serdesLaneEnableParams1.phyType           = CSL_SERDES_PHY_TYPE_SGMII;
        serdesLaneEnableParams1.pcieGenType       = CSL_SERDES_PCIE_GEN3;
        serdesLaneEnableParams1.operatingMode     = CSL_SERDES_FUNCTIONAL_MODE;
        serdesLaneEnableParams1.phyInstanceNum    = 1;
    
        for(laneNum=0;laneNum<CSL_SERDES_MAX_LANES;laneNum++)
        {
            if ((serdesLaneEnableParams1.laneMask & (1<<laneNum))!=0)
            {
                serdesLaneEnableParams1.laneCtrlRate[laneNum] = CSL_SERDES_LANE_FULL_RATE;
                serdesLaneEnableParams1.loopbackMode[laneNum] = CSL_SERDES_LOOPBACK_DISABLED;
            }
        }
    
        CSL_serdesPorReset(serdesLaneEnableParams.baseAddr);
    
        /* Select the IP type, IP instance num, Serdes Lane Number */
        CSL_serdesIPSelect(CSL_CTRL_MMR0_CFG0_BASE,
            serdesLaneEnableParams.phyType,
            serdesLaneEnableParams.phyInstanceNum,
            serdesLaneEnableParams.serdesInstance,
            2);
    
        CSL_serdesIPSelect(CSL_CTRL_MMR0_CFG0_BASE,
    
            serdesLaneEnableParams1.phyType,
            serdesLaneEnableParams1.phyInstanceNum,
            serdesLaneEnableParams1.serdesInstance,
            3);
    
        result = CSL_serdesRefclkSel(CSL_CTRL_MMR0_CFG0_BASE,
                                     serdesLaneEnableParams1.baseAddr,
                                     serdesLaneEnableParams1.refClock,
                                     serdesLaneEnableParams1.refClkSrc,
                                     serdesLaneEnableParams1.serdesInstance,
                                     serdesLaneEnableParams1.phyType);
    
        if (result != CSL_SERDES_NO_ERR)
        {
            return BOARD_FAIL;
        }
    
        result = CSL_serdesRefclkSel1(CSL_CTRL_MMR0_CFG0_BASE,
                                    serdesLaneEnableParams.baseAddr,
                                    serdesLaneEnableParams.refClock,
                                    serdesLaneEnableParams.refClkSrc,
                                    serdesLaneEnableParams.serdesInstance,
                                    serdesLaneEnableParams.phyType);
    
        if (result != CSL_SERDES_NO_ERR)
        {
            return BOARD_FAIL;
        }
    
        /* Load the Serdes Config File */
           result = CSL_serdesMultiLinkInit(multiLinkId,
                                         serdesInstanceId,
                                         &serdesLaneEnableParams,
                                         &serdesLaneEnableParams1);
    
        /* Return error if input params are invalid */
        if (result != CSL_SERDES_NO_ERR)
        {
            return BOARD_FAIL;
        }
    
        /* Lane Enable API for lane enable, pll enable etc */
        for(laneNum=0;laneNum<CSL_SERDES_MAX_LANES;laneNum++)
        {
            if ((serdesLaneEnableParams.laneMask & (1<<laneNum))!=0)
            {
                CSL_serdesEnableLanes(serdesLaneEnableParams.baseAddr,
                                    laneNum, serdesLaneEnableParams.phyType,
                                    serdesLaneEnableParams.linkRate,
                                    serdesLaneEnableParams.operatingMode);
            }
        }
    
        for(laneNum=0;laneNum<CSL_SERDES_MAX_LANES;laneNum++)
        {
            if ((serdesLaneEnableParams1.laneMask & (1<<laneNum))!=0)
            {
                CSL_serdesEnableLanes(serdesLaneEnableParams1.baseAddr,
                                    laneNum, serdesLaneEnableParams1.phyType,
                                    serdesLaneEnableParams1.linkRate,
                                    serdesLaneEnableParams1.operatingMode);
            }
        }
    
        /* Release PHY Reset*/
        CSL_serdesReleaseReset(serdesLaneEnableParams.baseAddr);
    
        return BOARD_SOK;
    }



    此致、
    Sudheer