用于发送UDP消息的LwIP缓冲区管理

时间:2017-06-07 12:44:04

标签: udp lwip

我的嵌入式应用程序使用LwIP库发送不同长度的UDP消息,具体取决于内容。

现在,每次消息需要使用PBUF_RAM发送时,我都会调用pbuf_alloc / pbuf_free。它似乎工作得很好,但我担心它会在很长一段时间内运行后会导致内存碎片的肮脏。我应该担心吗?

此外,PBUF_POOL是否仅用于接收 消息,而不是用于发送消息?

1 个答案:

答案 0 :(得分:0)

PBUF_POOL仅用于RX,其目的是为接收的数据包和缓冲的TX段分隔内存池。有关文档

,请参阅PBUF_POOL define

就PBUF_RAM和内存堆中的碎片而言,有许多配置决定了堆的实现方式,这可能会影响碎片。所以你需要了解你的配置。

堆可以通过标准C库malloc,一系列各种固定大小的池或单个静态数组来实现。如果使用后者,则从mem_free()调用plug_holes(),它应该处理片段。见mem.c