1、尽量不要使用delay延时函数!应用程序中的延时函数对于速度的影响很大的。
2、尽量减少数据拷贝,数据拷贝也会浪费大量的时间。
3、就像别人说的,将缓存开大一点,你如果使用了ST的官方以太网库的话,有下面几个地方需要改打一点。
[C]
纯文本查看 复制代码
//STM32内部MAC发送和接收BUF个数#define ETH_RXBUFNB 10#define ETH_TXBUFNB10[C]
纯文本查看 复制代码
#define MEM_SIZE 20000 //内存堆heap大小#define MEMP_NUM_PBUF 30 //MEMP_NUM_PBUF:memp结构的pbuf数量,如果应用从ROM或者静态存储区发送大量数据时 //这个值应该设置大一点#define MEMP_NUM_TCP_SEG 300//MEMP_NUM_TCP_SEG:最多同时在队列中的TCP段数量#define PBUF_POOL_SIZE 30//PBUF_POOL_SIZE:pbuf内存池个数#define PBUF_POOL_BUFSIZE 512//PBUF_POOL_BUFSIZE:每个pbuf内存池大小#define TCP_MSS (1500 - 40) //最大TCP分段,TCP_MSS = (MTU - IP报头大小 - TCP报头大小#define TCP_SND_BUF (25*TCP_MSS)//TCP发送缓冲区大小(bytes).#define TCP_SND_QUEUELEN (10* TCP_SND_BUF/TCP_MSS)//TCP_SND_QUEUELEN: TCP发送缓冲区大小(pbuf).这个值最 //小为(2 * TCP_SND_BUF/TCP_MSS)#define TCP_WND (8*TCP_MSS) //TCP发送窗口注意:TCP_WND是发送窗口,这个值对于LWIP的速度影响非常大。
以下是我们在STM32F407探索者开发板上的LWIP网速测试,可以给你参考一下。
平台:STM32F407+LAN8720 RMII接口
协议栈:LWIP
系统:UCOSII
测试方法:netio测试TCP速度,开发板做netio服务器。电脑端为netio客户端
下图为未经过优化的测试结果。
可以从上图中看出,发送和接收的速度基本维持在1M左右,但是按照我上面说的方法进行设置以后测试的结果如下图
从上图可以看出这时的速度发送和接收基本快到了2M,说明效果还是很明显的,但是据我了解RTT优化到了开发板接收2.5M,发送7.5M的恐怖速度!!!
下面附上我的针对STM32F407探索者开发板的LWIP网速测试工程和netio组件,还有RTT关于netio组件的使用说明
netio组件.zip (157.61 KB )
实验7_6TCPIP网络组件Lwip之netio网速测试.pdf (246.53 KB )
LWIP优化测试.zip (1.39 MB )
1、尽量不要使用delay延时函数!应用程序中的延时函数对于速度的影响很大的。
2、尽量减少数据拷贝,数据拷贝也会浪费大量的时间。
3、就像别人说的,将缓存开大一点,你如果使用了ST的官方以太网库的话,有下面几个地方需要改打一点。
[C]
纯文本查看 复制代码
//STM32内部MAC发送和接收BUF个数#define ETH_RXBUFNB 10#define ETH_TXBUFNB10[C]
纯文本查看 复制代码
#define MEM_SIZE 20000 //内存堆heap大小#define MEMP_NUM_PBUF 30 //MEMP_NUM_PBUF:memp结构的pbuf数量,如果应用从ROM或者静态存储区发送大量数据时 //这个值应该设置大一点#define MEMP_NUM_TCP_SEG 300//MEMP_NUM_TCP_SEG:最多同时在队列中的TCP段数量#define PBUF_POOL_SIZE 30//PBUF_POOL_SIZE:pbuf内存池个数#define PBUF_POOL_BUFSIZE 512//PBUF_POOL_BUFSIZE:每个pbuf内存池大小#define TCP_MSS (1500 - 40) //最大TCP分段,TCP_MSS = (MTU - IP报头大小 - TCP报头大小#define TCP_SND_BUF (25*TCP_MSS)//TCP发送缓冲区大小(bytes).#define TCP_SND_QUEUELEN (10* TCP_SND_BUF/TCP_MSS)//TCP_SND_QUEUELEN: TCP发送缓冲区大小(pbuf).这个值最 //小为(2 * TCP_SND_BUF/TCP_MSS)#define TCP_WND (8*TCP_MSS) //TCP发送窗口注意:TCP_WND是发送窗口,这个值对于LWIP的速度影响非常大。
以下是我们在STM32F407探索者开发板上的LWIP网速测试,可以给你参考一下。
平台:STM32F407+LAN8720 RMII接口
协议栈:LWIP
系统:UCOSII
测试方法:netio测试TCP速度,开发板做netio服务器。电脑端为netio客户端
下图为未经过优化的测试结果。
可以从上图中看出,发送和接收的速度基本维持在1M左右,但是按照我上面说的方法进行设置以后测试的结果如下图
从上图可以看出这时的速度发送和接收基本快到了2M,说明效果还是很明显的,但是据我了解RTT优化到了开发板接收2.5M,发送7.5M的恐怖速度!!!
下面附上我的针对STM32F407探索者开发板的LWIP网速测试工程和netio组件,还有RTT关于netio组件的使用说明
netio组件.zip (157.61 KB )
实验7_6TCPIP网络组件Lwip之netio网速测试.pdf (246.53 KB )
LWIP优化测试.zip (1.39 MB )
举报