工具/软件:
尊敬的专家:
您能帮我解决以下有关使用 v10.02 SDK 在 AM261x-LP 上运行 gPTP (IEEE802.1AS) 示例的问题吗?
- 使用 DP83826 工业 PHY 附加电路板运行 gPTP 示例时、我看不到“Any Time Sync“?
- 在启用两个 MAC 端口的情况下运行 gPTP 示例(例如对于 AM263x 和 AM263Px)时、我会遇到 ti_board_config.c 中的一些断言)?
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.
工具/软件:
尊敬的专家:
您能帮我解决以下有关使用 v10.02 SDK 在 AM261x-LP 上运行 gPTP (IEEE802.1AS) 示例的问题吗?
在 AM261x-LP PROC E1 和 PROC E2 版本上、RMII 接口中存在已知的连接问题。 使用 DP83826 工业附加 PHY 进行测试时、建议在 100M MII 接口模式下试用。 这需要在 SDK 中进行一些基本的更改和检查。
步骤 1:在以下文件 (mcu_plus_sdk_am261x_10_02_00_15\source\networking\tns\tns-stack\tns_combase\tilld\Sitara\lldenet.c) 中、将函数 (LLDEnetGetLinkInfo ())) 替换为以下定义、以启用 MII 模式支持。
int LLDEnetGetLinkInfo(LLDEnet_t *hLLDEnet, uint8_t portNum, uint32_t *speed, uint32_t *duplex) { #if !ENET_ENABLE_PER_ICSSG EnetPhy_GenericInArgs phyInArgs; EnetMacPort_LinkCfg phyOutArgs; Enet_IoctlPrms prms; int32_t status; if ((hLLDEnet == NULL) || (speed == NULL) || (duplex == NULL)) { return LLDENET_E_PARAM; } /* Get port link state (speed & duplexity) from PHY */ phyInArgs.macPort = (Enet_MacPort)(ENET_MACPORT_NORM(portNum)); ENET_IOCTL_SET_INOUT_ARGS(&prms, &phyInArgs, &phyOutArgs); ENET_IOCTL(hLLDEnet->hEnet, hLLDEnet->coreId, ENET_RPHY_IOCTL_GET_LINK_MODE, &prms, status); #else Enet_MacPort phyInArgs;; EnetMacPort_LinkCfg phyOutArgs; Enet_IoctlPrms prms; int32_t status; if ((hLLDEnet == NULL) || (speed == NULL) || (duplex == NULL)) { return LLDENET_E_PARAM; } /* Get port link state (speed & duplexity) from PHY */ phyInArgs = (Enet_MacPort)(ENET_MACPORT_NORM(portNum)); ENET_IOCTL_SET_INOUT_ARGS(&prms, &phyInArgs, &phyOutArgs); ENET_IOCTL(hLLDEnet->hEnet, hLLDEnet->coreId, ENET_PER_IOCTL_GET_PORT_LINK_CFG, &prms, status); #endif if (status != ENET_SOK) { UB_LOG(UBL_ERROR,"Failed to get link info: %d\n", status); return LLDENET_E_IOCTL; } if (phyOutArgs.speed == ENET_SPEED_10MBIT) { *speed = 10; } else if (phyOutArgs.speed == ENET_SPEED_100MBIT) { *speed = 100; } else if (phyOutArgs.speed == ENET_SPEED_1GBIT) { *speed = 1000; } else { *speed = 0; } if (phyOutArgs.duplexity == ENET_DUPLEX_FULL) { *duplex = 1; } else { *duplex = 0; } return LLDENET_E_OK; }
步骤 2: 使用以下命令重新构建 TSN 堆栈:
# TO CLEAN gmake -sj -f makefile.am261x tsn_combase-freertos_r5f.ti-arm-clang_clean gmake -sj -f makefile.am261x tsn_gptp-freertos_r5f.ti-arm-clang_clean gmake -sj -f makefile.am261x tsn_unibase-freertos_r5f.ti-arm-clang_clean gmake -sj -f makefile.am261x tsn_uniconf-freertos_r5f.ti-arm-clang_clean # TO BUILD gmake -sj -f makefile.am261x tsn_combase-freertos_r5f.ti-arm-clang gmake -sj -f makefile.am261x tsn_gptp-freertos_r5f.ti-arm-clang gmake -sj -f makefile.am261x tsn_unibase-freertos_r5f.ti-arm-clang gmake -sj -f makefile.am261x tsn_uniconf-freertos_r5f.ti-arm-clang add PROFILE=debug flag for a debug build
步骤 3:如果使用两个 MAC 端口、请在 gptp_cpsw_app 的 example.syscfg 中确保 MAC Port-2 已启用并设置了 pinmux(您应该会看到两个端口都勾选了所有复选框)。 如果仅使用 1 个端口、请确保在 syscfg 中选择所需的端口并禁用其他端口。 在运行时、确保通过 PHY 活动日志看到 MAC 端口链路建立。
步骤 4: 在 example.syscfg 中、如果您在 ti_board_config.c 第 408 行中观察到断言、请将 MAC 地址分配更改为 MANUAL。 这表示 EEPROM 的 MAC 地址分配失败。
步骤 5: 在 example.syscfg 中、确保在 DP83826 工业附加电路板的 Enet (CPSW) pinmux 中选择了 MII 模式
第 6 步:Re 构建应用程序以使用更新的堆栈
步骤 7:使用 AM261x 进行测试。
要了解有关测试 gPTP 的更多信息、请遵循 AM261x gPTP 测试的详细常见问题解答: e2e.ti.com/.../faq-am2612-how-to-test-gptp-on-am261x-launchpad
此致、
Shaunak