Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Network
关于STM32H7-Nucleo中的LWIP 2.0.2版本
发布于 2018-08-01 21:43:10 浏览:4734
订阅该版
目前STM32H7-Nucleo开发板的默认移植是LWIP1.4.1的版本,可以正常PING通以及运行。我自己切换到RT-Thread 3.0.4版本的LWIP 2.0.2版本中,在rtconfig.h中的配置参数是一样的,但是TCP运行不起来,却可以PING通开发板。 理论上来说可以PING得通,但是建立TCP服务器,select函数却总是无法检测到远程TCP客户端的连接,所有代码在LWIP 1.4.1上都一样,但是LWIP2.0.2中有问题,LWIP配置如下: 感觉没啥特别的地方?是否我遗漏了些LWIP2.0.2的特殊配置?求指教。 /* Network stack */ #define RT_USING_LWIP #define RT_USING_LWIP202 #define RT_LWIP_ICMP #define RT_LWIP_IGMP // #define RT_LWIP_SNMP #define RT_LWIP_UDP #define RT_LWIP_TCP #define RT_LWIP_DNS #define RT_LWIP_DHCP #define RT_LWIP_PBUF_NUM 8 #define RT_LWIP_RAW_PCB_NUM 32 #define RT_LWIP_UDP_PCB_NUM 16 #define RT_LWIP_TCP_PCB_NUM 16 #define RT_LWIP_TCP_SEG_NUM 40 #define RT_LWIP_TCP_SND_BUF 8192 #define RT_LWIP_TCP_WND 8192 #define RT_MEMP_NUM_NETCONN 32 #define RT_LWIP_IPADDR "192.168.10.30" #define RT_LWIP_GWADDR "192.168.10.1" #define RT_LWIP_MSKADDR "255.255.255.0" #define RT_LWIP_TCPTHREAD_PRIORITY 12 #define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 #define RT_LWIP_TCPTHREAD_STACKSIZE 4096 #define RT_LWIP_ETHTHREAD_PRIORITY 14 #define RT_LWIP_ETHTHREAD_MBOX_SIZE 8 #define RT_LWIP_ETHTHREAD_STACKSIZE 1024 #define RT_LWIP_REASSEMBLY_FRAG #define LWIP_NETIF_STATUS_CALLBACK 1 #define SO_REUSE 1 #define LWIP_SO_LINGER 1
查看更多
8
个回答
默认排序
按发布时间排序
yqiu
2018-08-02
这家伙很懒,什么也没写!
参考下这个帖子,看是否有帮助呢 [https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=7216&highlight=LWIP%2B1.4.1](https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=7216&highlight=LWIP%2B1.4.1)
yqiu
2018-08-02
这家伙很懒,什么也没写!
建议多使用下论坛的搜索功能,下面这个帖子也可以参考下 [https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=6921&highlight=LWIP%2B2](https://www.rt-thread.org/qa/for ... &highlight=LWIP%2B2)
mcszx
2018-10-12
这家伙很懒,什么也没写!
我也遇到这个问题用的是stm32f107。用例程里的tcpserve,第一次握手就没回,接收是接收到了,响应发送有问题。还没解决。
zchong
2018-10-13
这家伙很懒,什么也没写!
[i=s] 本帖最后由 zchong 于 2018-10-13 14:53 编辑 [/i] lwip里的代码不同,52行,在lwip1.4.1中取的非,初始化后,LINKUP是置上的,2.0.2正好相反,正常情况应该是监测PHY状态,改变这个状态位。按照代码的意思,也可以不用监测PHY状态,直接默认置上,但标志位无法传递过去,原因是eth_device_init函数中,没有将状态传递,可修改成如下方式,由用户决定 ``` rt_err_t eth_device_init(struct eth_device * dev, char *name) { rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | dev->flags; #if LWIP_IGMP /* IGMP support */ flags |= NETIF_FLAG_IGMP; #endif return eth_device_init_with_flag(dev, name, flags); } ``` ``` static void tcpip_init_done_callback(void *arg) { rt_device_t device; struct eth_device *ethif; ip4_addr_t ipaddr, netmask, gw; struct rt_list_node* node; struct rt_object* object; struct rt_object_information *information; LWIP_ASSERT("invalid arg.\n",arg); IP4_ADDR(&gw, 0,0,0,0); IP4_ADDR(&ipaddr, 0,0,0,0); IP4_ADDR(&netmask, 0,0,0,0); /* enter critical */ rt_enter_critical(); /* for each network interfaces */ information = rt_object_get_information(RT_Object_Class_Device); RT_ASSERT(information != RT_NULL); for (node = information->object_list.next; node != &(information->object_list); node = node->next) { object = rt_list_entry(node, struct rt_object, list); device = (rt_device_t)object; if (device->type == RT_Device_Class_NetIf) { ethif = (struct eth_device *)device; /* leave critical */ rt_exit_critical(); LOCK_TCPIP_CORE(); netif_add(ethif->netif, &ipaddr, &netmask, &gw, ethif, netif_device_init, tcpip_input); if (netif_default == RT_NULL) netif_set_default(ethif->netif); #if LWIP_DHCP /* set interface up */ netif_set_up(ethif->netif); /* if this interface uses DHCP, start the DHCP client */ dhcp_start(ethif->netif); #else /* set interface up */ netif_set_up(ethif->netif); #endif if (ethif->flags & ETHIF_LINK_PHYUP) { netif_set_link_up(ethif->netif); } UNLOCK_TCPIP_CORE(); /* enter critical */ rt_enter_critical(); } } /* leave critical */ rt_exit_critical(); rt_sem_release((rt_sem_t)arg); } ```
hbaokw
2018-10-21
这家伙很懒,什么也没写!
>lwip里的代码不同,52行,在lwip1.4.1中取的非,初始化后,LINKUP是置上的,2.0.2正好相反,正常情况应该是 ... --- 有可能如兄台你所说,不过最新用GCC编译器整的工程使用2.0.2没有这个问题了。
zchong
2018-10-22
这家伙很懒,什么也没写!
>有可能如兄台你所说,不过最新用GCC编译器整的工程使用2.0.2没有这个问题了。 ... --- 没道理啊,换编译器版本应该解决不了这个问题,难道代码中有phy状态检测?
mcszx
2018-10-23
这家伙很懒,什么也没写!
>我也遇到这个问题用的是stm32f107。用例程里的tcpserve,第一次握手就没回,接收是接收到了,响应发送有问 ... --- [https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=8048](我遇到的问题解决了,我在这里回复了解决的方)
whj467467222
认证专家
2019-03-23
开源,分享,交流,共同进步
楼主在H7移植LWIP的经验可否分享一下
撰写答案
登录
注册新账号
关注者
0
被浏览
4.7k
关于作者
hbaokw
这家伙很懒,什么也没写!
提问
9
回答
10
被采纳
0
关注TA
发私信
相关问题
1
lwip1.4.1连接经常会断开无法连接上,可以ping通
2
LPC1768:RTT+LWIP+webserver用IE刷网页出现硬件中断错误(已经解决)
3
求一些LWIP开发的经验,目前ping一直不稳定。
4
stm32f207+dp83848无法ping通
5
RTT下的LWIP传递机制
6
rtt内lwip的socket是否是线程安全?
7
Lwip+enc28j60无法ping通
8
坑爹的rtconfig.h lwip关掉了checksum
9
花了一个晚上,把RT2.0的LWIP、网卡驱动、文件系统整合起来了,发现一点小问题
10
lwip例程中udp发送时如何指定源端口发送到指定目的地端口
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
CherryUSB的bootuf2配置
2
在用clangd开发RTT吗,快来试试如何简单获得清晰干净的工作区
3
GD32F450 片内 flash驱动适配
4
STM32H7R7运行CherryUSB
5
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
6
次点赞
YZRD
2
篇文章
5
次点赞
lizimu
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部