基于LWIP实现实时网速的统计

本文介绍了如何在基于STM32F407VGT6和LAN8720A的硬件平台上,利用LWIP 2.0.3版本实现实时网速统计。通过理解LWIP的数据接收过程,在中断回调函数中累加数据长度,每秒进行速度转换并显示。主要涉及中断处理、线程调度和LWIP统计选项的启用。
摘要由CSDN通过智能技术生成
  • LWIP版本为2.0.3,注意分辨;其他版本应该也可以实现
  • 使用RTThread版本4.1.0
  • 硬件为STM32F407VGT6+LAN8720A

实现思路:理解LWIP数据接收过程,在收到数据后读取数据长度,并对数据长度做累加计算,间隔1秒进行单位转换后即可。

分析接收过程:当数据来临时触发硬件中断,调用中断回调函数 HAL_ETH_RxCpltCallback()函数,在回调函数中调用eth_device_ready(),在eth_device_ready中通过邮箱传递指针到eth_rx_thread_entry线程中进行接收数据,在eth_rx_thread_entry中创建接收使用的pbuf指针,在线程中完成数据的一次拷贝,之后调用函数device->netif->input(p, device->netif);实际上是netif_input()函数,之后调用ethernet_input()函数,在ethernet_input()中调用ip4_input()函数或者etharp_input()函数区分IP包和ARP包,之后IP包又分为UDP、TCP、ICMP和IGMP处理;ARP包分为ARP请求和ARP应答。

以TCP数据为例,流程图如下:

实现方案:在硬件接收到数据后进行统计接收的字节数,字节数可有接收的pbuf结构体的len提供,pb

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值