关于UCOS+LWIP在EMBEDALL的7X256上建立WEB服务器遇到的问题

[复制链接]
4158|13
 楼主| bluesteed 发表于 2007-5-30 21:44 | 显示全部楼层 |阅读模式
之前也在论坛里看到有帖子说EMBEDALL的7X256的附带的代码里只能PING通,不能做UDP,TCP&nbsp;的运用.我现在也是遇到这样的问题,本来想在原来可以PING通的程序上面建立一个WEB服务器的,后来参照了龙一大侠的那个WEB服务器的代码.但现在就是发现那个LWIP&nbsp;的进程必须依靠后面的一个FOR循环的亮灯程序才能保持LWIP&nbsp;的进程(PING&nbsp;的通),一旦把后面的那个FOR循环去掉,只把LWIP_main(p_arg);运行一遍,马上就PING&nbsp;不通了,我已经用FOR循环的亮灯程序在程序的不同位置测试过,确信那个LWIP进程就是依靠FOR循环才能保持在运行状态.<br />不知道这里有没有遇到过同样情况的朋友,或者哪位高人指点一下.<br />之前一直以为是WEB服务器代码方面的问题,断断续续的搞了半个多月了.
 楼主| bluesteed 发表于 2007-5-30 21:55 | 显示全部楼层

附上主进程的代码

附上代码<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;OS_STK_DATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data;<br />&nbsp;&nbsp;&nbsp;ST_NETCONN&nbsp;*__pstConn,&nbsp;*__pstNewConn;<br />&nbsp;&nbsp;&nbsp;struct&nbsp;netbuf&nbsp;&nbsp;&nbsp;&nbsp;*__pstNetbuf;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;k,i;<br />&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;(void)p_arg;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//ConsoleSem&nbsp;&nbsp;=&nbsp;OSSemCreate(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;lwip_input&nbsp;&nbsp;=&nbsp;OSSemCreate(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;OSSemCreate(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;lwip_output&nbsp;=&nbsp;OSSemCreate(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;Sem1&nbsp;=&nbsp;OSSemCreate(0);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pri_info();<br />&nbsp;&nbsp;&nbsp;&nbsp;//Entrance&nbsp;to&nbsp;the&nbsp;lwip&nbsp;stack.<br />&nbsp;&nbsp;&nbsp;&nbsp;LWIP_main(p_arg);(就是这里,如果后面不加FOR循环,就PING&nbsp;不通了)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(;;){<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_ClearOutput(&nbsp;AT91D_BASE_PIO_LED,&nbsp;led_mask[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDlyHMSM(0,&nbsp;0,&nbsp;0,&nbsp;SPEED);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PIO_SetOutput(&nbsp;AT91D_BASE_PIO_LED,&nbsp;led_mask[0]&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDlyHMSM(0,&nbsp;0,&nbsp;0,&nbsp;SPEED);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;__pstConn&nbsp;=&nbsp;netconn_new(NETCONN_TCP);<br />&nbsp;&nbsp;&nbsp;&nbsp;netconn_bind(__pstConn,&nbsp;NULL,&nbsp;80);<br />&nbsp;&nbsp;&nbsp;&nbsp;netconn_listen(__pstConn);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(TRUE)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__pstNewConn&nbsp;=&nbsp;netconn_accept(__pstConn);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(__pstNewConn&nbsp;!=&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__pstNetbuf&nbsp;=&nbsp;netconn_recv(__pstNewConn);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(__pstNetbuf&nbsp;!=&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netconn_write(__pstNewConn,&nbsp;&quot;HTTP/1.1&nbsp;200&nbsp;OK
Content-type:&nbsp;text/html

&quot;,&nbsp;44,&nbsp;NETCONN_COPY);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netconn_write(__pstNewConn,&nbsp;&quot;&ltbody&gt&lth1&gt这是LWIP&nbsp;TCP测试!&lt/h1&gt&lt/body&gt&quot;,&nbsp;40,&nbsp;NETCONN_COPY);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netbuf_delete(__pstNetbuf);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netconn_close(__pstNewConn);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(netconn_delete(__pstNewConn)&nbsp;!=&nbsp;ERR_OK)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDlyHMSM(0,&nbsp;0,&nbsp;1,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />---------------------------<br />下面是LWIP初始化的代码<br />void&nbsp;LWIP_main(void&nbsp;*arg)<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;err_t&nbsp;ethernetif_init(struct&nbsp;netif&nbsp;*stNetif);<br />&nbsp;&nbsp;&nbsp;&nbsp;u8_t&nbsp;&nbsp;&nbsp;&nbsp;err;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;ip_addr&nbsp;ipaddr,&nbsp;netmask,&nbsp;gw;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys_sem_t&nbsp;sem;<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;st_netif&nbsp;netif_test;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//netifnum&nbsp;=&nbsp;0;&nbsp;//for&nbsp;count&nbsp;netif-&gtnum<br />&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memp_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pbuf_init();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />//mainthread<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netif_init();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sem&nbsp;=&nbsp;sys_sem_new(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcpip_init(NULL,&nbsp;NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tcpip_init(tcpip_init_done,&nbsp;&sem);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys_sem_wait(sem);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys_sem_free(sem);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;udp_init();<br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//*&nbsp;建立并配置EMAC接口<br />&nbsp;&nbsp;&nbsp;&nbsp;IP4_ADDR(&ipaddr,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetIPAddr(0):OURIP1,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetIPAddr(1):OURIP2,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetIPAddr(2):OURIP3,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetIPAddr(3):OURIP4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IP4_ADDR(&netmask,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetNetMask(0):NETMASK1,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetNetMask(1):NETMASK2,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetNetMask(2):NETMASK3,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetNetMask(3):NETMASK4);<br />&nbsp;&nbsp;&nbsp;&nbsp;IP4_ADDR(&gw,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetGateway(0):GATEWAY1,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetGateway(1):GATEWAY2,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetGateway(2):GATEWAY3,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PST_NET_CFG_PARAM-&gtulFlag&nbsp;==&nbsp;NET_CFG_FLAG)?macGetGateway(3):GATEWAY4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netif_add(&netif_test,&ipaddr,&nbsp;&netmask,&nbsp;&gw,&nbsp;NULL,&nbsp;ethernetif_init,tcpip_input);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netif_set_default(&netif_test);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netif_set_up(&netif_test);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| bluesteed 发表于 2007-5-30 22:20 | 显示全部楼层

补充

补充一下,在主进程里面,即使后面不加WEB服务器的代码,如果不在LWIP_main(p_arg);后面加FOR循环,网络也会PING不通,这让我百得不思其解,按照以前那个帖子说的如果说是任务数或者OS_EVENT的原因,那光进程里放LWIP_main(p_arg);后面不加FOR循环也应该PING&nbsp;的通的啊
 楼主| bluesteed 发表于 2007-5-31 09:21 | 显示全部楼层

回楼上,我问你你们的技术支持好几次了,都说代码问题不

回楼上,我问你你们的技术支持好几次了,都说代码问题不负责<br />具体代码的问题不负责解答
mmd2102 发表于 2007-5-31 09:56 | 显示全部楼层

re

我们在测试这个代码,有结果后电话和你联系。客户使用我们的产品出了技术问题,我们没有理由不给客户不做技术支持!!!如果以后您对技术支持部门的工作不满意的话请直接给&nbsp;075-83605322-18进行投诉,我们认真对待每个客户反馈的问题。同时问题没查出结果前,我们不敢随便下结论的。
 楼主| bluesteed 发表于 2007-6-1 13:13 | 显示全部楼层

还没有人解答

继续求教高人,还没有解答
heyunhuan 发表于 2007-6-1 14:52 | 显示全部楼层

你的讲述让我有点晕。

是你的叙述有问题呢,还是我理解上有问题呢?<br /><br />什么加上for循环和不加for循环啊?<br />你要是相信我就把你的代码发给我,我看看吧,尽力帮你看看吧,我可不敢保证一定能帮上你的忙。<br /><br />我的Email:Small.Box@163.com<br /><br />Blog:http://heyunhuan513.blog.163.com&nbsp;上面也有我移植的一部分笔记,由于时间关系,没有添加完,待续吧……
 楼主| bluesteed 发表于 2007-6-1 15:54 | 显示全部楼层

回楼上

我也是也是因为这样才被搞晕的阿,后面加不加FOR循环的跑灯程序的确会产生影响。我的感觉是因为有了FOR循环才使得前面的LWIP初始化始终处于运行的进程,否则就直接跑飞了。
 楼主| bluesteed 发表于 2007-6-3 20:18 | 显示全部楼层

继续求大侠

继续求高人指点啊
 楼主| bluesteed 发表于 2007-6-7 13:39 | 显示全部楼层

很失望

很失望贵公司最后还是说对代码问题不负责。
 楼主| bluesteed 发表于 2007-6-7 13:40 | 显示全部楼层

很伤心

很伤心
wydian 发表于 2007-6-12 14:25 | 显示全部楼层

都for了后面的肯定不执行了

  
 楼主| bluesteed 发表于 2007-6-12 18:16 | 显示全部楼层

回楼上

你是没看清楚,我的前提是FOR后面的程序我都已经删掉了,FOR不加的话,在FOR之前的LWIP初始化就不能正常运行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

30

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部