两个工具一个是ethtool工具,一个是源码编译的可以读phy寄存器的工具phyreg。两者结合使用,事半功倍。

ethtool 可以查看和设置网卡的工作状态,比如查看设置网卡的链接 自协商,10/100/1000M,双工半双工的工作状态。

ethtool的交叉编译工具,见个人博客文章:http://blog.csdn.net/vc66vcc/article/details/52398864

phyreg 可以读写phy的任意寄存器。相关源码如下

[cpp] view plaincopyprint?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <linux/mii.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <sys/ioctl.h>
  8. #include <net/if.h>
  9. #include <linux/sockios.h>
  10. #include <linux/types.h>
  11. #include <netinet/in.h>
  12. #define reteck(ret)     \
  13. if(ret < 0){    \
  14. printf(”%m! \”%s\” : line: %d\n”, funcLINE);   \
  15. goto lab;   \
  16. }
  17. #define help() \
  18. printf(”mdio:\n”);                  \
  19. printf(”read operation: mdio reg_addr\n”);          \
  20. printf(”write operation: mdio reg_addr value\n”);    \
  21. printf(”For example:\n”);            \
  22. printf(”mdio eth0 1\n”);             \
  23. printf(”mdio eth0 0 0x12\n\n”);      \
  24. exit(0);
  25. int sockfd;
  26. int main(int argc, char argv[]){  
  27. if(argc == 1 || !strcmp(argv[1], “-h”)){
  28. help();
  29. }
  30. struct mii_ioctl_data *mii = NULL;
  31. struct ifreq ifr;
  32. int ret;
  33. memset(&ifr, 0, sizeof(ifr));
  34. strncpy(ifr.ifr_name, argv[1], IFNAMSIZ - 1);
  35. sockfd = socket(PF_LOCAL, SOCK_DGRAM, 0);
  36. reteck(sockfd);
  37. //get phy address in smi bus
  38. ret = ioctl(sockfd, SIOCGMIIPHY, &ifr);
  39. reteck(ret);
  40. mii = (struct mii_ioctl_data)&ifr.ifr_data;
  41. if(argc == 3){
  42. mii->reg_num    = (uint16_t)strtoul(argv[2], NULL, 0);
  43. ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
  44. reteck(ret);
  45. printf(”read phy addr: 0x%x  reg: 0x%x   value : 0x%x\n\n”, mii->phy_id, mii->reg_num, mii->val_out);
  46. }else if(argc == 4){
  47. mii->reg_num    = (uint16_t)strtoul(argv[2], NULL, 0);
  48. mii->val_in     = (uint16_t)strtoul(argv[3], NULL, 0);
  49. ret = ioctl(sockfd, SIOCSMIIREG, &ifr);
  50. reteck(ret);
  51. printf(”write phy addr: 0x%x  reg: 0x%x  value : 0x%x\n\n”, mii->phy_id, mii->reg_num, mii->val_in);
  52. }
  53. lab:
  54. close(sockfd);
  55. return 0;
  56. }

转载:linux+arm 网卡故障调试:ethtoolphy寄存器读写相关推荐

  1. linux单 网卡添加多个网段的ip,[转载]linux 单网卡来绑定多IP实现多网段访问以及多网卡绑定单IP实现附载均...

    今天有遇到实现linux下访问多网段问题,以前只是有注意资料修改linux路由的的方法,在使用2003系统时倒是有经常单网卡访问多网段.前提是先绑定每个网段的一个IP 那同理如果我们需要实现linux ...

  2. Linux服务器网卡驱动安装及故障排除(转)

    Linux服务器网卡驱动安装及故障排除(转) 转自:http://www.ccw.com.cn/server/yyjq/htm2005/20050817_15OF4.htm感谢原创作者 曹江华 Lin ...

  3. Linux下网卡驱动安装及故障排除

    Linux下网卡驱动安装及故障排除 赛迪网 2007-4-26 9:10:00文/forgiven 网卡是Linux服务器中最重要网络设备.据统计,Linux网络故障有35%在物理层.25%在数据链路 ...

  4. linux 查看网卡损坏,Linux服务器网卡驱动安装及故障排除

    Linux服务器网卡驱动安装及故障排除 网卡是Linux服务器中最重要网络设备.据统计,Linux网络故障有35%在物理层.25%在数据链路层.10%在网络层.10%在传输层.10%在对话.7%在表示 ...

  5. linux 双网卡绑定(bonding)实现负载均衡或故障转移

    linux 双网卡绑定(bonding)实现负载均衡或故障转移 我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是 ...

  6. linux下jtag命令,[转载]LINUX内核调试过程(使用OpenJtag + OpenOCD)

    [转载]LINUX内核调试过程(使用OpenJtag + OpenOCD) (2012-04-12 02:02:27) 标签: 杂谈 [转载]LINUX内核调试过程(使用OpenJtag + Open ...

  7. ARM DS-5单步调试ARM64 linux 内核

    目录 1 介绍 2 开发环境 3 准备工作 3.1 Ubuntu环境准备 3.2 源代码准备 3.3 DS-5准备 3.4 使用DS-5调试源码 3.4.1 建立源码工程 3.4.2 创建debug配 ...

  8. 通过vscode进行嵌入式linux arm开发板gdb调试

    下载和安装vscode, 下载 vscode for windows 地址:  Visual Studio Code - Code Editing. Redefined 安装 "remote ...

  9. linux arm寄存器,ARM寄存器总结

    ARM处理器共有37个寄存器: 1) 31个通用寄存器,包括程序计数器(PC).这些寄存器都是32位的: 2)6个状态寄存器.这些寄存器也是32位的,但是只使用了其中的12位. ARM通用寄存器 通用 ...

最新文章

  1. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解源码(A.水+暴力,B.dp+栈)
  2. Windows 8.1内置微软五笔输入法
  3. 2.0版本的日历控件在ie8显示不全的解决办法
  4. mysql调用jieba库_jieba库的使用及实例
  5. 编程心法 之什么是MVP What is MVP development?
  6. 第二讲 ODE欧拉数值方法
  7. Java 多态中成员变量与成员属性的特点【复习】
  8. IDEA中如何设置方法注释格式
  9. 今天写一个关于浮动的页面,页面高度不能设置。用元素将他撑开。
  10. mysql order by sql注入_mybatis中#{}和${}的区别及order by的sql注入问题
  11. 小汤学编程之JAVA基础day12——异常
  12. H3C-IMC 自动发现功能如何使用
  13. python相关性分析特征过滤_Python相关性分析
  14. 商品翻牌效果(纯css)
  15. vim基础学习之自动补全功能
  16. php采标教程,国内液压与气动行业标准大全
  17. linux系统可以下steam吗,linux – 是否可以使用optirun运行Steam游戏?
  18. MAC 解压 rar 文件
  19. Unity ParticleSystem 之 简单的电子自旋 Electrons ParticleSystem 粒子特效
  20. 敏捷的三个中心;再谈Buffer

热门文章

  1. 天气小工具新增风格-默认无背景,感谢欧阳兄制作
  2. SVN Switch
  3. STL Priority_Queue
  4. UA PHYS515A 电磁理论III 静磁学问题1 Maxwell方程与静磁学问题
  5. UA SIE545 优化理论基础 例题 对偶函数的凸性与次梯度计算
  6. 初步的看一下C#窗体程序的直接反汇编代码
  7. 3D 投影矩阵学习1
  8. 三套JSP源代码的安装部署过程和遇到的问题图解
  9. 使用Sysmon和Splunk探测网络环境中横向渗透
  10. aapt: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS64