天线|RF射频
直播中

李舒桀

7年用户 1275经验值
私信 关注
[问答]

为什么lwip dhcp获取不到ip?

我用的是lan8720 在ucosii 下使用
按照原子哥的例程操作
静态ip可以使用 打开dhcp获取不到ip
[AppleScript] 纯文本查看 复制代码
//DHCP任务函数void lwip_dhcp_task(void *pdata){u32 ip=0,netmask=0,gw=0;dhcp_start(&lwip_netif);lwipdev.dhcpstatus=0; while(1){ ip=lwip_netif.ip_addr.addr;netmask=lwip_netif.netmask.addr;gw=lwip_netif.gw.addr;if(ip!=0)   //在这里设置断电  ip总是0{lwipdev.dhcpstatus=2;//DHCP3é1|lwipdev.ip[3]=(uint8_t)(ip>>24); lwipdev.ip[2]=(uint8_t)(ip>>16);lwipdev.ip[1]=(uint8_t)(ip>>8);lwipdev.ip[0]=(uint8_t)(ip);lwipdev.netmask[3]=(uint8_t)(netmask>>24);lwipdev.netmask[2]=(uint8_t)(netmask>>16);lwipdev.netmask[1]=(uint8_t)(netmask>>8);lwipdev.netmask[0]=(uint8_t)(netmask);lwipdev.gateway[3]=(uint8_t)(gw>>24);lwipdev.gateway[2]=(uint8_t)(gw>>16);lwipdev.gateway[1]=(uint8_t)(gw>>8);lwipdev.gateway[0]=(uint8_t)(gw);break;}else if(lwip_netif.dhcp->tries>LWIP_MAX_DHCP_TRIES){  lwipdev.dhcpstatus=0XFF;IP4_ADDR(&(lwip_netif.ip_addr),lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);IP4_ADDR(&(lwip_netif.netmask),lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);IP4_ADDR(&(lwip_netif.gw),lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);break;}  delay_ms(250); }lwip_comm_dhcp_delete();}

回帖(7)

王桂英

2019-8-28 08:08:55
使用tp_link路由器测试不行  电脑可以获取ip
举报

孙秀英

2019-8-28 08:19:58
我的板子tp link可以获得ip地址的。
你先将板子跟电脑链接,然后开抓包软件。看看板子能不能发出dhcp的discovery包。
举报

李秀珍

2019-8-28 08:36:07
这是不是说明dhco发了广播了?
举报

王晋

2019-8-28 08:46:24
discover有了,你可以设置接收断点看看有没有包回来。
如果手头有hub或者可以进行端口映射的交换机,把tplink接上,然后用电脑抓包,看看tplink是否有回。
还有就是分析dhcp discover的options,看看是否有不支持的配置,正常就是不支持,tplink也应该会回复跟你协商才对。不过这个比较复杂你需要去研究dhcp协议才行。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分