硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1991|回复: 5
收起左侧

[RL-TCPnet] 请教硬汉,采用V7-1000_RL-TCPnet V7.X实验_工程移植模板(RTX5)热插拔后PING不通的问题所在,谢谢!

[复制链接]

30

主题

90

回帖

180

积分

初级会员

积分
180
发表于 2024-6-18 17:15:30 | 显示全部楼层 |阅读模式
    工程硬件为STM32H743VI+LAN8720A,软件为V7-1000_RL-TCPnet V7.X实验_工程移植模板(RTX5)+https://forum.anfulai.cn/forum.p ... 7297&fromuid=58中的8720驱动。
    采用固定IP方式进行通信

    现象:首次通电或重新下载程序后可以正常通信。但期间热插拔后则完全PING不通。


   
    网线拔掉然后再插上的串口调试显示如下:


[17:11:00.855]收←◆Link is down
网线拔掉,复位网络,删除应用任务
Link is down
netUninitialize


[17:11:01.355]收←◆Link is down
netInitialize


[17:11:07.236]收←◆Link is up
100 MBit
Full duple
[17:11:07.265]收←◆x
网线插入,创建应用任务
tcp listen res = netOK: Operation succeeded




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-19 09:39:30 | 显示全部楼层
移植了这个用法没

【实战经验分享】一劳永逸的解决网线随意热插拔问题
https://forum.anfulai.cn/forum.p ... 5386&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2024-6-19 10:47:59 | 显示全部楼层
本帖最后由 sss3s 于 2024-6-19 14:12 编辑

多回复了一个

回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2024-6-19 11:00:12 | 显示全部楼层
本帖最后由 sss3s 于 2024-6-19 14:20 编辑
eric2013 发表于 2024-6-19 09:39
移植了这个用法没

【实战经验分享】一劳永逸的解决网线随意热插拔问题

经对比,您发的链接中netETH_Notify函数与V7-1000_RL-TCPnet V7.X实验_工程移植模板(RTX5)模板中的函数相同,AppTaskEthCheck函数修改成您发链接中的函数后同样热插拔后链接不成功

经测试,如果函数中出现netUninitialize();netInitialize();或仅屏蔽netUninitialize();均会导致连接不成功。
如果均屏蔽则在网线拔掉后,在短时间内插上可以连接成功,时间过长时则连接也不会成功。

V7-1000_RL-TCPnet V7.X实验_工程移植模板(RTX5)中的AppTaskEthCheck函数如下
void AppTaskEthCheck(void *argument){
        ThreadIdTaskMsgPro = NULL;
        g_ucEthLinkStatus = 0;
        netInitialize();        
        while(1)        {
                switch (g_ucEthLinkStatus)   {
                        case 0:
                        case 1:        
                                break;  
                        case 2:
                                if(ThreadIdTaskMsgPro == NULL)     
                                        ThreadIdTaskMsgPro = osThreadNew(AppTaskMsgPro, NULL, &ThreadMsgPro_Attr);
                                break;     
                        case 3:
                                netUninitialize();                        
                                osThreadTerminate(ThreadIdTaskMsgPro);
                                ThreadIdTaskMsgPro = NULL;
                                g_ucEthLinkStatus = 0;                        
                                netInitialize();  
                        default:    break;
                }               
                osDelay(10);
        }        
}
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2024-6-19 15:47:55 | 显示全部楼层
找到原因了,LAN8720有两个版本(V1.0)和(V1.1),我下载的是(V1.0)版本的所以出现问题,改为1.1版本后,目前没有发现问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-20 08:59:17 | 显示全部楼层
sss3s 发表于 2024-6-19 15:47
找到原因了,LAN8720有两个版本(V1.0)和(V1.1),我下载的是(V1.0)版本的所以出现问题,改为1.1版本后 ...

好的,谢谢告知最终原因。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 02:50 , Processed in 0.041673 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表