利用zynq的PS端lwip进行udp通信时出现内存溢出错误怎么解决?

利用zynq7020的PS端lwip进行udp通信时出现内存溢出错误怎么解决?
代码返回:Error on udp send : -1

【相关推荐】



  • 这篇博客: Zynq-7000基于zynq平台裸跑LWIP协议栈的详解(万字长文)中的 3.2.3 UDP Server 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    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相同,也可自行实现其他应用程序。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^