Linux 下访问PHY芯片寄存器
下面代码描述了在用户层访问smi/mdio总线, 读写phy芯片寄存器的通用代码。Linux内核2.6以上通用。 将下面代码编译后,将可执行文件a.out 重命名为mdio eth0 为mac层控制器的名称, 一般为eth0 或mgmt0。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <linux/mii.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> #include <linux/sockios.h> #include <linux/types.h> #include <netinet/in.h> #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为