C 使用lwip_sendto时mbox无效

C 使用lwip_sendto时mbox无效,c,freertos,lwip,C,Freertos,Lwip,我正在尝试使用freertos中的lwip堆栈通过多个套接字进行基于UDP的通信。我的第一个问题是,套接字创建失败,因为,lwip\u socket调用了netconn\u new,其中包含对TCPIP\u apimg(&msg)的调用,该调用返回了一个错误。我发现TCPIP\u APIMSG(&msg)中的错误是因为sys\u mbox\u valid(&mbox)返回false而产生的 在认识到我创建的UDP套接字数量超过lwip配置变量memp\u n\u UDP\u pcb所允许的数量后

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

在认识到我创建的UDP套接字数量超过lwip配置变量
memp\u n\u UDP\u pcb
所允许的数量后,我可以解决这个问题。我刚刚增加了
memp\u n\u udp\u pcb

现在我遇到的问题是,
lwip\u sendto
在发送大约300个数据包后停止工作。同样,原因似乎是
TCPIP\u APIMSG(&msg)
中的无效mbox
lwip\u sendto
calls
netconn\u send
,它调用
TCPIP\u APIMSG(&msg)
,由于无效的mbox返回错误

我只是尝试在freertos中使用lwip堆栈,但我对lwip堆栈的实现细节没有经验。我不知道无效的mbox意味着什么以及如何解决这个问题

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

最好在讨论列表中询问/搜索lwip问题: