以太网的phy寄存器分析

在学了在学了! 2020-08-06 20:11:37 1056

一直唠叨说要系统地学习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

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
在学了在学了!
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区