点击左上方蓝色“一口Linux”,选择“设为星标”
第一时间看干货文章
?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式知识点-思维导图-免费获取?【就业】一个可以写到简历的基于Linux物联网综合项目?【就业】找工作简历模版
0mkikolghs2640129824858.gif
一、前言 实际项目开发中,由于设计原因,会将phy的mdio引脚连接到SoC的2个空闲gpio上,
这样就无法通过Gmac自有的架构实现修改phy,
因此只能通过GPIO模拟的方式实现MDIO,
好在Linux支持MDIO via GPIO功能。
该功能需要用到内核驱动mdio-bitbang.c和mdio-gpio.c。
本例 :
平台:复旦微
kernel 版本:linux 4.14.55-xxxxx
phy芯片yt8521
phy连接到gmac0
mdio总线连接到:gpioc 2
portc 3
二、mdio基础概念 1、SMI接口SMI是MAC内核访问PHY寄存器接口,它由两根线组成,双工:
MDC(Management Data Clock)为时钟,MDIO(Management Data Input/Output)为双向数据通信,
原理上跟I2C总线很类似,也可以通过总线访问多个不同的phy。
MDIO协议是以太网标准IEEE802.3中专门用于MAC和PYH之间管理的串行接口总线,该接口主要用于MAC控制器对PYH层的状态读取和设置(寄存器操作)、获取链路状态,控制物理层协商等操作。
MDC/MDIO基本特性:两线制 :MDC(时钟线)和MDIO(数据线)。分主从设备。时钟频率:2.5MHz通信方式:总线制,可同时接入的PHY数量为32个通过SMI接口,MAC芯片主动的轮询PHY层芯片,获得状态信息,并发出命令信息。其中主设备称作STA,从设备称作MDI,一个主设备可以对多个从设备进行命令读写操作。
155df4bxsuu640129824958.png
三、mdio协议波形 1、MDIO接口数据帧在IEEE802.3协议中,把MDIO接口数据帧分为两种,一种是Clause22,另一种是Clause45。
前者主要用于百兆千兆以太网,后者用于千兆以上的以太网。
2、Clause22 |