以太网的phy寄存器分析

一直唠叨说要系统地学习Linux网络驱动,一直没去做。今天终于下决定写篇关于PHY寄存器的文章了,写了这个,再写篇关于PHY驱动的文章,就算给自己交差了。后面的事再议。这篇文章讲述PHY寄存,大部分属于资料收集,但也夹杂着个人的经验、见解。文中结合IEEE802.3标准、网络的分析及对驱动的理解进行描述。一般来说,像SPI、I2C、USB、PCI等总线类型的资料,都会包括电气接口和编程接口,对于以太网也类似,像硬件接口如MII、GMII,本来也想写一篇文章的,但无奈自己对接口没研究,就不写了。

0、概述

PHY是 IEEE802.3 中定义的一个标准模块。PHY 寄存器的地址空间为 5 位,因此寄存器范围是0 到31 ,最多有 32 个寄存器。IEEE802.3 定义了地址为0-15 这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义。但现在芯片功能很强大,32个寄存器远远不到,于是有的厂家就想出办法,使用page的方式来扩展。在看手册过程中发现,即使是0-15这类的寄存器,不同厂家在实现还是有点差异,所以,IEEE标准定义的寄存器只是在大的方面上说是“标准”的,细节方面如同一寄存器不同的位,功能也不一样,所以最好以厂商的datasheet为准。

像十兆/百兆自适应芯片DM9000,千兆的寄存器就没有,而RTL8211是千兆芯片,功能强大一些,寄存器肯定也多一些;而Intel的I211芯片,寄存器多得要使用page来解决。

IEEE802.3标准文档,下载地址:http://standards.ieee.org/about/get/。它分为很多个section,section按字面翻译为“节”,但该标准的一“节”就有好几百页,这里还是称为“部分”比较好,第一部分是概述,第二部分是百兆以太网,第三部分是千兆以太网。PHY寄存器22.2.4节有介绍,但不涉及所有的寄存器,个别寄存器需要到其它章节中看,当然,文档里面也提到该在哪里找到哪个寄存器。

Linux内核抽象出读写的函数phy_read和phy_write。在驱动中直接调用是没有问题的,当然,这需要MDIO等一切就绪后。

HY寄存器为获取网卡信息的原始途径,如网络是否连接,对端(交换机或PC)的能力,等等。然后再给内核的网络子系统(通过netif_carrier_on这类的函数)。

先从802.3标准中看PHY寄存器描述,如下:


说明:MII表示,只有0和1寄存器是基本的,其它的是扩展的

注:
1、寄存器2、3是PHY ID,一般不用研究。
2、某寄存器的比特(bit)用X.y表示,如0.15表示第0寄存器的第15位,标准文档和芯片手册使用这种形式。

一、寄存器0:控制寄存器

概述:


讲解:
IEEE章节:22.2.4.2 可读写

二、寄存器1:状态寄存器

概述:


IEEE章节:22.2.4.2 只读

三、寄存器2、3:芯片ID寄存器

概述:
寄存器2、3分别是PHY ID寄存器,从内核代码知道,寄存器2(PHY ID1)为高16位,而寄存器3(PHY ID2)为低16位。它们作为PHY芯片的标识,一般被认为作用不大,以前有过同一主CPU搭配不同的PHY组合不同的板卡,使用同一份内核,这里就可以用PHY ID来做区别。

四、寄存器4:自动协商通告寄存器

概述:
IEEE章节:37.2.5.1.3 可读写
该寄存器保存着PHY本身具备的特性、能力。如PHY支持流控、百兆全双工/半双工、十兆全双工/半双工,等。
当设置为自动协商使能情况下通过FLP在MDI上进行通告。如果不使能,则此寄存器的配置无效。

五、寄存器5:自动协商对端能力通告寄存器

概述:
IEEE章节:37.2.5.1.4 只读
该寄存器和寄存器4类似,它表示对端(交换机或PC)具备的特性、能力。同样要注意是的只有在自动协商使能情况下该寄存器信息才有效。由于此寄存器表示的是对端的状态,所以一般情况下寄存器的值被设计为只读,但有的芯片如dm9000的流控位5.10 FCS是可读写的。
该寄存器主要用来了解对端的情况,在出现问题时,可以了解对方的信息,从而大致定位范围。而不用一味地找自身原因。万一真的是对端的交换机出现故障,此寄存器就是有力的现场证据。
(存疑:交换机会不会通过寄存器4来获取PHY的状态,之后再反馈到此寄存器?)


六、寄存器6:自动协商异常信息寄存器

概述:
IEEE章节:37.2.5.1.5 只读


附录

李迟 2015.4.11

### 回答1: 以太网PHY寄存器分析是指对以太网物理层寄存器的详细研究和分析以太网PHY寄存器是用来管理和控制以太网物理层的一种特殊寄存器。在网络通信中,以太网PHY是将数字数据转换成模拟信号并通过物理介质传输的关键组件。 通过对以太网PHY寄存器分析,我们可以了解和控制以太网物理层的各种参数和状态。这些参数和状态可用于调整和优化网络性能,同时也可以帮助我们排除网络故障和问题。 在以太网PHY寄存器中,常见的参数包括连接速度、全双工/半双工模式、自动协商功能、帧同步状态等。通过读取和修改这些寄存器的值,我们可以改变以太网接口的工作方式,例如将其从半双工模式切换到全双工模式,或者手动设置连接速度。 此外,以太网PHY寄存器还包含一些状态位,用于指示当前网络连接是否正常或存在错误。例如,误码率、丢包等指标可以通过读取相关寄存器的值来评估网络性能,并采取相应的措施来改善问题。 综上所述,以太网PHY寄存器分析对于网络工程师来说是非常重要的。通过对这些寄存器进行详细研究和理解,我们可以更好地理解和控制以太网物理层的行为,从而提升网络的性能和稳定性。 ### 回答2: 以太网 PHY(物理层)寄存器是用于管理和控制以太网PHY芯片的寄存器。它们用于配置和监视以太网PHY的各种参数和状态。 在以太网通信中,PHY芯片负责物理层的功能,包括发送和接收数据,以及处理与物理媒介(如电缆)的交互。PHY寄存器可以让我们通过软件程序访问和配置这些功能。 以太网PHY寄存器可以分为多个不同的寄存器组,每个寄存器组用于特定的功能或属性。常见的寄存器组包括控制寄存器组、状态寄存器组和配置寄存器组。 在控制寄存器组中,我们可以设置和控制PHY的工作模式、速率、功耗等。通过设置这些寄存器,我们可以使PHY芯片适应不同的网络环境和应用需求。 状态寄存器组提供了与PHY芯片当前状态相关的信息,如链接状态、错误状态等。通过读取这些寄存器,我们可以检测和诊断网络连接问题。 配置寄存器组则允许我们配置PHY的各种功能和特性。例如,我们可以配置自动协商功能,让PHY与其连接的设备自动协商最佳的通信参数。 通过对以太网PHY寄存器进行分析,我们可以了解PHY芯片当前的工作状态和配置,并进行必要的调整和优化。这对于网络故障排除、性能优化以及网络管理和监测都非常有帮助。 总之,以太网PHY寄存器分析是对PHY芯片进行配置和状态监测的过程,通过分析寄存器的值和状态,我们可以了解和控制PHY的各种功能和特性,以实现高效稳定的以太网通信。 ### 回答3: 以太网PHY寄存器分析是指对以太网物理层寄存器进行分析和研究。以太网PHY寄存器是用来控制和管理以太网物理层功能的特殊存储单元。它通常包含多个寄存器,用于配置和控制不同的物理层参数和功能。 对于以太网PHY寄存器分析,首先需要了解寄存器的结构和功能。不同的PHY芯片可能具有不同的寄存器结构,但通常会包含一些常见的寄存器,如控制寄存器、状态寄存器和识别寄存器等。 在分析时,可以通过读取和写入寄存器的值来获取PHY的当前配置和状态信息。例如,通过读取控制寄存器的值,可以了解某个功能是否启用、速度设置以及功耗控制等。而通过读取状态寄存器的值,则可以获取到PHY的连接状态、数据传输情况等。 此外,还可以通过对寄存器值的位操作来进行配置和控制。例如,通过设置或清除某个特定位,可以启用或禁用某个功能,或进行其他配置。需要注意的是,在对以太网PHY寄存器进行操作时,需要按照其规格说明书来使用正确的操作方法和顺序,以避免引发不必要的错误或故障。 以太网PHY寄存器分析对于网络维护和故障排除非常重要。通过分析寄存器的值和位操作,我们可以了解到PHY的工作状态以及相关的配置信息,从而快速定位和解决网络问题,提高网络的稳定性和性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值