完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在初始化eth device后,netdev设备成功创建,但是使用ifconfig命令发现设备状态始终为DOWN,手动调用netdev_set_up函数也无法让设备上线变为UP,通过debug发现
在netdev中,设备的状态flag为0x2A,代表设备UP的标志位为0,但是在netif中的设备flag标志位却为0x2B,使得手动netdev_set_up时会自动跳过设置命令,直接从下面函数的if中出去了 void netif_set_up(struct netif *netif) { LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("netif_set_up: invalid netif", netif != NULL, return); if (!(netif->flags & NETIF_FLAG_UP)) { netif_set_flags(netif, NETIF_FLAG_UP); MIB2_COPY_SYSUPTIME_TO(&netif->ts); NETIF_STATUS_CALLBACK(netif); #if LWIP_NETIF_EXT_STATUS_CALLBACK { netif_ext_callback_args_t args; args.status_changed.state = 1; netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args); } #endif netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); #if LWIP_IPV6 nd6_restart_netif(netif); #endif /* LWIP_IPV6 */ } } 请问这个问题是什么原因导致的?是我哪里设置的不对吗导致flag不一致? 我将ethernetif.c文件内的命令导出,使用list_if可以看出设备实际上是上线了的,使用DHCP也已经成功分配了IP msh >list_if network interface: e0 (Default) MTU: 1500 MAC: 00 04 9f 05 44 e5 FLAGS: UP LINK_UP ETHARP BROADCAST ip address: 192.168.1.19 gw address: 192.168.1.1 net mask : 255.255.255.0 dns server #0: 100.15.0.32 dns server #1: 104.15.0.32 msh >ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 04 9f 05 44 e5 FLAGS: DOWN LINK_DOWN INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0 dns server #0: 0.0.0.0 dns server #1: 0.0.0.0 msh > |
|
相关推荐
1个回答
|
|
在初始化eth device后,netdev设备成功创建,但是使用ifconfig命令发现设备状态始终为DOWN,手动调用netdev_set_up函数也无法让设备上线变为UP,通过debug发现
[img]https://oss-club.rt-thread.org/uploads/20220517/6fad9eea0e60c550468ed690adfa8a48.png[/img] 在netdev中,设备的状态flag为0x2A,代表设备UP的标志位为0,但是在netif中的设备flag标志位却为0x2B,使得手动netdev_set_up时会自动跳过设置命令,直接从下面函数的if中出去了 void netif_set_up(struct netif *netif) { LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("netif_set_up: invalid netif", netif != NULL, return); if (!(netif->flags & NETIF_FLAG_UP)) { netif_set_flags(netif, NETIF_FLAG_UP); MIB2_COPY_SYSUPTIME_TO(&netif->ts); NETIF_STATUS_CALLBACK(netif); #if LWIP_NETIF_EXT_STATUS_CALLBACK { netif_ext_callback_args_t args; args.status_changed.state = 1; netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args); } #endif netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); #if LWIP_IPV6 nd6_restart_netif(netif); #endif /* LWIP_IPV6 */ } } 请问这个问题是什么原因导致的?是我哪里设置的不对吗导致flag不一致? 我将ethernetif.c文件内的命令导出,使用list_if可以看出设备实际上是上线了的,使用DHCP也已经成功分配了IP msh >list_if network interface: e0 (Default) MTU: 1500 MAC: 00 04 9f 05 44 e5 FLAGS: UP LINK_UP ETHARP BROADCAST ip address: 192.168.1.19 gw address: 192.168.1.1 net mask : 255.255.255.0 dns server #0: 100.15.0.32 dns server #1: 104.15.0.32 msh >ifconfig network interface device: e0 (Default) MTU: 1500 MAC: 00 04 9f 05 44 e5 FLAGS: DOWN LINK_DOWN INTERNET_DOWN DHCP_ENABLE ETHARP BROADCAST ip address: 0.0.0.0 gw address: 0.0.0.0 net mask : 0.0.0.0 dns server #0: 0.0.0.0 dns server #1: 0.0.0.0 msh > |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
590 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2241 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1233 浏览 0 评论
1788 浏览 0 评论
1464 浏览 0 评论
74820 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:54 , Processed in 0.574477 second(s), Total 69, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号