打印
[STM32H7]

【求助】RNDIS使用DHCP得不到IP地址的问题

[复制链接]
946|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
HC, ip
最近在GITHUB上搜索到有位国外的程序员Nico Korn使用FREERTOS+FREERTOS TCP实现了RNDIS功能。项目网址如下:
https://github.com/nicokorn/STM32F4XX_RNDIS_DEMO
原作者使用STM32F411作为下位机,IDE为IAR v9。演示视频见docs文件夹:

由于使用HAL开发,于是尝试移植到STM32H7A3上,结果遇到了问题:
1.移植后上位机可以识别网卡

但是却不能得到有效的IP地址:

得到的地址为169.254.114.19。查找资料知道是因为下位机未收到DHCP服务器分配的地址,所以从169.254.xxx.xxx中随机得到的一个IP地址。可以PING通:

但由于不在一个网段内肯定是不可能访问下位机的网页。
2.尝试使用静态IP,同样不能访问该下位机的网页。
3.以前使用LWIP的DHCP遇到过这样的问题,尝试增大HEAP值,也没什么作用。
4.抓包发现STM32H7A3尝试DHCP Discover,却没有任何回应:

单步调试发现在执行到函数dhcpserver_handle的FreeRTOS_recvfrom时,其返回值lengthOfbytes一直为负数,作者对此注释写着:// Error (maybe the connected socket already shut down the socket?). Attempt graceful shutdown.   
问题是以前使用另外的以为大神Sergey Fetisov编写的RNDIS插上USB后是可以通过浏览器直接访问其STM32中存储的web,其代码中也开启了DHCP,但没遇到这个问题。在演示视频中作者也是插上USB后是可以通过浏览器直接访问其STM32中存储的web。为何移植后却不行?
5.为了排除其他因数,基本上只更换了HAL库,其余部分没变,但问题依旧。是否电脑部分需要设置?望各位大神不吝赐教。
移植的源代码如下:
STM32H7A3_RNDIS_DEMO.zip (2.54 MB)

使用特权

评论回复
沙发
纪国圣|  楼主 | 2022-5-15 20:58 | 只看该作者
望各位大佬解答。

使用特权

评论回复
板凳
rosemoore| | 2022-5-28 17:29 | 只看该作者
交叉网线连接的?

使用特权

评论回复
地板
纪国圣|  楼主 | 2022-5-28 18:19 | 只看该作者
本帖最后由 纪国圣 于 2022-5-28 18:25 编辑
rosemoore 发表于 2022-5-28 17:29
交叉网线连接的?

不是通过传统的网线连接,而是用USB走RNDIS协议实现一个虚拟网卡。

使用特权

评论回复
5
loutin| | 2022-5-29 11:23 | 只看该作者
你是通过交换机还是直连?

使用特权

评论回复
6
cemaj| | 2022-5-29 11:50 | 只看该作者
RNDIS没用过,看看网段是不是一致呢?

使用特权

评论回复
7
纪国圣|  楼主 | 2022-5-29 15:21 | 只看该作者
loutin 发表于 2022-5-29 11:23
你是通过交换机还是直连?

直接接到电脑上的。国外的那位大神也是这样连的,一点问题也没有。

使用特权

评论回复
8
纪国圣|  楼主 | 2022-5-29 15:24 | 只看该作者
cemaj 发表于 2022-5-29 11:50
RNDIS没用过,看看网段是不是一致呢?

现在就是网段不一致的问题。DHCP分配IP失败。

使用特权

评论回复
9
tifmill| | 2022-5-29 17:30 | 只看该作者
自动获取ip的吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

405

帖子

5

粉丝