1. STM32H750XBH6 ETH模块的架构概述
STM32H750XBH6是STMicroelectronics推出的一款高性能微控制器,内置了10/100M以太网控制器(ETH)。这个ETH模块在设计上考虑到了网络协议处理的效率问题,特别集成了Checksum offload engine(校验和卸载引擎)这一关键功能单元。
ETH模块的整体架构可以分为三个主要部分:
- MAC(Media Access Control)层控制器
- DMA(Direct Memory Access)引擎
- 校验和卸载引擎(Checksum offload engine)
其中校验和卸载引擎的工作机制最为复杂,它能够自动计算和验证四种关键网络协议的校验和:
- IPv4头校验和
- TCP校验和
- UDP校验和
- ICMP校验和
在实际应用中,当ETH模块接收或发送数据包时,校验和卸载引擎可以显著减轻CPU负担。根据实测数据,启用校验和卸载后,TCP/IP协议栈的处理效率可提升约30-40%,这对于资源受限的嵌入式系统尤为重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 校验和卸载引擎的工作原理
2.1 校验和计算的基本机制
校验和卸载引擎的核心是一个专用的硬件计算单元,它能够在数据流通过ETH模块时实时计算校验和。这个引擎的工作不依赖CPU干预,完全由硬件自动完成。
对于发送方向的数据包,引擎会:
- 识别数据包的协议类型(IPv4/TCP/UDP/ICMP)
- 在相应位置预留校验和字段(通常填充为0)
- 计算整个数据段的校验和
- 将计算结果回填到预留位置
对于接收方向的数据包,引擎会:
- 提取数据包中的校验和字段
- 重新计算数据段的校验和
- 比较计算结果与提取值
- 设置状态寄存器中的校验结果标志位
2.2 协议支持的细节实现
不同网络协议的校验和计算存在差异,校验和卸载引擎需要针对每种协议进行特殊处理:
IPv4头校验和:
- 计算范围:仅IPv4头部(20字节)
- 特殊处理:每16位字进行补码相加
- 错误处理:丢弃校验失败的数据包
TCP/UDP校验和:
- 计算范围:伪头部+协议头部+数据
- 特殊处理:包含IP地址等伪头部信息
- 配置选项:可通过寄存器选择是否验证
在STM32
