繁体   English   中英

freeRTOS +带线程/任务的LwIP的TCP问题

[英]TCP issues with freeRTOS + LwIP with threading/tasks

如上所述,在Zedboard上使用FreeRTOS + LwIP时出现问题,该板只是崩溃了,需要重启电源。 我认为这与网络连接有关,我有两个,一个用于传入流量,一个用于传出,两者都可以正常连接,但是数据似乎有点奇怪。

这是我用来从PC接收数据的功能:

while (ntotal < size)
{
    n = lwip_read(connection_descriptor, (buffer+ntotal), size - ntotal);
    if (n < 0)
    {
        printf("Failed receiving frame, received %i bytes\n", ntotal);
        return -1;
    }
    ntotal = ntotal + n;
}

这是传出的:

int bytesSent = 0;
int bytesSentTotal = 0;
int lengthToSend = 0;
int lengthToSendTotal = 0;

lengthToSendTotal = Size;
lengthToSend = 1460;
printf("Processed frame about to be sent from obin%d\n", binNO);


while (bytesSentTotal + lengthToSend < lengthToSendTotal)
{
    //lengthToSend = lengthToSendTotal - bytesSentTotal;
    bytesSent = lwip_write(connection_descriptor, &(buffer[bytesSentTotal]), lengthToSend);
    if (bytesSent < 0)
    {
        printf("ERROR writing frame to socket\n");
        return -1;
    }
    else
    {
        bytesSentTotal += bytesSent;
        //printf("Data sent: %d\n", bytesSentTotal);
    }
}
lengthToSend = lengthToSendTotal - bytesSentTotal;
bytesSent = lwip_write(connection_descriptor, &(buffer[bytesSentTotal]), lengthToSend);

我尝试将其更改为每个呼叫发送少量数据,因为我想知道一次尝试发送大量数据是否会引起问题(希望每次发送900kb +)。 但是,无论如何,行为似乎都是相同的,它会从接收数据开始就正常运行,然后会冻结,通常是在回传数据的途中,直到最后由于无响应,我的PC上的客户端代码将无法执行write命令网络连接(或类似的内容)。

所以我只是想知道我做错了什么吗?

当它崩溃时会发生什么? 程序在哪里结束(在assert()中,在异常处理程序中等)? 您正在使用哪个版本的FreeRTOS-如果它是新版本,那么您已经定义了configASSERT() ,这可以帮助您重点说明与FreeRTOS的集成问题?

您的项目是否基于以下参考? http://www.freertos.org/RTOS-Xilinx-Zynq.html-如果不这样看,可能会提示您问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM