完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F407芯片,phy是DP83848,基于Lwip协议栈的TCP服务器模式程序已经调试成功,可以发送接收数据,ping延迟也小于1ms,但就是测试发送和接收速度只有几十kbps,后来听人说要改lwip中的缓存,我也改大了,但测试后还是只有一百多kbps,求教大神,怎么改才能提升传输速度啊????
|
|
相关推荐
29个回答
|
|
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 ) |
|
|
|
表示暂时慢得无所谓了。
|
|
|
|
多谢大神的回复,但是这些我都改了的,结果用TCP&UDP测试工具测试,发送和接受速度还是最多125k左右啊,1M完全没有啊,太伤感了。我没上系统,裸机跑的,而且就是用的ST的官方以太网库。请教大神,还能怎么改啊?
|
|
|
|
你先用netio这个组件测试一下呗。
|
|
|
|
|
|
|
|
|
|
|
|
这个需要你在开发板上做一个netio服务器,然后RTT那个测试文档里面说明了这个工具怎么使用的啊。我给的那个例程里面使用了UCOSII操作系统,不过netio服务器用的是RAW编程方式,可以很方便的移植到无操作系统的平台上
|
|
|
|
楼主,可以分享一下你写的程序吗,我也在学习f4+83848实现以太网,小白一个,希望楼主帮帮忙
|
|
|
|
我也是用的开发板的光盘中自带的ST库程序哈,不是自己写的(还没那水平哦),你买开发板应该都有程序的,不用我提供了吧
|
|
|
|
您好 您对战舰版stm32+enc28j60速度进行测试过吗?我手上有战舰版
|
|
|
|
没有对战舰stm32+enc28j60的速度进行测试
|
|
|
|
各位大侠,你们是怎么实现分包发送的呀?我每次只能发送1.5k左右大小的数据
|
|
|
|
降速怎么实现,加delay?
|
|
|
|
你的问题解决了吗?我用的是STM32F407,移植原子的UDP程序,发送的最大数据还不到1.5k,我猜想的原因是PBUF_POOL类型PBUF链表中
只有第一个pbuf的payload放进了数据,而链表中的第二个没有写进数据,我把每个PBUF的大小都定义为#define BUF_POOL_BUFSIZE 1024 + 54 54是各种首部,所以真正的数据区只是1024字节,然后申请内存ptr=pbuf_alloc1(PBUF_TRANSPORT,1476,PBUF_POOL);,这里只能设置1476最大就发送不出去了 ,然后网络调试助手只能收到前1024字节,后面的1476-1024字节都是0,求指教。。。。。谢谢 |
|
|
|
请您看看12楼的问题,望不吝赐教,谢谢。。。。鞠躬。。。
|
|
|
|
|
|
|
|
lz,你的这句话说反了:但是据我了解RTT优化到了开发板接收2.5M,发送7.5M的恐怖速度!!!
正确的是:发送2.5M,接收7.5M哦 怎么提高发送的速度呢?下面是我在lpc1778上测试的效果 |
|
|
|
|
|
|
|
STM32F107速度只有几十K,按照你的改了,怎么提高
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2600 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2421 浏览 5 评论
3279 浏览 3 评论
2871 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2822 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
722浏览 1评论
946浏览 0评论
1084浏览 0评论
716浏览 0评论
543浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-1 09:09 , Processed in 1.551903 second(s), Total 110, Slave 96 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号