jipolun 发表于 2022-5-1 12:33:40

stm32H7 netxduo iperf tcp只有55MBits,UDP 却有95MBits,找不到原因

stm32H7 netxduo iperf tcp只有55MBits,UDP 却有95MBits,找不到原因

netxDUO 的参数为官方默认,
PAYLOAD_SIZE    1536
NX_PACKET_POOL_SIZE((PAYLOAD_SIZE+ sizeof(NX_PACKET))*40)

eric2013 发表于 2022-5-3 08:52:37

帮顶,后面我测测。

jipolun 发表于 2022-5-4 20:17:49

谢谢哈,我现在的想法就是把netxduo放到itcm 或者dtcm里面,看看能不能把tcp速度跑快一点

eric2013 发表于 2022-5-5 10:07:56

jipolun 发表于 2022-5-4 20:17
谢谢哈,我现在的想法就是把netxduo放到itcm 或者dtcm里面,看看能不能把tcp速度跑快一点

跟这个关系不大,F4系列都轻轻松松跑满速。

jipolun 发表于 2022-5-6 17:27:23

eric2013 发表于 2022-5-5 10:07
跟这个关系不大,F4系列都轻轻松松跑满速。

确实哈
我今天把数据段放DTCM里面跑,(除了dma要访问的软件)
把NETXDUO NX_*开头的文件放ITCM (全部放,放不进去。。。。。尴尬)
用iperf 测试,tcp 吞吐量没有改善
试了一下,把ETH那个dma描述符 原本是4,改为了12,发现没有啥用

catro 发表于 2022-5-7 15:31:11

请问是用的ST提供的网络驱动吗?猜想是TCP用软件计算校验和,UDP默认是关闭校验和的,所以直接就跑满了。但是即使软件计算校验和,应该也是能跑慢百兆网络的。可以看看是不是cache没有开启。

jipolun 发表于 2022-5-8 23:59:49

catro 发表于 2022-5-7 15:31
请问是用的ST提供的网络驱动吗?猜想是TCP用软件计算校验和,UDP默认是关闭校验和的,所以直接就跑满了。但 ...

您好,是用st使用的网络驱动,校验和 tcp和udp都是软件计算的
mpu和canche都已经开启了。
因为udp可以跑95MBits,所以我在想网络底层应该是没有问题的,tcp跑不上去,我在想是不是threadX netxduo d的参数没配对,因为目前用的是cube st默认提供的,我不知道到底是那个参数,我周一周二再测测看

Jarm 发表于 2024-3-15 16:11:09

eric2013 发表于 2022-5-5 10:07
跟这个关系不大,F4系列都轻轻松松跑满速。

大佬,请问这个问题怎么解决的?我的情况是UDP发送50Mb/s,接收96Mb/s,tcp发送只有33Mb/s

eric2013 发表于 2024-3-16 10:00:18

Jarm 发表于 2024-3-15 16:11
大佬,请问这个问题怎么解决的?我的情况是UDP发送50Mb/s,接收96Mb/s,tcp发送只有33Mb/s

你这个是不是用的外部QSPI Flash跑的,如果是的话,也算正常,不还可以优化提升速度。

Jarm 发表于 2024-3-19 16:05:32

eric2013 发表于 2024-3-16 10:00
你这个是不是用的外部QSPI Flash跑的,如果是的话,也算正常,不还可以优化提升速度。

不是,放ram里跑的,目前在netxduo上,我tcp发送78Mb/s,但是接收速度只有200k,我关闭了nagle算法,抓包发现会有周期性的100ms回复TCP window update,能指导下怎么才能让接受速率跑满吗?谢谢
页: [1]
查看完整版本: stm32H7 netxduo iperf tcp只有55MBits,UDP 却有95MBits,找不到原因