基础了解
ETH,以太网,简单来讲就是将几台设备连接起来形成网络。这种连接是点到点之间的。以太网的传输速率为10M~10G,速度非常快。
为了实现网络通信的标准化,普及网络应用,国际标准化组织(ISO)将整个以太网通信结构制定了OSI(Open System Interconnection)模型,整个模型包括硬件和软件定义。
本文及后续文章所介绍的内容为以太网模块的物理层和数据链路层,上层协议等内容暂时不在讲述范围。
以太网的数据链路层分为LLC和MAC两种。
MAC:(Media Access Control)媒体访问控制层,负责以太网的总线访问机制、物理寻址方式、以太网帧格式等等。
LLC:(Logical Link Control)逻辑链路控制层,主要负责以太网帧的收发,还可以对以太网帧进行错误控制、流控等。
LLC负责报文的收发和检测控制等操作,MAC则作为软件和硬件间的桥梁。
物理层
以太网设备间的连接都是由 MCU 通过 MII 和 SMI 来外接 PHY 芯片,经由 PHY 芯片将信号转换为支持网线传出的形式之后,然后才能和其他设备进行通信。
其中,MII负责数据的传输,SMI负责对PHY芯片进行控制。
SMI包括MDIO和时钟线两种线,通过MDIO可以使MCU获取PHY芯片的状态,也可以对其进行控制。AUTOSAR 规范中定义了 WriteMII 和 ReadMII 两种接口来控制和监控 MII 的状态。MCU正是通过 SMI 来实现对 PHY 芯片的控制。
常用的 MII 总线分为MII、RMII、SMII、GMII、RGMII、SGMII等。下图为 MII 和 RMII 两种协议的对比。
简单来讲,在原本的 MII 前加上 “ R ” 则代表引脚简化,但是这种简化可能会导致传输不够稳定,因此适用于要求较低的场景;而 “ S ” 则表示串行,前面两种比如 MII 是采用多条数据线并行传输的方式,而 SMII 则是串行传输。
以太网帧格式
以太网帧格式由前导字段、帧起始定界符、目标地址、源地址、数据包类型、数据域、填充域、校验和域组成。
前导码:7字节,用于同步接收端的时钟信号,便于识别帧的开始。
帧起始分隔符(SFD):1字节,用于标识帧的开始,用来指示接下来是帧的实际内容。
目的地址(Dst):6字节,接收方的MAC地址。
源地址(Src):6字节,即发送方的MAC地址。
类型/长度(Type/Length):2字节,用于指示有效载荷的类型(比如IPv4或IPv6)或者数据长度。
有效数据(Payload):46到1500字节,包含实际传输的数据内容,例如IP数据包。如果数据内容不足46字节,可能会通过填充(PAD)进行扩充。
填充(PAD):在有效数据少于46字节的情况下,增加的填充字节,保证数据部分的最小长度,填充字节通常是 0x00。
帧校验序列(FCS):4字节,用于校验数据帧的完整性,通常通过CRC(循环冗余校验)算法生成。
目前以太网帧的格式分为 IEEE 802.3 和 Ethernet II 两种,通过判别“类型/长度”字段来进一步判断当前帧的类型。
IEEE 802.3:若该字段值小于等于0x5DC (1500),那么该帧为IEEE 802.3格式,此时该字段可以视为“长度”字段:
Ethernet II:若该字段值大于等于0x600 (1536),则该帧为Ethernet II帧格式。