linux 命令 读phy_Linux 下访问PHY芯片寄存器

下面代码描述了在用户层访问smi/mdio总线, 读写phy芯片寄存器的通用代码。Linux内核2.6以上通用。

将下面代码编译后,将可执行文件a.out 重命名为mdio

eth0 为mac层控制器的名称, 一般为eth0 或mgmt0。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define help() \

int sockfd;

int main(int argc, char *argv[]){

lab:

}

很多人在read操作里面判断phy的link状态,

if(mii->val_out& 0x0004){

printf("linkup\n");

}else{

printf("linkdown\n");

}

其实这个做法是比较通用可行的。

解释一下,关于mii->val_out& 0x0004

寄存器3和4为 Identifiier Register

, 这里的内容为phy芯片产商的识别码。

一般这个状态寄存器的数值为: 0x796d

意思是:

14bit : 有能力实现全双工100BASE-X工作模式

8bit : 扩展信息描述在寄存器15.

5bit : 自动协商完成

3bit : 有能力自动协商

2bit : link 状态: up

0bit : 有扩展寄存器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值