3

我正在尝试使用 freertos 中的 lwip 堆栈通过多个套接字进行基于 UDP 的通信。我的第一个问题是,套接字创建失败,因为lwip_socket调用了对 的调用netconn_new,其中包含对的调用TCPIP_APIMSG(&msg),该调用返回错误。我发现错误TCPIP_APIMSG(&msg)是因为sys_mbox_valid(&mbox)返回错误而产生的。

在认识到我创建了比 lwip 配置变量所允许的更多的 UDP 套接字后,我可以解决这个问题memp_n_udp_pcb。我只是增加了memp_n_udp_pcb

现在我遇到了lwip_sendto发送大约 300 个数据包后停止工作的问题。同样,无效的 mboxTCPIP_APIMSG(&msg)似乎是原因。lwip_sendto调用netconn_send,调用TCPIP_APIMSG(&msg),由于无效的 mbox 返回错误。

我只是尝试将 lwip 堆栈与 freertos 一起使用,但我对 lwip 堆栈的实现细节没有经验。我不知道无效的 mbox 是什么意思以及如何解决问题。

我希望有人可以向我解释这里出了什么问题。memp_n_udp_pcb当使用超过预定义数量的 4 个 UDP 套接字时,是否需要更改任何其他设置(除了)?为什么lwip_sendto发送几百个数据包没有问题后失败?

4

0 回答 0