当前位置: 首页 > web >正文

Linux以太网模块

一、以太网的组成

1、MII总线,(SGMII、RGMII):SOC与MAC之间(MII/RGMII/SGMII 本质都是 MAC ↔ PHY 的数据总线接口,区别主要是速率和引脚数量。)

2、(SMI)MDIO总线:(复杂以太网PHY芯片寄存器的配置)MAC 控制 PHY 寄存器 的管理总线,不用于传输以太网数据。用于“告诉 PHY 怎么工作”。

数据在RK3568上如何传输:SOC<--->MAC控制器<--->PHY芯片<--->水晶头(网线接口)

一、RGMII接口分类

通信接口汇总

MAC与PHY的通信:MII, RGMII, SGMII

MII:它是 IEEE-802.3 定义的以太网标准接口, MII 接口用于以太网 MAC 连接 PHY 芯片。16根信号线,还需要两根MDIO和MDC两根线,由于信号线太多,目前已经很少了。

RMII:RMII 接口只需要 7 根数据线。

GMII:GMII(Gigabit Media Independant Interface),千兆 MII 接口。传输可达1000Mbps,可以兼容MII规定的10/100Mbps。符合 IEEE 以太网标准,定义见 IEEE 802.3-2000。信号线

RGMII:精简版 GMII 接口,14根信号线(不包含MDIO两根信号线),为了保持 1000Mbps 的传输速率不变, RGMII 接口在时钟的上升沿和下降沿都采样数据,在参考时钟的上升沿发送 GMII 接口中的TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送 GMII 接口中的 TXD[7:4]/RXD[7:4]。 RGMII 同时也兼容 100Mbps 和10Mbps 两种速率,此时参考时钟速率分别为 25MHz 和 2.5MHz。

MDIO:MDIO 全称是 Management Data Input/Output,直译过来就是管理数据输入输出接口,是一个简单的两线串行接口,一根 MDIO 数据线,一根 MDC 时钟线。

RGMII(GMAC)负责控制器和PHY芯片的沟通,MDIO 是总线协议,类似I2C控制总线。

二、MDIO C22与C45接口

MDIO责任:把PHY初始化对应的状态。

MDIO接口数据帧分为两种:

  • 一种是Clause22: 百兆千兆以太网,Clause 22是最早的MDIO子协议,也被称为MDC/MDIO。使用两根信号线:MDC(管理数据时钟)和 MDIO(管理数据输入/输出)。 

  • 一种是Clause45:千兆以上的以太网,使用四根信号线:MDC、MDIO以及MDIO数据和时钟的扩展,是IEEE 802.3an标准中引入的新协议。车载以太网使用C45。

如果需要将phy固定为百兆,不希望自适应,这时候需要通过MDIO接口直接初始化PHY来固定,就修改下面这个寄存器。

四、MDIO驱动子系统

类似i2c总线驱动模型一样,MDIO也是一个总线驱动,抽象成mdio_bus。如下图所示。

驱动中PHY ID的获取drivers/net/phy/phy_device.c

struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)
{struct phy_c45_device_ids c45_ids;u32 phy_id = 0;int r;c45_ids.devices_in_package = 0;c45_ids.mmds_present = 0;memset(c45_ids.device_ids, 0xff, sizeof(c45_ids.device_ids));if (is_c45) {r = get_phy_c45_ids(bus, addr, &c45_ids);} else {r = get_phy_c22_id(bus, addr, &phy_id);}if (r)return ERR_PTR(r);//扫到PHY以后才会调用到这里return phy_device_create(bus, addr, phy_id, is_c45, &c45_ids);
}
EXPORT_SYMBOL(get_phy_device);

PHY ID 查看 /sys/bus/mdio_bus/devices

phy_id的定义位置 kernel/driver/net/phy/realtek.c

五、ethtool调试工具

ethtool 是一个用于 Linux 系统中网络接口配置和诊断的命令行工具。它允许你查询和设置网络接口的各种参数,如

  • 网卡的速度 :要求主机 与 下位机 对速度必须一致

  • 双工模式:要求主机 与 下位机 必须一致 

  • MAC 地址

  • 链接状态:要求主机 与 下位机 物理网线的链接状态

ethtool 常用于调试和优化网络连接,尤其是在需要手动配置网络适配器时。

5.1 ETHTOOL查看信息--- 读

  • ethtool ethx 査看eth0网卡的基本设置,内容包括网卡速率、网卡的工作模式等,ethtool -ieth0 查看eth0网卡的驱动信息,内容包括驱动的型号、驱动的版本等

  • ethtool -d ethx 查询ethx网囗注册性信息

  • ethtool -S ethx 查询ethx网囗收发包统计 (注意S是大写)

  • ethtool -h //显示ethtool的命令帮助(help)

5.2 设置 ---写

该命令只是临时设置,如果网卡重启就失效了。要进行速率配置,自协商需要关了。

  • ethtool -s eth0 speed [10|100|1000] // 设置网卡的速率,单位是:Mb/s

  • ethtool -s eth0 duplex [half|ful] //设置网卡的工作模式,可设置为半双工或全双工

  • ethtool-s eth0 autoneg [on|off] // 设置网卡是否自动协商,自动协商的内容主要包括工作模式、网卡速率以及流控等参数

六、PHY的调试经验总结

6.1、ethtool工具

  • 查看网卡工作状态:ethtool eth0

  • 查看网卡统计数据:ethtool -S eth0

  • 打开自协商:ethtool -s eth0 autoneg on

  • 关闭自协商:ethtool -s eth0 autoneg off speed 100

  • 重协商观察内核log:ethtool -r eth0

6.2、ifconfig

  • ifconfig 查看网卡状态和统计数据:ifconfig

  • 开关网卡观察内核log:ifconfig eth0 up/down

  • 多次执行ifconfig观察指定网卡的统计数据变化:ifconfig eth0多次

6.3、tcpdump (wireshark) 抓包

  • 从模组往外ping一个同网段的地址

  • tcpdump -i eth0 -w xxx.pcap

  • pc上抓wireshark log

  • 对比两边的抓包,观察arp和icmp能够看出时tx不通还是rx不通

6.4、arp

检查局域网内能够通信的设备若arp -n返回为空,一般能够说明链路层不通:arp -n

6.5、软中断的观察

/proc# cat softirqs

6.6、CPU使用率观察

top

mpstat

速率达不到理论值,最大的可能,板卡CPC主频受限

http://www.xdnf.cn/news/20492.html

相关文章:

  • 【嵌入式】【科普】AUTOSAR学习路径
  • 《无畏契约》游戏报错“缺少DirectX”?5种解决方案(附DirectX修复工具)
  • 基于单片机智能行李箱设计
  • 云手机运行流畅,秒开不卡顿
  • 无拥塞网络的辩证
  • 24.线程概念和控制(一)
  • 贪心算法应用:数字孪生同步问题详解
  • B.50.10.10-微服务与电商应用
  • 关于退耦电容
  • 【LeetCode热题100道笔记】将有序数组转换为二叉搜索树
  • 3分钟快速入门WebSocket
  • Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 主成分分析 (PCA)
  • dify+Qwen2.5-vl+deepseek打造属于自己的作业帮
  • 第27节:3D数据可视化与大规模地形渲染
  • 如何下载小红书视频
  • MySQL的组复制(MGR)高可用集群搭建
  • vue3图标终极方案【npm包推荐】vue3-icon-sui(含源码详解)
  • STM32F4芯片RS485使用记录
  • 小迪自用web笔记29
  • 少儿配音教育:广州声与色在线科技有限公司打造趣味课程,助力青少年语言能力提升
  • 电脑外接显示屏字体和图标过大
  • 实体商业创新观察:AI 驱动的本地生活服务新模式解析
  • 计算机网络:物理层---物理层的基本概念
  • OpenSSL 1.0.1e 下载解压和运行方法(小白适用 附安装包)​
  • Nginx性能调优:参数详解与压测对比
  • 小孔成像原理
  • 吴恩达机器学习(九)
  • 正态分布 - 正态分布的标准化
  • 音视频技术全景:从采集到低延迟播放的完整链路解析
  • 【鸿蒙 NEXT】V1迁移V2状态管理