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

附录

ieee802.3标准:http://standards.ieee.org/about/get/
82577芯片:
http://www.intel.com.tw/content/www/tw/zh/ethernet-controllers/82577-gbe-phy-datasheet.html
8211e芯片:
http://www.realtek.cz/realtek-datasheet.php?datasheet=RTL8211

李迟 2015.4.11


以太网的phy寄存器分析相关推荐

  1. 以太网PHY寄存器分析

    以太网PHY寄存器分析    1 1.以太网PHY标准寄存器分析    2 1.1 Control Register    2 1.2 Status register    5 1.3 PHY Ide ...

  2. 以太网PHY寄存器分析【转】

    转自:https://blog.csdn.net/Firefly_cjd/article/details/79825869 以太网PHY寄存器分析    1 1.以太网PHY标准寄存器分析    2 ...

  3. phy芯片测试寄存器_以太网PHY寄存器分析

    以太网PHY寄存器分析    1 1.以太网PHY标准寄存器分析    2 1.1 Control Register    2 1.2 Status register    5 1.3 PHY Ide ...

  4. GD32F450以太网(2-2): PHY芯片IP101GR介绍

    PHY芯片IP101GR 文章目录 PHY芯片IP101GR 1. 预备知识 2. IP101GR简介 3. IP101GR基于RMII接口的PCB设计重点解析 3.1 时钟设置 3.2. led灯设 ...

  5. GD32F450以太网(2-1):PHY芯片LAN8720A介绍

    PHY芯片LAN8720A 文章目录 PHY芯片LAN8720A 1. MCU网口输出设计现状 2. LAN8720A 2.1 LAN8720A简介 2.2 LAN8720A使用连接简图 2.3 LA ...

  6. 程序异常exitcode非0_ARM寄存器分析以及异常处理方法

    ARM 有7个基本工作模式 User : 非特权模式,大部分任务执行在这种模式 FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式 IRQ : 当一个低优先级(normal) 中断产生 ...

  7. 睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片

    睿普康 以太网接口PHY芯片主要替换瑞昱的pin对pin芯片 其他完整学习资料和规格书都在我的附件里,希望大家可以相互学习,有错误方面还请大家正,提供的这些关于PHY的资料也是为了让大家更好的去认识, ...

  8. wireshark分析以太网帧结构_分析Ethernet标准和Ieee802.3标准规定的MAC层帧结构

    阅读导览 1. 学习Wireshark的安装与使用 下载并安装网络装包软件Wireshark-win32-1.10.2 安装软件所需环境 WinPcap 2. 熟悉Wireshark的操作界面与功能 ...

  9. RV1126 Linux 以太网MAC PHY 芯片8201f gmac dts配置

    RK 系列的 SoC 中内置了以太网 MAC 控制器,所以只需要搭配一颗以太网 PHY芯片, 即可实现以太网卡功能. 按照规范, 即使是不同厂家的 PHY,同样有一部分寄 存器的定义是通用的, 只要配 ...

最新文章

  1. ASP.NET MVC实践系列9-filter原理与实践
  2. 2016012009 马佳欣 散列函数的应用及其安全性
  3. tf报错之raise TypeError(“pred must not be a Python bool“)
  4. 构建高性能.NET应用之配置高可用IIS服务器-第四篇 IIS常见问题之:工作进程回收机制(上)
  5. ZigBee网络角色 拓扑结构 无线模块组网典型应用
  6. gcc compiler warning: “will be initialized after/when initialized here”
  7. 广播延时大约多久_在长沙广播电台打广告要多少钱?
  8. LeetCode 1043. 分隔数组以得到最大和(DP)
  9. Percona XtraDB Cluster 集群参数配置说明(PXC 5.7)
  10. 题解 【NOIP2014】解方程
  11. js系列教程9-表单元素全解
  12. C# 全局唯一标识符 (GUID)
  13. Linux网络编程 --- HTTP协议
  14. 执行引擎的工作过程、Java代码编译和执行的过程、解释器、JIT编译器
  15. 第8周编程题在线测试
  16. 用计算机完成下表的视距测量计算公式,2012测量学计算题库及参考答案
  17. 萌新改代码系列(一)--VINS+GPS
  18. [PaddleSeg 源码阅读] PaddleSeg计算 mIoU
  19. ios view改变重叠层次关系
  20. C++lesson01

热门文章

  1. python试卷生成_Python学习笔记文件读写之生成随机的测试试卷文件
  2. 明微电子发布2021年三季度财报
  3. 身价超13000亿!他又重回世界首富了
  4. 三星出售比亚迪1.6%股份,价值约1.5万亿韩元
  5. 女子800米跑进4分30秒才合格,茅台回应应聘者需体测...
  6. iPhone 12 Max电池容量曝光:老扎心了
  7. 蚂蚁区块链正式升级为蚂蚁链:首次公布“日活”超1亿
  8. 拼多多九鼎:信息披露无瑕疵 “注水”的是竞争对手
  9. 重启中的武汉:烟火气息回来了,消费疯狂增长
  10. 马斯克挽尊,回应为何电动皮卡车窗玻璃怼不过钢球...