STM32F767裸机运行LWIP+UDP发送以太网数据包,一段时间后死机的问题

2019-07-20 03:42发布

平台:STM32F767阿波罗

程序:在“网络实验3 RAW_UDP实验”基础上修改,原程序是每次按下KEY0后发送一个数据区为“Apollo STM32F4/F7 UDP demo send data”的UDP包到目标主机,我将其功能修改成,按下KEY0后,就一直循环发送数据包到目标主机。所以只修改了例程中的udp_demo.c文件。

遇到问题:
1. 每个包发送不加延时,udp_send 函数会返回ERR_USE(-8)的错误,并伴随丢包现象。 个人认为这个跟LWIP的机制有关,它不足以支撑简单粗暴的while循环发送,或者说我们设计初就需考虑到网络传输的能力。现在我是每次发包都加100us的延时,就不会再有这个错误,但问题在于,为了提升我的发送速率又保证稳定性,我到底可以将延时降到多少?LWIP哪些参数的调整会有利于提高频率发包这种场景?增大MEM_SIZE,PBUF_POOL_SIZE等?


2. 长时间测试会死机。开始觉得有可能跳到HardFault那里,但是如果真的是这种情况,我还可以增加什么手段去定位这个问题,看是哪里引起的?因为直接用例程来改,内存分配/回收这些应该是安全的。我也尝试过连着调试器进行测试,但死机之后点击调试页面的暂停按钮,已不能定位到死机的位置。附件是我的udp_demo.c文件。

0条回答

一周热门 更多>