Linux核外通过MDIO访问Phy
前言
调试以太网(MAC+PHY)网络问题,我们经常需要获取或配置PHY的寄存器,但又不想一次次去修改内核,在Linux应用层怎么简单方便的去操作PHY的寄存器呢?

众所周知,MAC+PHY的组合下,主要是通过MDIO接口去操作PHY的寄存器,所以也就变成了怎么去操作MDIO。

一般有以下方式:

通过MDIO暴露到核外的接口,比如设备节点,或寄存器直接映射的内存地址。
通过通用的ioctl访问接口。
以上都是要基于SoC的MAC驱动支持才行,特别是第一点,需要对Soc的MAC比较熟悉,而且因SoC厂家不同而差异很大。

这里重点看看第二种通用的方式。

使用ioctl接口访问
实现
主要是通过ioctl操作以下几个接口来实现对PHY寄存器的读写操作:

SIOCGMIIPHY:
read register from the current PHY.
SIOCGMIIREG:
read register from the specified PHY.
SIOCSMIIREG:
set a register on the specified PHY.
原理

。。。。。。

作者: Shell