第五章外设接口通信,举一反三12.千兆网口实现MDIO接口读写 千兆网口是我们日常生活中经常见到的外设接口,在后面三个例程中,我们将会一起去动手实现千兆网口实现MDIO接口读写、ARP通信协议、ICMP和UDP通信协议等,这三个例程有一定的难度,通过实际分析、动手编码、模块划分、上板调试大家可以学到很多内容,涵盖了MDIO协议、报文层层解析、层层组报、时钟上下边沿采样数据、千兆网口报文CRC32校验、IP首部校验、UDP首部校验、ARP首部校验等,相信系统性学习实践后,大家的模块划分和编码调试能力又会提高一大步。 如图1所示是豌豆开发板Artix7上千兆LAN口电路,这里选取了经典的
最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下。特别感谢无数优秀的博主无私奉献很多优秀的博文给予了我很大的帮助。在这个系列篇中,我也会转载部分优秀的博文(会附上链接),以及增添自己的理解,如果部分内容有侵权的地方,麻烦联系我。概述管理MII接口的MDIO接口是一个双线的串行接口,用来对PHY芯片等物理层信息进行操作管理。MDIO的历史MDIO是ManagementDataInput/Output的缩写,有两根线,分别为双向的MDIO和单向的MDC,用于以太网设备中上层对物理层的管理。之所以能够管理这些PHY芯片,是因为能够对PHY芯片的各类
最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下。特别感谢无数优秀的博主无私奉献很多优秀的博文给予了我很大的帮助。在这个系列篇中,我也会转载部分优秀的博文(会附上链接),以及增添自己的理解,如果部分内容有侵权的地方,麻烦联系我。概述管理MII接口的MDIO接口是一个双线的串行接口,用来对PHY芯片等物理层信息进行操作管理。MDIO的历史MDIO是ManagementDataInput/Output的缩写,有两根线,分别为双向的MDIO和单向的MDC,用于以太网设备中上层对物理层的管理。之所以能够管理这些PHY芯片,是因为能够对PHY芯片的各类
1.前言 内核版本:linux4.9.225,以freescale为例。2.概述PHY芯片为OSI的最底层-物理层(PhysicalLayer),通过MII/GMII/RMII/SGMII/XGMII等多种媒体独立接口(介质无关接口)与数据链路层的MAC芯片相连,并通过MDIO接口实现对PHY状态的监控、配置和管理。PHY与MAC整体的大致连接框架如下(图片来源于网络):PHY的整个硬件系统组成比较复杂,PHY与MAC相连(也可以通过一个中间设备相连),MAC与CPU相连(有集成在内部的,也有外接的方式),PHY与MAC通过MII和MDIO/MDC相连,MII是走网络数据的,MDIO/MDC是
1.前言 内核版本:linux4.9.225,以freescale为例。(部分内容待修改和补充,不一定准确)2.概述上一篇文章讲了控制器的驱动使用的是platform总线的连接方式,本节要讲的PHY设备驱动是基于device、driver、bus的连接方式。其驱动涉及如下几个重要部分:总线-sturctmii_bus(miistandformediaindependentinterface)设备-structphy_device驱动-structphy_driver关于PHY设备的创建和注册已经在上一篇控制器的probe函数中有过详细的描述(需要注意的是:phy设备不像i2c/spi有一个bo
1.前言 内核版本:linux4.9.225,以freescale为例。2.概述PHY芯片为OSI的最底层-物理层(PhysicalLayer),通过MII/GMII/RMII/SGMII/XGMII等多种媒体独立接口(介质无关接口)与数据链路层的MAC芯片相连,并通过MDIO接口实现对PHY状态的监控、配置和管理。PHY与MAC整体的大致连接框架如下(图片来源于网络):PHY的整个硬件系统组成比较复杂,PHY与MAC相连(也可以通过一个中间设备相连),MAC与CPU相连(有集成在内部的,也有外接的方式),PHY与MAC通过MII和MDIO/MDC相连,MII是走网络数据的,MDIO/MDC是
1.前言 内核版本:linux4.9.225,以freescale为例。(部分内容待修改和补充,不一定准确)2.概述上一篇文章讲了控制器的驱动使用的是platform总线的连接方式,本节要讲的PHY设备驱动是基于device、driver、bus的连接方式。其驱动涉及如下几个重要部分:总线-sturctmii_bus(miistandformediaindependentinterface)设备-structphy_device驱动-structphy_driver关于PHY设备的创建和注册已经在上一篇控制器的probe函数中有过详细的描述(需要注意的是:phy设备不像i2c/spi有一个bo