工具/软件:
您好、
我有一个基于 EVM 的定制板。
在 EVM 上、MAC 端口 1、3、4、5 配置为 QSGMII 并连接到 ENET 扩展板。
在此定制板上、MAC 端口 8 通过 SGMII 连接到 PHY 88M222x。
我想快速修复、所以我没有创建新的电路板、而是尽可能重复使用 j784s4evm。
我通读了移植指南、这是相应的修改:
1. 选择以太网端口接口类型
--- a/pdk_j784s4_09_00_01_04/packages/ti/board/src/j784s4_evm/board_ethernet_config.c +++ b/pdk_j784s4_09_00_01_04/packages/ti/board/src/j784s4_evm/board_ethernet_config.c @@ -237,19 +237,25 @@ static void Board_ethPhyExtendedRegWrite(uint32_t baseAddr, static Board_STATUS Board_ethConfigCpsw9gEnet1(void) { Board_STATUS status = BOARD_SOK; uint8_t portNum; /* Configure the CPSW9G ENET1 QSGMII ports */ for(portNum = 0; portNum < BOARD_CPSW9G_PORT_MAX; portNum++) { if ( 1U == portNum || 5U == portNum || - 6U == portNum || - 7U == portNum ) + 6U == portNum) { /* These ports are ununsed by default ENET1 board configuration */ continue; } + else if (7U == portNum) + { + status = Board_cpsw9gMacModeConfig(portNum, SGMII); + } else if (BOARD_CPSW9G_ENET1_QGMII_PORTNUM == portNum) { status = Board_cpsw9gMacModeConfig(portNum, QSGMII); @@ -264,6 +270,7 @@ static Board_STATUS Board_ethConfigCpsw9gEnet1(void) return BOARD_FAIL; } } return status; }
2. 通过 SciClient 启用模块
用于启用 CPSW9G 模块、因此 无需更改
3. Pinmux 设置
MDIO/MDC 引脚、因此无需更改
4. 以太网 PHY 初始化
PHY RESET 引脚在上电时复位、因此无需更改。
5. SerDes 配置
我重复使用 EVM SGSgmii、但设置 Board_Cfg。
--- a/pdk_j784s4_09_00_01_04/packages/ti/board/src/j784s4_evm/board_serdes_cfg.c +++ b/pdk_j784s4_09_00_01_04/packages/ti/board/src/j784s4_evm/board_serdes_cfg.c @@ -166,6 +166,9 @@ static Board_STATUS Board_CfgQsgmii(uint32_t boardID) { laneNum = BOARD_SERDES_SGMII_ENET1_LANE_NUM; laneMask = BOARD_SERDES_SGMII_ENET1_LANE_MASK; +^M + laneNum = BOARD_SERDES_SGMII_ENET2_LANE_NUM;^M + laneMask = BOARD_SERDES_SGMII_ENET2_LANE_MASK;^M } else { @@ -180,14 +183,14 @@ static Board_STATUS Board_CfgQsgmii(uint32_t boardID) serdesLaneEnableParams.baseAddr = CSL_WIZ16B8M4CT3_2_WIZ16B8M4CT3_BASE; serdesLaneEnableParams.refClock = CSL_SERDES_REF_CLOCK_100M; serdesLaneEnableParams.refClkSrc = CSL_SERDES_REF_CLOCK_INT0; - serdesLaneEnableParams.linkRate = CSL_SERDES_LINK_RATE_5G; + serdesLaneEnableParams.linkRate = CSL_SERDES_LINK_RATE_1p25G;^M serdesLaneEnableParams.numLanes = 1U; serdesLaneEnableParams.laneMask = laneMask; serdesLaneEnableParams.SSC_mode = CSL_SERDES_NO_SSC; - serdesLaneEnableParams.phyType = CSL_SERDES_PHY_TYPE_QSGMII; + serdesLaneEnableParams.phyType = CSL_SERDES_PHY_TYPE_SGMII;^M serdesLaneEnableParams.operatingMode = CSL_SERDES_FUNCTIONAL_MODE; serdesLaneEnableParams.phyInstanceNum = BOARD_SERDES_LANE_SELECT_CPSW; - serdesLaneEnableParams.pcieGenType = CSL_SERDES_PCIE_GEN4; + serdesLaneEnableParams.pcieGenType = CSL_SERDES_PCIE_GEN3;^M serdesLaneEnableParams.laneCtrlRate[laneNum] = CSL_SERDES_LANE_FULL_RATE; serdesLaneEnableParams.loopbackMode[laneNum] = CSL_SERDES_LOOPBACK_DISABLED;
6. CPSW 时钟配置
没有变化。
7. MAC 地址池
没有变化。
8. MAC 端口和 PHY 配置
--- a/ethfw/utils/board/src/j784s4/board_j784s4_evm.c +++ b/ethfw/utils/board/src/j784s4/board_j784s4_evm.c @@ -238,6 +238,20 @@ static EthFwBoard_MacPortCfg gEthFw_qenetMacPortCfg[] = .sgmiiMode = ENET_MAC_SGMIIMODE_SGMII_WITH_PHY, .linkCfg = { ENET_SPEED_AUTO, ENET_DUPLEX_AUTO }, }, + { /* "P3" */ + .macPort = ENET_MAC_PORT_8, + .mii = { ENET_MAC_LAYER_GMII, ENET_MAC_SUBLAYER_SERIAL }, + .phyCfg = + { + .phyAddr = 1U, + .isStrapped = false, + .skipExtendedCfg = false, + .extendedCfg = NULL, + .extendedCfgSize = 0U, + }, + .sgmiiMode = ENET_MAC_SGMIIMODE_SGMII_WITH_PHY, + .linkCfg = { ENET_SPEED_AUTO, ENET_DUPLEX_AUTO }, + }, }; diff --git a/vision_apps/utils/ethfw/src/app_ethfw_freertos.c b/vision_apps/utils/ethfw/src/app_ethfw_freertos.c index bbdfd642..a9aad949 100644 --- a/vision_apps/utils/ethfw/src/app_ethfw_freertos.c +++ b/vision_apps/utils/ethfw/src/app_ethfw_freertos.c @@ -150,6 +150,7 @@ static Enet_MacPort gEthAppPorts[] = ENET_MAC_PORT_3, /* QSGMII sub */ ENET_MAC_PORT_4, /* QSGMII sub */ ENET_MAC_PORT_5, /* QSGMII sub */ + ENET_MAC_PORT_8 #endif }; @@ -158,19 +159,7 @@ static EthFw_VirtPortCfg gEthApp_virtPortCfg[] = { .remoteCoreId = IPC_MPU1_0, .portId = ETHREMOTECFG_SWITCH_PORT_0, - }, - { - .remoteCoreId = IPC_MCU2_1, - .portId = ETHREMOTECFG_SWITCH_PORT_1, - }, - { - .remoteCoreId = IPC_MPU1_0, - .portId = ETHREMOTECFG_MAC_PORT_1, - }, - { - .remoteCoreId = IPC_MCU2_1, - .portId = ETHREMOTECFG_MAC_PORT_4, - }, + } };
但 SERDES PLL 未锁定
684.610592 s: Warning: Using 6 MAC address(es) from static pool 684.610732 s: ETHFW: Shared multicasts (software fanout): 684.610759 s: 01:00:5e:00:00:01 684.610781 s: 01:00:5e:00:00:fb 684.610801 s: 01:00:5e:00:00:fc 684.610820 s: 33:33:00:00:00:01 684.610840 s: 33:33:ff:1d:92:c2 684.610860 s: 01:80:c2:00:00:00 684.610879 s: 01:80:c2:00:00:03 684.610900 s: ETHFW: Reserved multicasts: 684.610917 s: 01:80:c2:00:00:0e 684.610936 s: 01:1b:19:00:00:00 684.611073 s: EnetMcm: CPSW_9G on MAIN NAVSS 684.622237 s: PHY 1 is alive 684.623510 s: CpswMacPort_setSgmiiInterface: MAC 8: SERDES PLL is not locked 684.623549 s: CpswMacPort_setSgmiiInterface: 684.623575 s: Assertion @ Line: 2287 in src/mod/cpsw_macport.c: false
您能给我一些指导吗? 谢谢!