|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 ccontrol 于 2010-7-23 15:55 编辑
在调试LwIP时遇到这样的问题,平台是LPC2478,内核是uCOSII:
netconn_bind(__pstConn, NULL, 1000);
netconn_listen(__pstConn);
__pstNewConn = netconn_accept(__pstConn);
上面都正常,但是在接收函数中netconn_recv中就死循环了,是停在等待邮箱语句:
sys_mbox_fetch(conn->recvmbox, (void *)&p);
但实际上,当我从计算机往仪表发送数据的时候,LwIP已经接收了数据包,而且最后在recv_tcp函数中发送了邮箱:
sys_mbox_post(conn->recvmbox, p);
可是netconn_recv为什么就是收不到这个邮箱呢?
我想可能是任务优先级问题,我现在的几个任务是这样:
任务1:接收线程ethernetif_input,优先级=7;
任务2:TCP/IP线程,tcpip_thread,recv_tcp就在该任务中,优先级=8;
任务3:就是网络应用程序任务,netconn_recv就在该任务中,优先级=9;
LwIP的工作流程应该就是这样:接收线程ethernetif_input接收到数据包后,经判断处理,将数据包传递到TCP/IP线程,然后再传递到应用程序,现在就是在最后一个环节断掉了。
我想可能是优先级顺序搞错了,我就把它倒过来,应用程序任务设最高,TCP/IP任务中间,接收线程最低,结果连接收线程的数据包都收不到了。
不知哪位前辈可予以指点,万分感谢! |
|