硬件配置: STM32F407 + DP83848 + FreeRTOS V10.1.1 + LWIP 2.1.2 2018年12月5日14:31:24
1、先读取 PHY 寄存器 , 查看 自主协商 结果
PHY自主协商结果:ETH_Mode ETH_Mode_FullDuplex
PHY自主协商结果:ETH_Speed ETH_Speed_100M
2、安装 测试软件 : Jperf2.0下载及使用方法介绍
3、添加 lwip 源文件 下的 lwip-2.1.2\src\apps\lwiperf lwiperf.c 文件
4、407 这端 是 跑 TCP 服务器,然后 电脑客户端去收发数据进行性能测试,代码如下:
static void vTaskLwipPerf(void *pvParameters) { ip_addr_t perf_server_ip; IP_ADDR4( &perf_server_ip, 192, 168, 0, 10 ); //IP 为 407 自己的 静态IP for(;;) { lwiperf_start_tcp_server( &perf_server_ip, 9527, NULL, NULL ); vTaskDelay( 2000 / portTICK_PERIOD_MS ); } }
实测速度如下,只有 1MB/S 不到 的 速度 ,理论应该可以到12.5MB/S 的 速度啊
TCP_MSS 280 被我改成了 1460,速度 上升了一个数量级,大概到 4.5MB/S 的 速度 !!!
/** * TCP_TTL: Default Time-To-Live value. */ #define TCP_TTL IP_DEFAULT_TTL /* IP 数据包中的TTL 的值 */ /* Controls if TCP should queue segments that arrive out of order. Define to 0 if your device is low on memory. */ #define TCP_QUEUE_OOSEQ ( LWIP_TCP ) /* TCP是否缓冲接收到的无序报文段 */ /* TCP Maximum segment size. */ #define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) TCP最大报文段大小 */ /* TCP sender buffer space (bytes). */ #define TCP_SND_BUF (4*TCP_MSS) /* TCP 发送缓冲区大小,增大该值可以提升TCP性能 */ /* TCP receive window. */ #define TCP_WND (4*TCP_MSS) /* TCP 发送窗口大小,增大改值可以提升TCP性能 */