打印
[STM32F2]

STM32F207+DP83848 如何实现以太网硬件流控?

[复制链接]
2645|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sjyf|  楼主 | 2015-11-5 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在我的应用中,我用UDP传送数据,STM32+DP83848采用UDP接收,如果PC端全速传送一个文件,STM32处理比较慢,会存在丢数据的情况。

我看STM32存在硬件流控设置,于是我就使能了硬件流控,但是流控并没有起作用。

请问,有没有这方面的例子,或者有经验的朋友,指点一下。谢谢。
沙发
myxiaonia| | 2015-11-5 15:02 | 只看该作者
硬件流控是为以太网dma接收设计的,就算流控起效了

你的应用层也必须加软件组包和拆包,只有这样做才是可靠的,否则就算硬件流控起效了程序健壮性也不好,这样的代码如果有代码审查的话是不可能通过审查的

使用特权

评论回复
板凳
sjyf|  楼主 | 2015-11-5 15:29 | 只看该作者
@myxiaonia
硬件流控不可靠吗?当MAC的FIFO满的时候,发送PAUSE帧,使发送方,暂停发送数据帧,以缓解接收方的压力,灯接收方的FIFO有空闲的时候,发送方再发送。既然硬件这样做了,软件就省些心。这样不好吗。组包和拆包,是在哪一层做的?又为什么要这么做呢?  谢谢。

使用特权

评论回复
地板
sjyf|  楼主 | 2015-11-6 08:20 | 只看该作者
帖子要沉了,看来大家都不太关注这一块啊.

使用特权

评论回复
5
fangyuanshan| | 2015-11-6 09:32 | 只看该作者
楼主这样的应用,最好用tcp传输文件;用udp当然也可以,但应该在程序中处理丢帧重传的问题。cpu提供的硬件流控我没怎么了解,但凭我对网络传输的了解,你说的硬件流控不会帮你解决文件传输稳定性问题。

使用特权

评论回复
6
sjyf|  楼主 | 2015-11-6 10:40 | 只看该作者
我的测试用PC来做的,实际情况是我要链接到其他人的设备上,我不知道它会以何种速度发送数据,而且数据是单向的,只管发,我的设备只是接收。这个协议估计是改不了了。 所以我只能最大限度的保证不丢数据。所以才想将硬件流控用起来。

使用特权

评论回复
7
sjyf|  楼主 | 2015-11-6 11:06 | 只看该作者
期待各个大侠,高手,出谋划策。

使用特权

评论回复
8
myxiaonia| | 2015-11-6 12:47 | 只看该作者
sjyf 发表于 2015-11-6 10:40
我的测试用PC来做的,实际情况是我要链接到其他人的设备上,我不知道它会以何种速度发送数据,而且数据是单 ...

看你这么说  怎么和串口透传差不多啊  透传模块稳定性肯定不怎么高的  因为协议就没保证

你说的问题还真的只能用硬件流控想办法了    我也没怎么注意过这个流控  当时看手册记得是mac层上和dma接收相关的  具体我也说不上来了

使用特权

评论回复
9
sjyf|  楼主 | 2015-11-6 13:08 | 只看该作者
对的确实是透传,收到之后转发给另外一个设备。
mac里面有Rx FIFO,DMA有接收缓冲区,程序设置是当RxFIFO收到完整一帧数据时,启动DMA读取FIFO,之后应用程序再做处理,设置  
ETH_InitStructure.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Disable;
使得DMA缓冲区有完之后进入休眠状态,而不丢弃FIFO中的内容。从而造成FIFO变满,触发MAC发送pause帧。我是一样人为地,但是这样一直不能产生pause帧。我也没有什么方法,确定RXFIFO变满过。

我通过手动设置ETH_DMAFCR寄存器中的bit0,能够手动发送一个pause帧,而且抓包工具也确实抓到了pause帧。但是好像没有效果。

真心不知道怎么回事了。

这个话题好像有点偏,大家都不这么用。通过datasheet也不知道怎么确定FIFO满。真实愁人哎。

使用特权

评论回复
10
sjyf|  楼主 | 2015-11-9 08:25 | 只看该作者

使用特权

评论回复
11
xiwh| | 2020-7-24 12:07 | 只看该作者
我现在也碰到了这个问题,我用的是STM32F407,手动设置ETH_DMAFCR寄存器的FCB位能产生一个psuse帧,对其他设备也能起到暂停效果,但就是没有在Rx FIFO满的时候发出pause帧,也不能确定Rx FIFO到底有没有满,请问楼主后面是怎么解决这个问题的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

粉丝