STM32H750XBH6的ETH模块的TCP segmentation offload功能分析

TCPsegmentationoffloadTCP\quad segmentation\quad offloadTCPsegmentationoffload功能可以将图1中处于运输层的TCPTCPTCP或UDPUDPUDP协议的一个较大的数据包划分为多个小的数据包来传送,注意这里必须是处于运输层的TCPTCPTCP或UDPUDPUDP协议(但是对于这一块,STM32H750XBH6的用户手册只是重点描述了TCPTCPTCP,UDPUDPUDP只是提了一下,具体支持与否还不知道如图2和图3所示),其它协议的数据包是不行的。该功能只能用于全双工模式。
 
图1.
 
图2.
 
图3.

TCPsegmentationoffloadTCP\quad segmentation\quad offloadTCPsegmentationoffload功能在寄存器中的使能位如图4所示,这个应该是主使能位,图5中的使能位是发送描述符里面的使能位。TCPsegmentationoffloadTCP\quad segmentation\quad offloadTCPsegmentationoffload功能最重要的一个参数是MaximumSegmentSizeMaximum\quad Segment\quad SizeMaximumSegmentSize,如图7和图8所示,那个后写入那个配置就生效。一个图1中处于运输层的TCPTCPTCP或UDPUDPUDP协议数据包主要结构图如图6所示,TCPsegmentationoffloadTCP\quad segmentation\quad offloadTCPsegmentationoffload功能在划分数据包的时候主要是划分payloadpayloadpayload那一部分,划分的单位就是MaximumSegmentSizeMaximum\quad Segment\quad SizeMaximumSegmentSize个字节数据,比如payloadpayloadpayload现在有113字节数据,MaximumSegmentSizeMaximum\quad Segment\quad SizeMaximumSegmentSize配置为70,在划分的时候先取前面的70字节放到一个数据包里面去发送,剩下的不足70字节就放到另一个数据包里面去发送,这里就相当于把一个payloadpayloadpayload有113字节数据的数据包分为两个数据包发送了出去,这里每个数据包的包头(也就是图6中EthernetheaderEthernet\quad headerEthernetheader,IPheaderIP\quad headerIPheader和TCP/UDPheaderTCP/UDP\quad headerTCP/UDPheader这三部分)基本一样只有部分不一样,详细可以参考这三种包头的详细介绍。详细的如图9和图10所示。
 
图4.
 
图5.
 
图6.
 
图7.
 
图8.
 
图9.
 
图10.

和以前普通的数据包发送不一样的是,这里图6中EthernetheaderEthernet\quad headerEthernetheader,IPheaderIP\quad headerIPheader和TCP/UDPheaderTCP/UDP\quad headerTCP/UDPheader这三部分单独放在一块BUFFER,BUFFER地址放在图11中TDES0TDES0TDES0中,字节个数写入TDES2TDES2TDES2中对应区域。payloadpayloadpayload也即是实际的数据放在另一块BUFFER。BUFFER地址放在图11中TDES1TDES1TDES1中,payloadpayloadpayload的字节个数写入TDES3TDES3TDES3中对应区域。
 
图11.

图12是一个有167个字节的TCPTCPTCP数据报,实际的数据有113字节,也就是payload,这里MaximumSegmentSizeMaximum\quad Segment\quad SizeMaximumSegmentSize设置为70,因此这个完整的数据包会被分成两个数据包,第一个数据包的实际数据是70字节,第2个数据包的实际数据是43字节。通过wireshark捕获的截图如图13和图14所示。
 
图12.
 
图13.
 
图14.

相关推荐
武汉万象奥科10 分钟前
万象奥科OpenHarmony 6.1 LTS适配完成,RK3576核心板再添新生态
arm开发·嵌入式硬件·物联网·rk3576·arm核心板
头茬韭菜19 分钟前
4.9 SSRF 防护 — Web 工具的出站安全与私有 IP 拦截
前端·tcp/ip·安全
亿道电子Emdoor1 小时前
【Arm】解决Keil MDK无法查看外设寄存器的问题
stm32·单片机·嵌入式硬件
BW.SU1 小时前
瑞佑RUI--工业UI,拖拽即成
stm32·单片机·51单片机·gui·人机界面·单片机可视化设计
2401_873479402 小时前
SOC告警日志中IP归属不明怎么办?部署IP离线库三步提升响应效率
网络·网络协议·tcp/ip
染予2 小时前
上位机时间戳精度不够,时间无法对比怎么解决
单片机·嵌入式硬件
現実君3 小时前
关于MCU下位替换FPGA的经验与方案
单片机·嵌入式硬件·fpga开发
电子科技圈3 小时前
先进封装、芯粒架构和3D集成——先进异构集成亟需兼具标准化与定制化能力的互联及总线IP解决方案
tcp/ip·设计模式·架构·软件构建·代码规范·设计规范
m0_547486663 小时前
《单片机原理及应用》全套PPT课件2026版
单片机·嵌入式硬件
十月的皮皮3 小时前
STM32从零到量产开发:四路继电器工业控制模块开发原理小灶 · 合集
stm32·单片机·嵌入式硬件·stm32cubemx·hal库