器件型号: AM263P4-Q1
您好:
出于调试目的、我想通过以太网和 UDP 数据包将数据写入我的计算机。 目标是每包 200 字节和每秒 50000 个数据包。
我基本上不了解以太网和 enet_cpsw_udpclient 示例、因此我设法达到了大约 7000 个数据包/秒
是否有更好的示例可用于此目的?
此致
Frank
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.
器件型号: AM263P4-Q1
您好:
出于调试目的、我想通过以太网和 UDP 数据包将数据写入我的计算机。 目标是每包 200 字节和每秒 50000 个数据包。
我基本上不了解以太网和 enet_cpsw_udpclient 示例、因此我设法达到了大约 7000 个数据包/秒
是否有更好的示例可用于此目的?
此致
Frank
您好、Frank
目标是每包 200 字节和每秒 50000 个数据包。
吞吐量约为 10MBps 或 80Mbps。 但实现这一点还取决于您在软件中生成这些调试数据包的速度。 如果您在传输开始之前已经创建了这些数据包、那么您应该能够实现这种吞吐量、但是如果您计划在运行时和传输时从头开始创建此数据包、那么我怀疑您是否会及时创建数据包以实现每秒 200B 的 50000 个数据包。 这是一个必须进行实验的问题、
如果您有兴趣了解有关 CPSW 网络 IP 的更多信息、请访问: dev.ti.com/.../node
设备上的 UDP 功能源自开源 LWIP 堆栈、您可以在此处阅读更多相关信息: www.nongnu.org/.../index.html
另一方面、如果您想增加 UDP 连接的数量、请遵循以下常见问题解答: e2e.ti.com/.../faq-mcu-plus-sdk-am263x-how-to-increase-number-of-udp-or-tcp-connections-in-lwip-examples
您好 Frank、
问:您使用的接口速度是多少? 是 100 米还是 1G?
问:您可以发送更大大小的数据包吗? 我们可以发送的最大数据包大小约为 1.5KB。 这样、您可以发送较少的数据包数量、但发送更多的数据。
如果在运行时创建数据包、
1.您可以使用 RAW UDP API,这将提高应用程序的速度,帮助您发送更多数据。 dev.ti.com/.../node
2.您可以通过保持所有数据包报头就绪,并在运行时修改有效载荷,进一步优化您的应用程序
3.删除所有增加额外延迟的打印/调试日志
此外、还可以在 lwipopts.h 文件中进行一些更改:
1.将 TCPIP mbox 增加到 256 或突发处理 (TCPIP_MBOX_SIZE)
2.对于高速率 TX (MEMP_NUM_PBuF)、将 buf 计数增加到 256
在此之后、您必须使用命令行重建 LWIP 库。 (software-dl.ti.com/.../MAKEFILE_BUILD_PAGE.html)
您可以尝试上述步骤、看看它是否有帮助。 此外、在运行时、您可以检查 lwip_stats 以查看应用是否存在任何限制/错误
dev.ti.com/.../ethernet_debug_guide.html
此致、
Shaunak
我可以使用 1G、但 100M 也可以。 我认为通过组合不同采样时间的数据点来增加数据包大小会产生过多的开销。 我已经有一个使用 STM32H7 (100M) 的有效解决方案,输出 40 kHz 的数据包,从而产生大约 80Mbps 的流量。 我修改了他们的 no-RTOS 示例并删除了所有开销。 控制器基本上只从固定内存位置发出“相同“UDP 帧、因此唯一改变的是内部的数据。 这是我尝试使用 AM263P 复制的内容、并且对网络资源了解极少。 50kHz 是我的 ADC 采样率、我想将该数据流式传输到我的 PC、这样我就可以看到一对一的测量值和其他控制器值。
感谢您到目前为止的建议、但您能否指出 SDK 中一个易于修改的示例? 可能是 NoRTOS 工程? 我对以太网和 RTOS 没有太多的了解、因为这应该只是一个粗略的实验室解决方案、所以我不想深入探讨本主题、所以我很难找到一个合适的示例。
最简单的方法是:
1.尝试我在前一个答复中提到的次要优化。
2. 如果需要为 UDP 服务器更改 LwIP 功能/ IP 地址- 如果这样做不 起作用、请使用 enet_cpsw_raw_httpserver 示例作为起点(因为您需要 NoRTOS)、并集成 UDP RAW API 示例(如果我上一篇文章中提到的点无法帮助您实现所需的 80Mbps)。 您可以在 LwIP 协议栈中找到 UDP 原始 API 文件、只需在应用中编译特别需要的文件。 (文件被调用
3. 如果不需要 LwIP 功能/ UDP 服务器的 IP 地址是固定的- 如果不需要任何 LwIP 功能并且您的 IP 地址将固定、还可以修改第 2 层 CPSW 示例。 基本上、您可以通过保持数据包标头相同来创建 UDP 数据包、而不是发送第 2 层以太网数据包、但跳过应用中使用笨重且复杂的 LwIP 协议栈的部分。 基本上、您只需事先准备数据包标头、只需修改有效载荷并遵循与 enet_layer2 示例相同的流程。 您可以查看 mcu_plus_sdk_am263px_11_01_00_19\source\networking\enet\core\examples\enet_cpsw_industrial_app 如何实现高速和低延迟、
此致、
Shaunak