和我最近测试的结果大致相同,STM32F7 上TCP 速率3Mbps左右。而之前我测试UDP,可以到30Mbps 以上。 1、测试目的9 L, |$ u; d. I: R- i 在尽量保持硬件和软件一致的前提下,测试LWIP和DJYIP两个协议栈的TCP接收不同包的速度。 2、测试方法4 C5 |) H; F3 B5 x- { 用一块STM32F7的发送板,应用层无延迟调用TCP发送函数send(),不断发送不同大小的数据包,数据包大小范围64 ~ 1460byte,接收端每1秒统计接收到的数据包,交终端上显示接收的速度。(当然,运行LWIP和DJYIP的两块接收板,运行在相同的主频,协议栈的pbuf缓冲、TCP接收窗口大小、优先级等一致。) 3、软硬件平台 硬件平台6 G5 ^4 m% n! j* l# `; J' u3 C LWIP DJYIP 运行板件 ST官方板STM32756G-EVAL2 STM32F7核心板 运行主频 200MHz 200MHz 连接方式 与发送板直连 与发送板直连 编译调试 MDK eclipse 软件平台" g2 M o! _2 I* |$ V- d0 f LWIP DJYIP9 K: U2 v8 m% z: K/ k5 U) U 网络驱动接收方式 中断 中断+ a; D- }1 L& S0 c+ b+ ?9 L pbuf大小 16kbytes 16kbytes8 ]* n' y4 A( F TCP窗口 & ]# U; n$ D# c0 ?7 V; ? 2048 2048 其中,运行在STM32756G-EVAL2的LWIP的软件代码,是直接从ST官方下载的STM32Cube_FW_F7_V1.6.0版本固件库,2 n. Z6 j) x+ c$ ~$ t! R 编译运行在MDK5.12.2 R- L* k( K5 ?( k' p 4、测试步骤 (1)源码编写及修改8 R4 ~3 r. _0 P" y 主要是比较基础的socket编程,发送板作为TCP客户端,两块接收板作为TCP服务器,客户端板建立TCP连接后,一直 发送程序,服务器一直接收TCP数据,并统计接收速度。( @& W! G c9 C3 c 对STM32Cube_FW_F7_V1.6.0源码中LWIP的配置,需要修改lwipopts.h,主要修改了如下两行代码9 e1 C! Y8 ]* b( s0 |
5、测试结果- A4 m ?; p! p9 ]5 B4 F; G 测试结果如下表所示 8 w$ k1 c! F9 t5 K3 l5 F+ v 发送包(byte) LWIP(Mbytes/s) DJYIP(Mbytes/s)- K8 V% j0 Y) i2 }9 j 1400 3.02 3.18 1024 4.22 3.16/ R- }, a5 k2 {- l$ m% j4 | 512 3.07 30 L% V& P* n1 }8 J: { 256 2.02 2.5 128 0.2±0.2 1.76 64 0.2±0.2 1.123 g2 U, r. ^3 P& o6 \' _* k rand*1460 1M内变动 2.52 其中,rand是产生0~1的随机数。LWIP这组数据中,1024的速度大于1400,有可能是# x! h0 w9 P: T$ B" a5 N# q 因为1024是2的整数次幂的原因(可能猜测)。5 T) c- f' z6 S, ^6 z( r& u7 s* f5 R % I5 J% f( N1 j" d7 X7 r9 X |
基于STM32F746G-Discover的扩展电路板
【合集】STM32F7教程、资料大集合
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集
基于STM32F7中实现采集和中断