smartmcu2020 发表于 2022-6-21 14:55:46

【请教】关于lwip在F429上运行,发送超时卡死问题


硬汉哥及各位坛友,您们好。
1、LWIP协议栈在netconn_connect连接时设置了发送超时.
      tcp_netconn->recv_timeout = 2000;
      tcp_netconn->send_timeout = 2000;


2、在调用tcp_netconn函数时,就会发送不成功,返回 data illegal。
   //二值信号量,进行临界保护   
    xSemaphoreTake(xSemaphore, portMAX_DELAY);
    //netconn_write在非阻塞发送时,返回Illegal value
    ret = netconn_write(tcp_netconn, (const unsigned char*)buf, len, NETCONN_COPY);
    xSemaphoreGive(xSemaphore);

3)解决方案:将发送超时取消掉,即LWIP_SO_SNDTIMEO=0.就好了。
#define LWIP_SO_SNDTIMEO                0


4)问题:
为什么发送设值超时就会出现错误。如果不加超时,后续工程化会不会有影响,比如因阻塞导致程序卡死。


eric2013 发表于 2022-6-21 18:31:27

简单玩了下,可以。

页: [1]
查看完整版本: 【请教】关于lwip在F429上运行,发送超时卡死问题