eric2013
发表于 2020-5-3 16:48:05
hpdell 发表于 2020-4-20 17:17
你好,请问下, 这个 rtx5 + Lwip 是不是必须得使用 rte 环境配置才行啊 ??
我 刚刚单独移植了一个 rt ...
可以不使用RTE的。
hpdell
发表于 2020-5-3 21:13:35
eric2013 发表于 2020-5-3 16:48
可以不使用RTE的。
期待期待呀
STM32-HGJ
发表于 2020-5-21 09:44:04
期待LWIP文档更新
yuanzhongda
发表于 2020-6-3 10:54:03
硬汉哥,使能dhcp后一定要连接到路由器或交换机吗,直接连接到电脑,板子是不是会自动生成和电脑同一网段的ip
eric2013
发表于 2020-6-3 11:03:14
yuanzhongda 发表于 2020-6-3 10:54
硬汉哥,使能dhcp后一定要连接到路由器或交换机吗,直接连接到电脑,板子是不是会自动生成和电脑同一网段的 ...
直接到电脑端的话,你得整个DHCP服务器,显得太繁琐了。很多初学的搞不定,所以不推荐。
yuanzhongda
发表于 2020-6-3 11:19:16
eric2013 发表于 2020-6-3 11:03
直接到电脑端的话,你得整个DHCP服务器,显得太繁琐了。很多初学的搞不定,所以不推荐。
那如果我是想让网口数据透传有什么办法吗,就是不管是什么协议都转发出去,我需要的就处理,不需要的就直接透传,透传的不区分tcp和udp这种,有这种办法吗
eric2013
发表于 2020-6-3 11:21:13
yuanzhongda 发表于 2020-6-3 11:19
那如果我是想让网口数据透传有什么办法吗,就是不管是什么协议都转发出去,我需要的就处理,不需要的就直 ...
你设置下你的程序不就行了,比如10秒内无法获取IP地址,直接使用固定IP即可。
yuanzhongda
发表于 2020-6-3 11:27:46
eric2013 发表于 2020-6-3 11:21
你设置下你的程序不就行了,比如10秒内无法获取IP地址,直接使用固定IP即可。
没太看懂,我的意思是板子和pc端相连,pc端一直发送数据,但是板子一端不知道pc端的发送数据协议以及pc的ip,可以把数据透传出去吗。如果10秒内无法获取IP地址,使用固定ip不还是一样吗。
eric2013
发表于 2020-6-3 11:31:27
yuanzhongda 发表于 2020-6-3 11:27
没太看懂,我的意思是板子和pc端相连,pc端一直发送数据,但是板子一端不知道pc端的发送数据协议以及pc的 ...
问:硬汉哥,使能dhcp后一定要连接到路由器或交换机吗,直接连接到电脑,板子是不是会自动生成和电脑同一网段的ip
答:你设置下你的程序不就行了,比如10秒内无法获取IP地址,直接使用固定IP即可。
问:没太看懂,我的意思是板子和pc端相连,pc端一直发送数据,但是板子一端不知道pc端的发送数据协议以及pc的ip,可以把数据透传出去吗。如果10秒内无法获取IP地址,使用固定ip不还是一样吗。
答:UDP广播
yuanzhongda
发表于 2020-6-5 14:51:23
谢硬汉哥,如果想从mac层转发,有类似 netETH_ReceiveRaw这样的函数吗,我看这个该函数写的不支持ipv4
gpfrank
发表于 2020-6-28 23:58:26
本帖最后由 gpfrank 于 2020-6-29 00:08 编辑
在例程更改了一下PHY,在nucleuo-H743ZI上跑起来了。用的V5编译器一切正常,换成V6编译器就直接hardfault了。可能是什么原因呢?,补充一下,用的freertos + LWIP的版本。V1.0的。
lyhawk2007
发表于 2020-8-5 09:21:15
Assertion "failed to create mem_mutex" failed at line 543 in D:\Program Files (x86)\Keil_v5\PACK\lwIP\lwIP\2.1.0\lwip\src\core\mem.c
Assertion "failed to create lock_tcpip_core" failed at line 613 in D:\Program Files (x86)\Keil_v5\PACK\lwIP\lwIP\2.1.0\lwip\src\api\tcpip.c
移植完,提示以上错误,好像是互斥信号量申请失败
eric2013
发表于 2020-8-5 10:31:23
lyhawk2007 发表于 2020-8-5 09:21
Assertion "failed to create mem_mutex" failed at line 543 in D:\Program Files (x86)\Keil_v5\PACK\lwI ...
MDK终于把LwIP的CMSIS-RTOS接口驱动错误修改了
http://www.armbbs.cn/forum.php?mod=viewthread&tid=98831&fromuid=58
(出处: 硬汉嵌入式论坛)
lyhawk2007
发表于 2020-8-5 10:44:19
/* èÎÎñμÄêôDÔéèÖà */
const osThreadAttr_t ThreadStart_Attr =
{
/* Î′ê1óÃ */
// .cb_mem = &worker_thread_tcb_1,
// .cb_size = sizeof(worker_thread_tcb_1),
// .stack_mem = &worker_thread_stk_1,
// .stack_size = sizeof(worker_thread_stk_1),
// .priority = osPriorityAboveNormal,
// .tz_module = 0
.name = "ThreadStart",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal4,
.stack_size = 2048,
};
const osThreadAttr_t ThreadEthCheck_Attr =
{
.name = "osRtxEthCheckThread",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal3,
.stack_size = 1024,
};
const osThreadAttr_t ThreadLwIPPro_Attr =
{
.name = "osRtxLwIPProThread",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal2, //osPriorityNormal2
.stack_size = 1024,
};
const osThreadAttr_t ThreadMsgPro_Attr =
{
.name = "ThreadMsgPro",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal2,//osPriorityNormal2
.stack_size = 1024,
};
const osThreadAttr_t ThreadLED_Attr =
{
.name = "ThreadLED",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal1,
.stack_size = 1024,
};
const osThreadAttr_t ThreadUserIF_Attr =
{
.name = "ThreadUserIF",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal,
.stack_size = 1024,
};
用的是这个配置,ping一段时间后会超时,使用atkkpin软件进行ping,忽略ping时间间隔
lyhawk2007
发表于 2020-8-5 10:47:01
这个问题已经解决了,现在是ping长时间会超时,我按照帖子改了任务优先级,也不行
/* èÎÎñμÄêôDÔéèÖà */
const osThreadAttr_t ThreadStart_Attr =
{
/* Î′ê1óÃ */
// .cb_mem = &worker_thread_tcb_1,
// .cb_size = sizeof(worker_thread_tcb_1),
// .stack_mem = &worker_thread_stk_1,
// .stack_size = sizeof(worker_thread_stk_1),
// .priority = osPriorityAboveNormal,
// .tz_module = 0
.name = "ThreadStart",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal4,
.stack_size = 2048,
};
const osThreadAttr_t ThreadEthCheck_Attr =
{
.name = "osRtxEthCheckThread",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal3,
.stack_size = 1024,
};
const osThreadAttr_t ThreadLwIPPro_Attr =
{
.name = "osRtxLwIPProThread",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal2, //osPriorityNormal2
.stack_size = 1024,
};
const osThreadAttr_t ThreadMsgPro_Attr =
{
.name = "ThreadMsgPro",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal2,//osPriorityNormal2
.stack_size = 1024,
};
const osThreadAttr_t ThreadLED_Attr =
{
.name = "ThreadLED",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal1,
.stack_size = 1024,
};
const osThreadAttr_t ThreadUserIF_Attr =
{
.name = "ThreadUserIF",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal,
.stack_size = 1024,
};
eric2013
发表于 2020-8-5 11:04:28
lyhawk2007 发表于 2020-8-5 10:47
这个问题已经解决了,现在是ping长时间会超时,我按照帖子改了任务优先级,也不行
/* èÎÎñ ...
采用我提供的这个例子驱动,里面做过修正。
lyhawk2007
发表于 2020-8-5 11:11:37
V5-2001_LwIP V2.X实验_工程移植模板(FreeRTOS)V1.1.rar (2.80MB)我用的是这个模板,修改了DM916x的驱动,改成我的芯片KSZ8873,您说的驱动,麻烦发个链接谢谢!
lyhawk2007
发表于 2020-8-5 11:15:19
我之前调试工正点原子的例子,也是ping长时间超时。后来用cubexmx生成一个官方例程,还是ping会超时。这个问题困扰我好久了,现在改为您这边提供的例程,还是ping长时间会超时,我用的都是atkkping。忽略ping间隔这种方式测试的
eric2013
发表于 2020-8-5 11:17:48
lyhawk2007 发表于 2020-8-5 11:11
V5-2001_LwIP V2.X实验_工程移植模板(FreeRTOS)V1.1.rar (2.80MB)我用的是这个模板,修改了DM916x的驱 ...
这个例子就是已经修改好的,ping几百万包无压力啊。。。。
你这个是你自己没有移植好啊。
lyhawk2007
发表于 2020-8-5 11:31:46
测试时候用tcp小助手连接1001端口,数据发送时间10ms,同时开启atkkping进行ping操作,忽略ping间隔,很快就会ping超时的。如果用电脑的ping操作,应该是不会超时的,或者用atkkping 的间隔改为100ms长时间ping也应该不会有问题。这个问题应该是数据量大的时候,中断处理不过来,导致之后的数据包堆积无法得到处理,最好导致ping直接无法回复,您那边也可以再测测看。
eric2013
发表于 2020-8-5 11:53:41
lyhawk2007 发表于 2020-8-5 11:31
测试时候用tcp小助手连接1001端口,数据发送时间10ms,同时开启atkkping进行ping操作,忽略ping间隔,很快 ...
这个早就测试过了,无压力,,,,
这个例子之前是V1.0版本,升级到V1.1就是解决了这个问题。
------
升级LwIP网络教程配套例子到V1.1版本,提升长时间数据批量传输的稳定性
http://www.armbbs.cn/forum.php?mod=viewthread&tid=97549
ps:当然可以帮你再测试下。
lyhawk2007
发表于 2020-8-5 13:32:27
void ethernetif_poll (struct netif *netif) {
#if defined (PHY_POLL)
struct ethernetif *eth = netif->state;
if (!eth->phy_ok || eth->link == ARM_ETH_LINK_DOWN) {
return;
}
if ((eth->rx_event) || (!eth->event_rx_frame)) {
/* process received ethernet packet */
ethernetif_input (netif);
}
osDelay(1);
#elif defined(PHY_EVENT)
我使用的是Poll模式,刚才测试2万包后ping超时,断点发现eth->rx_event=0,eth->event_rx_frame=1,不再进行接收帧处理,程序没有死,还在正常运行
eric2013
发表于 2020-8-5 14:11:09
lyhawk2007 发表于 2020-8-5 13:32
void ethernetif_poll (struct netif *netif) {
#if defined (PHY_POLL)
struct ethernetif *eth = net ...
已经50万包了,TCP,10ms一次回环,ping包不间断最快速度。
lyhawk2007
发表于 2020-8-5 14:16:49
这个和phy是否会有关系呢,我用的是KSZ8873 这颗,RMII接口,我发现卡的时候ETH_IRQHandler()这个中断很久才会进一次,数据收发不正常
eric2013
发表于 2020-8-5 14:20:25
lyhawk2007 发表于 2020-8-5 14:16
这个和phy是否会有关系呢,我用的是KSZ8873 这颗,RMII接口,我发现卡的时候ETH_IRQHandler()这个中断很久 ...
看看是不是你的硬件设计有问题。
等我这里100万包的时候,再给你看下。
lyhawk2007
发表于 2020-8-5 14:21:58
你用的这颗phy,是RMII还是MII接口
eric2013
发表于 2020-8-5 14:22:40
lyhawk2007 发表于 2020-8-5 14:21
你用的这颗phy,是RMII还是MII接口
RMII
lyhawk2007
发表于 2020-8-5 14:23:07
我根据这个问题更像是出在底层phy驱动上,不像是上层问题,因为出问题时候,连底层中断都不进
zxlabc009
发表于 2020-8-14 08:09:43
eric2013 发表于 2020-8-5 10:31
MDK终于把LwIP的CMSIS-RTOS接口驱动错误修改了
http://www.armbbs.cn/forum.php?mod=viewthread&tid=988 ...
请教硬汉哥,LWIP之前也用了,内存问题纠结很久,内存堆的时候会慢慢的内存不足,导致死机重启,改成内存池后TCP反复连接断开,仍然有内存错误死机的情况,相比较而言,是不是RL-TCPnet更省心一点
sunwindsz
发表于 2020-12-4 22:46:20
:):):){:32:}{:32:}{:32:}{:32:}
手牵手看夕阳
发表于 2021-1-18 09:26:13
eric2013 发表于 2020-5-3 16:47
升级配套例子到V1.1版本。
有ucosIII系统下移植LWIP的工程吗?
sunwindsz
发表于 2021-1-18 19:25:27
感谢分享,写的挺好的。学习了。
参考网上的网友的资料,在硬汉的加入了webserver演示功能,觉得挺有意思的。参考附件和附图效果...
单个网页去访问没问题,发现如果打开两个网页同时去访问,运行几分钟后就会卡住,不知道问题在哪里?顺便请高手帮看一下
sunwindsz
发表于 2021-1-18 19:47:42
感谢硬汉的分享资料,非常不错,值得学习。
在硬汉例子的基础上参考了其他网友的资料,加上了webserver演示,挺有意思。程序和效果如附件,供有兴趣的参考。
单个网页访问服务器没有问题,但如果打开两个网页同时访问就会卡住,请高手帮看一下问题。
sunwindsz
发表于 2021-1-19 08:50:14
sunwindsz 发表于 2021-1-18 19:47
感谢硬汉的分享资料,非常不错,值得学习。
在硬汉例子的基础上参考了其他网友的资料,加上了webserver演 ...
内容重复了,要如何删除?
snakeemail
发表于 2021-3-9 21:21:16
sunwindsz 发表于 2021-1-18 19:47
感谢硬汉的分享资料,非常不错,值得学习。
在硬汉例子的基础上参考了其他网友的资料,加上了webserver演 ...
你能不能想法,只接收1个socket?好像不行,至少有一个可以备用
lizhaohui513
发表于 2021-3-21 22:57:33
感谢楼主的分享
请教个很小白的问题
STM32H743芯片网口 都是自动CRC校验 FCS的吧 不需要设置吧
可不可以这样说 只有芯片网口中断接收到数据 就认为数据是对的?
目前有个项目用modBus Poll老提示 Transaction ID error(接收的帧ID序号不是发送的帧ID号),不知道是硬件还是软件的问题
eric2013
发表于 2021-4-2 08:55:08
lizhaohui513 发表于 2021-3-21 22:57
感谢楼主的分享
请教个很小白的问题
STM32H743芯片网口 都是自动CRC校验 FCS的吧 不需要设置吧
回头我试试。
lizhaohui513
发表于 2021-4-7 15:03:17
eric2013 发表于 2021-4-2 08:55
回头我试试。
看文档默认是自动校验的,有地方可以设置,包括包头校验,IP校验等等
手牵手看夕阳
发表于 2021-4-14 17:55:37
硬汉哥你好,我按照安富莱_STM32-V5开发板_LwIP V2.X网络教程(V0.1).pdf进行操作,keil的版本是5.17,用到的软件包都是最新的,一步步按照手册做完后编译发现有错误。错误如下:
手牵手看夕阳
发表于 2021-4-14 18:07:36
硬汉哥你好: 今天按照安富莱_STM32-V5开发板_LwIP V2.X网络教程(V0.1).pdf的第6章 LwIP 网络协议栈移植( RTX5),移植LWIP。keil版本是5.17,用到软件包是都是最新的,如图所示:
一步一步按照手册操作,最后编译时出现错误,错误如下图,第一次使用MDK 的 RTE 环境,不太会用,麻烦硬汉哥点拨一下