F107+DP83848,lwip 1.3,发送数据,运行一段时间之后,数据发送异常
本帖最后由 596142041 于 2021-8-26 10:13 编辑用的F107+DP83848,采用lwip,不带操作系统,使用组播,每间隔1s向上位机发送一次数据,运行一段时间之后,无数据输出,但是lwip并未报错,此时设备无法PING通,但是能接受上位机下发的数据;这会是什么原因导致的的啊以下是发送数据的函数,周期的调用UDP_send,通过打印,发现在multicast_send_data中的故障值一直返回的都是ERR_OK.
void UDP_Send(uint8_t *pdata, uint16_t tx_len)
{
// memcpy(lwip_demo_buf, pdata, tx_len);
multicast_send_data(pdata, tx_len);
}
/*
*********************************************************************************************************
* 函 数 名:
* 功 能:
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void multicast_send_data(unsigned char *data, unsigned short len)
{
err_t err;
struct pbuf *Gpbuf =pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM);
if(Gpbuf == NULL)
{
#if DEBUG == 1
printf("pbuf_alloc *p Null\r\n");
#endif
}
memcpy(Gpbuf->payload,data,len);//测试数据
if (udp_server_multi_pcb != NULL)
{
err = udp_sendto(udp_server_multi_pcb, Gpbuf, (struct ip_addr *) (&ipgroup_send), UDP_MULTICASE_SEND_PORT);
printf("Lwip Tx Data Len = %d,err = %d",len,err);
Log_ENTER();
}
else
{
printf("udp_server_multi_pcb Null\r\n");
}
pbuf_free(Gpbuf);//此处注意,调试出现问题的原因是在此处没有及时未释放该指针
}
意思是刚开始是成功的,运行一会就不行了,无法成功发送UDP数据给上位机 eric2013 发表于 2021-8-26 10:49
意思是刚开始是成功的,运行一会就不行了,无法成功发送UDP数据给上位机
是的,我在自己的开发板上面运行了6小时,都正常,在客户的板子上面测试,运行大概30分钟左右故障就出现 请使用rtos配合lwip 效果更佳,不需要高速直接默认配置,跑几年都不会有问题 596142041 发表于 2021-8-26 10:56
是的,我在自己的开发板上面运行了6小时,都正常,在客户的板子上面测试,运行大概30分钟左右故障就出现
使用UDP,要增加一个简单的握手机制。
页:
[1]