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.

相关推荐
Flash.kkl1 小时前
传输层UDP、TCP
网络协议·tcp/ip·udp
QH139292318802 小时前
KEYSIGHT N9030B PXA信号/频谱分析仪
科技·嵌入式硬件·集成测试
zmj3203242 小时前
TCP/IP协议和以太网关系
网络·网络协议·tcp/ip
Shang180989357263 小时前
T31ZX 君正/INGENIC智能视频处理器T31ZX可提供软硬件资料T31Z采用先进的低功耗设计
嵌入式硬件·fpga开发·音视频·t31zx智能视频处理器
ahccqw3 小时前
CAN总线通信入门及实例代码(stm32f4系列)
stm32·单片机·嵌入式硬件
云栖梦泽4 小时前
Linux内核与驱动:13.从设备树到Platform平台总线
linux·运维·c++·嵌入式硬件
振南的单片机世界4 小时前
电源、复位、时钟:单片机的“生存三要素”
单片机·嵌入式硬件
charlie1145141914 小时前
嵌入式Linux驱动开发指南02——内核空间基础与硬件访问
linux·运维·c语言·驱动开发·嵌入式硬件
chao1898444 小时前
Socket-TCP 简易端口开放检测工具
网络·网络协议·tcp/ip
踏着七彩祥云的小丑4 小时前
嵌入式——小白入门
嵌入式硬件