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.

相关推荐
春风解人意7 小时前
从零开始学习嵌入式P32----网络基础之TCP
c语言·网络·学习·tcp/ip
G***技8 小时前
告别“云端依赖”:LH707 如何重构 AI 视频监控的底层逻辑?
人工智能·嵌入式硬件
ShallWeL12 小时前
Orin 上多模型常驻与显存预算
人工智能·嵌入式硬件·nvidia·orin
晊晌_h12 小时前
嵌入式从0到精通——Linux C|TCP 并发服务器实现方案详解
服务器·开发语言·tcp/ip
亮工硬件12 小时前
1-11 STM32内部FLASH(数据掉电保存)
笔记·stm32·单片机·嵌入式硬件·学习
集和诚JHCTECH12 小时前
案例分享 | BRAV-7721助力印刷电路板(PCB)智能缺陷复判系统
人工智能·嵌入式硬件·边缘计算
恒锐丰科技林技术员13 小时前
EG27524 双通道栅极驱动芯片:高速功率变换系统的驱动利器
经验分享·嵌入式硬件·硬件工程
恒锐丰科技林技术员15 小时前
EG2003:200V 半桥 MOS/IGBT 栅极驱动芯片解析
经验分享·嵌入式硬件·硬件工程
LCG元15 小时前
STM32 硬件SPI驱动W25Q Flash实战:从CubeMX配置到DMA高速读写
stm32·单片机·嵌入式硬件
HRTOS16 小时前
HRTOS应用示例:信号量机制详解
c语言·人工智能·嵌入式硬件·51单片机