驱动适配完成后可以进中断但internet flag一直down,4.0.1+lwip2.0.2

发布于 2019-12-06 10:16:10    浏览:646
目前已完成dp83848网口驱动的适配,ETH中断可以正常触发,数据也可以进到tcpthread,但是一直ping不通。
现象:1.if config显示ip gw mask都是0,netdev flag显示INTERNET_DOWN。
自查:查了一遍lwip初始化流程,有几个问题:
1.一开始没有NETIF_FLAG_ETHERNET
rt_err_t eth_device_init(struct eth_device * dev, const char *name)
{
rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET; //一开始没有NETIF_FLAG_ETHERNET

#if LWIP_IGMP
/* IGMP support */
flags |= NETIF_FLAG_IGMP;
#endif

return eth_device_init_with_flag(dev, name, flags);
}
2.netif_set_ipaddr调用在netdev_register之前
#if LWIP_IPV4
netif_set_addr(netif, ipaddr, netmask, gw); //调用netdev_low_level_set_ipaddr()等,此时网卡并未注册。
#endif /* LWIP_IPV4 */

/* call user specified initialization function for netif */
if (init(netif) != ERR_OK) { //这里面调用netdev_add进行注册
return NULL;
}
问题:1.是否可能是网卡驱动有问题?2.lwip初始化部分哪里有bug?

查看更多

7 个回答
ymii
ymii 2019-12-21
This guy hasn't written anything yet
我也遇到相同的问题,IP,网关,都是0,
永远光明
永远光明 2019-12-22
This guy hasn't written anything yet
我用esp8266也是,能连接上wifi,路由器也看到这个设备了,但是单片机ip地址没有分配到,用ifconfig看是DHCP禁用了!
Jokeoo
Jokeoo 2019-12-23
This guy hasn't written anything yet
永远光明 发表于 2019-12-22 23:10
我用esp8266也是,能连接上wifi,路由器也看到这个设备了,但是单片机ip地址没有分配到,用ifconfig看是DHC ...


开启DHCP后可以了。lwip初始化之后应该还需要做一些操作才算是完成网络配置,查了dhcp的流程,没有理解还需要做哪些
永远光明
永远光明 2019-12-23
This guy hasn't written anything yet
Jokeoo 发表于 2019-12-23 14:54
开启DHCP后可以了。lwip初始化之后应该还需要做一些操作才算是完成网络配置,查了dhcp的流程,没有理解还 ...


好的,谢谢了!晚上有空再测试一下,业余爱好者。
noerr
noerr 2019-12-25
This guy hasn't written anything yet
rt_err_t eth_device_init(struct eth_device * dev, char *name)
{
rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;


#if LWIP_DHCP // 把这个加上就能开DHCP了吧
/* DHCP support */
if(returnConnectConfig(CLIENT_ETH_CONNECT) == DHCP_OPEN)// 我自己写的判断代码
flags |= NETIF_FLAG_DHCP;
#endif

#if LWIP_IGMP
/* IGMP support */
flags |= NETIF_FLAG_IGMP;
#endif

return eth_device_init_with_flag(dev, name, flags);
}
Jokeoo
Jokeoo 2019-12-25
This guy hasn't written anything yet
noerr 发表于 2019-12-25 15:27
rt_err_t eth_device_init(struct eth_device * dev, char *name)
{
rt_uint16_t flags = NETIF_FLAG_B ...


rtconfig.h里开启
noerr
noerr 2019-12-26
This guy hasn't written anything yet
    本帖最后由 noerr 于 2019-12-26 08:05 编辑


Jokeoo 发表于 2019-12-25 17:41
rtconfig.h里开启

昂 我是2.0版本的 很久以前改的

撰写答案

请登录后再发布答案,点击登录
关注者
0
被浏览
646

发布
问题

分享
好友

手机
浏览

扫码手机浏览