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.
工具与软件:
尊敬的 Sudheer:
希望你们做得好。
不幸的是,我无法继续讨论,因为我的假期。
回到主题、我已经将 CPSW2G 默认配置更改为 IPC_MCU2_0、以更改资源分区。
编译 enet_example_utils_BareMetal、因为我未使用 FreeRTOS。 但具有与我之前遇到的关于 uDMA 通道配对失败的相同错误。
对出现此错误的可能原因有任何建议?
此致、
Hasan
您好!
TI SDK 不具有环回裸机示例。
我们只有 SDK 提供"enet_loopback_test_freertos"。
如果您已经创建了自己的应用、则需要参考 TI SDK 示例来小心。
如果您使用 TI SDK 示例、请参阅以下 E2E、其中我提到了如何为 MCU2_0进行构建。 在我的最后,它正在工作
e2e.ti.com/.../tda4vm-failed-to-open-enet-dma-rx-channel
此致、
Sudheer
尊敬的 Sudheer:
我已根据"enet_helloworld_example"(pdk_jacinto_09_01_00_22)修改了"enet_loopback_example"。 可以为 MCU1_0和 MCU2_0构建 Enet 库。 在 MCU1_0上运行示例时没有任何问题。 使用 DMA 的一切都很顺利、我能够发送和接收以太网数据包。
我遇到的错误是 UDMA 通道配对失败。
我怀疑这与 FreeRTOS 或裸机的示例构建无关。 错误是由于 MCU2_0的 uDMA 资源分配错误所致。
是否可以为 MCU2_0分配 UDMA 资源? 如果是、那么应遵循的步骤是什么?
cpsw 以太网帧发送和接收需要哪些 uDMA 资源?
期待收到您的回复。
此致、
Hasan
您好!
如下面的 E2E 中所述。
e2e.ti.com/.../tda4vm-failed-to-open-enet-dma-rx-channel
如果您遇到类似的 DMA 通道分配问题、
如果使用 hello word 示例、则需要修改资源并为 MCU2_0内核构建"enet_example_utils_BareMetal"、如果使用环回、则需要遵循上面 E2E 中的步骤。
编译示例 utils 后、需要编译实际应用程序。
如果您按照上述步骤操作、您将不会遇到任何资源问题。
如果您 对应用程序进行了一些更改、但未正确处理 make 文件、则可能会失败。
如上所述修改 rmconfig 后、最好为 BareMetal 和 FreeRTOS 编译示例实用程序、然后编译应用程序。
如果仍有问题、请与我们分享错误日志。
此致、
Sudheer
尊敬的 Sudheer:
感谢您的答复。
它将遵循建议的步骤、并会回复给您。
同时、您能否介绍 cpsw 以太网帧发送和接收所需的 uDMA 资源?
此致、
Hasan
您好!
与此同时、您能提供有关 cpsw 以太网帧传输和接收所需的 uDMA 资源的信息吗?
对于传输、您需要 Tx 通道。
对于接收、您需要 Rx 通道和 Rx 流。
对于中断、我们需要映射到运行 Enet 示例的内核(即 uDMA 的事件)的虚拟中断。
处理 Tx 和 Rx 描述符列表的环。
此致、
Sudheer
尊敬的 Sudheer:
我从"rm-cfg.c"文件(指向 e2e 票证的链接:">e2e.ti.com/.../faq-tda4vm-workflow-and-resource-allocation-build-flow-for-sysconfig-tool")中看到 、对于主 R5F 内核(在 TI PDK 中称为 MCU2_0)、RX 流仅分配给 MCU NAVSS UDMA。 没有 Rx 流分配给 主 NAVSS UDMA。 在这种情况下、 从 MCU2_0 使用主 NAVSS uDMA 进行 CPSW2G 以太网帧传输是可行的吗?
此致、
Hasan
您好!
[报价 userid="557709" url="~/support/processors-group/processors/f/processors-forum/1366075/tda4vm-enet-loopback-example-failed-to-open-enet-dma-rx-channel/5221744 #5221744"]) 对于主 R5F 内核(在 TI PDK 中称为 MCU2_0)、RX 流仅分配给 MCU NAVSS UDMA。 没有 Rx 流分配给 主 NAVSS UDMA。 在这种情况下、 MCU2_0可以 使用 main NAVSS uDMA 进行 CPSW2G 以太网帧传输?[/QUOT]主域内核可以使用 MCU NAVSS DMA、类似的 MCU 域内核可以使用主 NAVSS DMA。
此外、
对于环回示例、来自主域的 MCU2_0/MCU_21为 CPSW 使用了 MAIN NAVSS DMA。
资源的分配将由 uDMA 驱动程序负责、无需担心资源信息。
注意:
我已经在 MCU2_0上确认了 TI 的环回示例、其中的更改在下面的 E2E 中提到。
e2e.ti.com/.../tda4vm-failed-to-open-enet-dma-rx-channel
此致、
Sudheer
您好!
Sudheer 说:
我已经在 MCU2_0上确认了 TI 的环回示例、其中的更改在下面的 E2E 中提到。
e2e.ti.com/.../tda4vm-failed-to-open-enet-dma-rx-channel
您使用了哪个 PDK 版本来确认环回示例?
此致、
Hasan
您好!
[报价 userid="557709" url="~/support/processors-group/processors/f/processors-forum/1366075/tda4vm-enet-loopback-example-failed-to-open-enet-dma-rx-channel/5227360 #5227360"]Sudheer 说:
我已经在 MCU2_0上确认了 TI 的环回示例、其中的更改在下面的 E2E 中提到。
e2e.ti.com/.../tda4vm-failed-to-open-enet-dma-rx-channel
您使用了哪个 PDK 版本来确认环回示例?
[报价]我已经在 SDK 8.6上进行了测试。
对于更高的 SDK 版本、也是相同的。
此致、
Sudheer
尊敬的 Sudheer:
对于环回示例、来自主域的 MCU2_0/MCU_21为 CPSW 使用了 MAIN NAVSS DMA。
要从 MCU2_0将 MCU NAVSS DMA 用于 CPSW2G、我需要进行哪些更改?
此致、
Hasan
您好!
我们始终对主域内核使用主域 DMA、对 MCU 域内核使用 MCU DMA?
如果需要、可以尝试将 DMA 实例从 Main 从"EnetAppUtils_getNavSSInstanceId"更改为 MCU 并进行检查。
TI 建议根据 SDK 参考使用相应的域。
此致、
Sudheer
尊敬的 Sudheer:
回到最初的讨论:我已要求我无法从 MCU2_0访问 uDMA、为此、您建议对 uDMA 资源分配进行一些更改(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1349527/tda4vm-failed-to-open-enet-dma-rx-channel)。 我收到之前的错误、并附上 UART 日志的屏幕截图供您参考。
您能否建议失败的可能原因以及需要采取哪些措施来解决该错误?
期待收到您的回复。
此致、
Hasan
您好!
您能否分享您的更改和构建命令。
我已经对 CPSW2G 的 MCU2_0上的环回进行了测试、并分享了在与您共享的 e2e 中进行编译和定序的步骤。
如果您要创建自己的应用并使用不同的 uDMA 实例、则必须注意所有必需操作、因为这可以参考 TI SDK 中的现有示例。
此致、
Sudheer
尊敬的 Sudheer:
我使用的是主 NAVSS。
构建命令:
更改:
UART 日志:
期待收到您的回复。
此致、
Hasan
您好!
[报价 userid="557709" url="~/support/processors-group/processors/f/processors-forum/1366075/tda4vm-enet-loopback-example-failed-to-open-enet-dma-rx-channel/5242865 #5242865"]使用与环回类似的 make 文件并编译应用。
在上面的构建命令中、我找不到环回示例构建。
请按原样使用 TI SDK 以及建议在 MCU2_0上运行的更改、稍后您可以根据需要修改应用。
此致、
Sudheer
尊敬的 Sudheer:
我有一个使用环回示例在我这边构建的应用。 我对我的应用进行调试、可能是"UDMA [错误] RM PSI 配对失败" 错误的根本原因是 sciclient_rm.c。 当从 sciserver 发出 sciclient 请求时、在响应中、我收到的消息未被确认。 下面是屏幕截图。
您能给我看一下并在我遇到此错误时提供建议、以及如何消除此错误吗?
期待收到您的回复。
此致、
Hasan
您好!
是否使用 MAIN R5F 的 MCUVSS DMA? 如果是、我们尚未对此进行测试。
我们始终对 MCU R5F 内核使用 MCU NAVSS、对主 R5F 内核使用主 NAVSS。
如果您按原样使用 TI SDK 以及针对移植到 MCU2_0建议的更改。 您应该不会发现任何问题。
如上所述、请通过 MCU2_0按原样启用第一个 TI SDK、然后根据提示进行您自己的更改。
此致、
Sudheer
尊敬的 Sudheer:
我正在使用来自主 R5F 内核的主 NAVSS。 在使用 MCU R5F 的 MCU NAVSS 的情况下、我不会有任何问题。
仅在使用 MAIN R5F 中的 MAIN NAVSS 时对 PSIL 配对出现问题。
我正在使用裸机进行开发。 我在 main R5F 中的 main 功能调用中修改了环回示例。
我在 MCU R5F 中运行 sciserver、而 sciclient 在主 R5F 内核中初始化、并且从主 R5F 中初始化 I AM PSIL 配对请求。
请求未确认、我正在收到响应0标志。
此致、
Hasan
您好!
我正在使用裸机进行开发。 我在 main R5F 中的主功能调用中修改了环回示例。
我不确定您在应用中所做的更改。
我正在 MCU R5F 中运行 sciserver、并且 sciclient 在主 R5F 内核中初始化、并从主 R5F 我请求 PSIL 配对。
请求未确认、我收到响应0标志。
UDMA 应在 PSIL 对映射请求之前初始化。
此外、Sciserver 是否来自 TI SDK? 如果没有、请检查您的是否使用了正确的密码?
据我所知、SciServer 是基于 RTOS 的应用程序。
检查 MCU R5F 的调用跟踪、因为它适合您。
此外、检查主 R5F 的调用跟踪并对两者进行比较。
此外、检查运行应用程序时正在使用的 uDMA 实例。
此致、
Sudheer
尊敬的 Sudheer:
我正在向您分享我在应用程序中所做的更改。 请查看随附的代码。
对于主 R5F 内核、UDMA 使用 UDMA_INST_ID_0进行初始化。 我使用的 sciserver 来自 TI PDK v8.02。
void main() { /* init the sci client */ Sciclient_ConfigPrms_t sciClientCfg; Sciclient_configPrmsInit(&sciClientCfg); Sciclient_init(&sciClientCfg); EnetBoard_init(); gEnetLpbk.enetType = ENET_CPSW_2G; gEnetLpbk.instId = 0U; gEnetLpbk.macPort = ENET_MAC_PORT_1; gEnetLpbk.macMode = RGMII; gEnetLpbk.boardId = ENETBOARD_LOOPBACK_ID; EnetOsal_Cfg osalCfg; EnetUtils_Cfg utilsCfg; Enet_IoctlPrms prms; uint32_t status; /* Local core id */ gEnetLpbk.coreId = EnetSoc_getCoreId(); /* Initialize Enet driver (use default OSAL and utils) */ Enet_initOsalCfg(&osalCfg); Enet_initUtilsCfg(&utilsCfg); Enet_init(&osalCfg, &utilsCfg); /* Open Enet driver */ status = EnetLpbk_openEnet(); if (status != ENET_SOK) { EnetAppUtils_print("Failed to open Enet driver: %d\n", status); } } uint32_t EnetLpbk_openEnet(void) { Cpsw_Cfg cpswCfg; EnetUdma_Cfg dmaCfg; Enet_IoctlPrms prms; EnetPer_PortLinkCfg portLinkCfg; CpswMacPort_Cfg macCfg; uint32_t status = ENET_SOK; cpswCfg.dmaCfg = &dmaCfg; /* Initialize peripheral config */ EnetLpbk_initCpswCfg(&cpswCfg); if (gEnetLpbk.enetType == ENET_CPSW_2G) { EnetAppUtils_print("CPSW_2G Test on MAIN NAVSS\n"); } /* Set DMA receive channel priority as default */ dmaCfg.rxChInitPrms.dmaPriority = UDMA_DEFAULT_RX_CH_DMA_PRIORITY; /* App should open UDMA first as UDMA handle is needed to initialize CPSW RX channel */ gEnetLpbk.hUdmaDrv = EnetAppUtils_udmaOpen(gEnetLpbk.enetType, NULL); EnetAppUtils_assert(NULL != gEnetLpbk.hUdmaDrv); /* Global DMA driver handle */ dmaCfg.hUdmaDrv = gEnetLpbk.hUdmaDrv; /* Set Enet global runtime log level */ Enet_setTraceLevel(ENET_TRACE_DEBUG); /* Open the Enet driver */ gEnetLpbk.hEnet = Enet_open(gEnetLpbk.enetType, gEnetLpbk.instId, &cpswCfg, sizeof(cpswCfg)); if (gEnetLpbk.hEnet == NULL) { EnetAppUtils_print("Failed to open Enet driver\n"); status = ENET_EFAIL; } /* Setup link open parameters */ if (status == ENET_SOK) { EnetMacPort_LinkCfg *linkCfg = &portLinkCfg.linkCfg; EnetMacPort_Interface *mii = &portLinkCfg.mii; EnetPhy_Cfg *phyCfg = &portLinkCfg.phyCfg; /* Set port link params */ portLinkCfg.macPort = gEnetLpbk.macPort; portLinkCfg.macCfg = &macCfg; /* Enable MAC loopback */ CpswMacPort_initCfg(&macCfg); macCfg.loopbackEn = true; /* No PHY loopback */ phyCfg->phyAddr = ENETPHY_INVALID_PHYADDR; /* Regular RGMII for everything else */ mii->layerType = ENET_MAC_LAYER_GMII; mii->sublayerType = ENET_MAC_SUBLAYER_REDUCED; mii->variantType = ENET_MAC_VARIANT_FORCED; macCfg.sgmiiMode = ENET_MAC_SGMIIMODE_INVALID; /* Set up link params */ linkCfg->speed = ENET_SPEED_100MBIT; //ENET_SPEED_1GBIT linkCfg->duplexity = ENET_DUPLEX_FULL; } /* Overwrite the ENET control set by board lib */ EnetBoard_setEnetControl(gEnetLpbk.enetType, gEnetLpbk.instId, gEnetLpbk.macPort, gEnetLpbk.macMode); /* Open port link */ if (status == ENET_SOK) { ENET_IOCTL_SET_IN_ARGS(&prms, &portLinkCfg); status = Enet_ioctl(gEnetLpbk.hEnet, gEnetLpbk.coreId, ENET_PER_IOCTL_OPEN_PORT_LINK, &prms); if (status != ENET_SOK) { EnetAppUtils_print("Failed to open port link: %d\n", status); } } return status; }
您好!
如果您查看环回示例、我们将具有用于启用 Tx 和 Rx 通道的开放 DMA
用于数据包转发和重新采集的 ALE 配置。
以及用于 Tx 和 Rx 硬件处理的上述任务。
我在上面的示例中找不到。
如前所述、首先按原样测试 TI SDK、然后根据您的要求修改 TI SDK。
我可以通过修改环回示例知道您希望执行什么操作吗?
此致、
Sudheer