利用zynq7020的PS端lwip进行udp通信时出现内存溢出错误怎么解决?
代码返回:Error on udp send : -1
【相关推荐】
UDP服务的创建相比于TCP在理论上简单许多,实现上类似。系统平台设计不需要变更,只需要注意将UDP选项打开即可。建立服务的过程封装成如下的函数:
int new_udp_connect(){
struct udp_pcb *pcb;
err_t err;
unsigned port = ETH_PORT;
//创建pcb
pcb = udp_new();
if(!pcb)
{
xil_printf(“Error creating PCB. Out of Memory\r\n”);
return -1;
}
//绑定端口
err = udp_bind(pcb,IP_ADDR_ANY,port);
if(err != ERR_OK)
xil_printf(“error on udp_connect: %x\n\r”, err);
//设置接收回调函数
udp_recv(pcb,(udp_recv_fn)recv_callback_udp,NULL);
return 0;
}
同样是基于回调函数,但是UDP是直接回调接收回调函数,这与TCP略有差异,UDP接收回调函数如下:
回调函数同样是对接收数据进行简单的处理。While(1)循环内部transfer_data_udp()与TCP相同,也可自行实现其他应用程序。