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长时间会超时,我按照帖子改了任务优先级,也不行
/* èÎÎ&#241 ...

采用我提供的这个例子驱动,里面做过修正。

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 环境,不太会用,麻烦硬汉哥点拨一下
页: 1 [2] 3
查看完整版本: LwIP网络教程开始更新,使用MDK的RTE环境开发,配套RTX5和FreeRTOS两个版本,更新至第7章(2020-05-03)