0

我在需要高数据速率的应用程序中使用 LWIP。所以我一次分配了 4 个 pbuf 并存储它们的地址并使用一些硬件魔法,一个接一个地填充它们,然后告诉程序缓冲区已准备好并且软件将其作为 UDP 数据包发送,但是过了一段时间当我嗅到数据包时我我的数据包中有大约 60 个额外字节,它们看起来像额外的 UDP 标头,但在有效负载中。任何解决方法/建议?

4

1 回答 1

0

在我的工作项目中,我们遇到了导致类似问题的 pbuf 损坏。我们使用了来自 xilinx 的多个不同类型的 MAC,pbuf 部门对此并不满意。我建议您为 IP 层和可能的 UDP 层打开完整的 lwip 调试。然后手动修剪打印到可重现问题的可管理的东西(lwip 具有最低打印级别 - 您可以使用它来帮助修剪诸如警告与严重打印之类的东西)。在我们的例子中,我们会收到 UDP 或 IP 层校验和错误,这是坏东西的标志。此外,一次只在一个方向上进行测试是有帮助的,以限制在一个方向上出现坏东西的可能性。我们使用了 xilinx 的 iperf 示例并对其进行了扩展。这些有助于解决问题。顺便说一句 4 pbufs 什么都不是... 当我查看以太网流量时 - 有很多事情发生,开销等......有很多潜在的问题,从太少的 ARP 表条目等等......如果你是这样的话,四个 pbuf 非常低被困在记忆中,我为你尝试使用 lwIP 感到抱歉。这听起来就像一场噩梦。另外,请注意通常打印会阻塞......这样会破坏性能。用您知道不会阻塞实时性能的非阻塞例程替换 lwip 调试打印是明智的。请注意,通常打印会阻塞......这样会破坏性能。用您知道不会阻塞实时性能的非阻塞例程替换 lwip 调试打印是明智的。请注意,通常打印会阻塞......这样会破坏性能。用您知道不会阻塞实时性能的非阻塞例程替换 lwip 调试打印是明智的。

于 2016-03-24T03:05:48.593 回答