大家好,
使用 AM6442 GPEVM 板和 MCU+SDK v08.01。 我正在对 R5F0_0上的 MCU+SDK 中包含的 Enet_layer2_icssg 网络示例进行基准测试。
设置:一根以太网电缆将 ICSSG 端口1连接到 EVM 上的端口2。
软件:来自 Examples/networking_ene_layer2_icssg 的 enet_layer2_icssg 示例。 我没有评论 DULE_MAC_MODE 的#define 以使用两个端口,我还不得不将 ENET_CFG_TX_Channels_NUM 更改为2 (根据注释),并发布“gmake libs”以重新编译 ENET-LLD 驱动程序。 我还添加了一些简单的代码,在示例启动时在第一个端口上传输单个数据包。 由于此示例可回波所有收到的数据包,因此第一个传输将启动连续的数据包流,这些数据包在 ICSSG 端口之间来回传输。
端口1传输256字节的数据包,然后等待接收到响应数据包(从另一个 ICSSG 端口回传)。 从使用 EnetDma_submitTxPktQ()提交 TX 数据包到接收下一个 RX 中断平均需要~62us。 我正在使用 ClockP_getTimeUsec()来计算提交 TX 数据包到接收 RX 中断之间的时间。 在千兆位速度下,数据包在整个线路上只需~2us,而在两端 PHY 延迟时,数据包的传输速率应小于~1us。 这让我相信大多数延迟必须在数据包 DMA 路径中。
问题:
1.我的分析是否正确,数据包 DMA 可能会导致高延迟?
2.是否有任何选项可优化 ENET-LLD 的数据包 DMA 延迟?
如果没有,ENET-LLD 是否有任何方法可以绕过数据包 DMA 以最大程度地减少延迟?
我们希望在 ICSSG 端口上以千兆位速度使用256字节数据包实现<8us (从 TX 到 RX)。