以太网的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的状态,之后再反馈到此寄存器?)
原文链接:https://blog.csdn.net/subfate/article/details/44958597
- 分享
- 举报
-
浏览量:3954次2021-09-10 13:50:09
-
浏览量:1793次2019-06-03 18:07:07
-
浏览量:2157次2020-07-24 09:18:54
-
浏览量:2484次2020-08-06 18:56:10
-
浏览量:1786次2022-01-10 09:00:12
-
2021-07-22 11:08:56
-
浏览量:820次2023-06-15 11:42:45
-
2020-09-24 18:28:32
-
浏览量:4208次2021-07-16 10:09:05
-
浏览量:10190次2022-10-09 15:56:41
-
浏览量:1837次2020-06-13 10:18:59
-
浏览量:2421次2020-10-28 13:43:30
-
浏览量:3865次2020-10-21 10:01:14
-
浏览量:4234次2021-07-17 16:19:56
-
2020-12-08 10:04:48
-
浏览量:2542次2020-07-04 10:01:15
-
浏览量:2675次2020-11-03 11:23:20
-
浏览量:4030次2021-08-19 09:28:25
-
浏览量:2355次2024-05-17 12:55:02
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
在学了在学了!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明