工具/软件:
尊敬的专家:
您能帮我解决以下有关使用 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