Linux 网络驱动 phy 读写寄存器调试方法

简介: Linux 网络驱动 phy 读写寄存器调试方法

Linux 网络 phy 调试方法

目前嵌入式芯片支持双网卡的有很多。在调试网络驱动时,需要通过mdc 和mdio信号对phy的寄存器进行操作调试。如果每次调试都修改网络驱动的话会很麻烦。下面提供我常用的网络驱动调试方法

在驱动层,设备树绑定mac与mdio总线的关系。

在Linux应用层,编写测试程序mdio 。代码如下:

如果是写寄存器操作,就传入四个参数./mdio ethX phyId addr value.。

ethX 表示是哪个网卡,如eth0 eth1 。

phyId是 phy的物理地址,一般0x00是广播地址.有些phy 的0x00不是广播地址,如marvell 的88e1512 ID 只能时0x00 0x11,0x00不是88e1512的广播地址。

addr 是phy手册的寄存器地址

value 是phy地址要写入的值

如果是读寄存器操作,就传入三个参数./mdio ethX phyId addr

#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>
#include <unistd.h>
 
//#include <QDebug>
 
 
int main(int argc, char *argv[])
{
    int sockfd;
    struct mii_ioctl_data *mii = NULL;
    struct ifreq ifr;
    memset(&ifr, 0, sizeof(ifr));
    strncpy(ifr.ifr_name, "eth0", IFNAMSIZ - 1);
    sockfd = socket(PF_LOCAL, SOCK_DGRAM, 0);
    ioctl(sockfd, SIOCGMIIPHY, &ifr);
    mii = (struct mii_ioctl_data*)&ifr.ifr_data;
 
    if(argc == 4)
    {
        strncpy(ifr.ifr_name, argv[1], IFNAMSIZ - 1);
        sockfd = socket(PF_LOCAL, SOCK_DGRAM, 0);
        ioctl(sockfd, SIOCGMIIPHY, &ifr);
        mii = (struct mii_ioctl_data*)&ifr.ifr_data;
 
        mii->phy_id    = (uint16_t)strtoul(argv[2], NULL, 0);
        mii->reg_num    = (uint16_t)strtoul(argv[3], NULL, 0);
 
        ioctl(sockfd, SIOCGMIIREG, &ifr);
 
        printf("read --- value : 0x%x", mii->val_out);
    }
    else if(argc == 5)
    {
        strncpy(ifr.ifr_name, argv[1], IFNAMSIZ - 1);
        sockfd = socket(PF_LOCAL, SOCK_DGRAM, 0);
        ioctl(sockfd, SIOCGMIIPHY, &ifr);
        mii = (struct mii_ioctl_data*)&ifr.ifr_data;
        mii->phy_id    = (uint16_t)strtoul(argv[2], NULL, 0);
        mii->reg_num    = (uint16_t)strtoul(argv[3], NULL, 0);
        mii->val_in     = (uint16_t)strtoul(argv[4], NULL, 0);
 
        ioctl(sockfd, SIOCSMIIREG, &ifr);
    }else{
       printf("mdio ethX phyId addr value\n");
    }
 
    close(sockfd);
 
 
 
    return 0;
}

————————————————
版权声明:本文为CSDN博主「Eric_Xi_BJ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yafeixi/article/details/112958722

目录
相关文章
|
2月前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
80 11
|
1月前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
272 89
|
4月前
|
机器学习/深度学习 数据采集 人工智能
未来的守护神:AI驱动的网络安全之盾,如何用智慧的光芒驱散网络黑暗势力?揭秘高科技防御系统背后的惊天秘密!
【10月更文挑战第3天】随着网络技术的发展,网络安全问题日益严峻,传统防御手段已显不足。本文探讨了构建AI驱动的自适应网络安全防御系统的必要性及其关键环节:数据采集、行为分析、威胁识别、响应决策和执行。通过Python库(如scapy、scikit-learn和TensorFlow)的应用实例,展示了如何利用AI技术提升网络安全防护水平。这种系统能够实时监控、智能分析并自动化响应,显著提高防护效率与准确性,为数字世界提供更强大的安全保障。
92 2
|
1月前
|
机器学习/深度学习 数据采集 人工智能
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
GeneralDyG 是南洋理工大学推出的通用动态图异常检测方法,通过时间 ego-graph 采样、图神经网络和时间感知 Transformer 模块,有效应对数据多样性、动态特征捕捉和计算成本高等挑战。
68 18
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
|
2月前
|
机器学习/深度学习 数据采集 人工智能
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
层次化Softmax算法通过引入Huffman树结构,将传统Softmax的计算复杂度从线性降至对数级别,显著提升了大规模词汇表的训练效率。该算法不仅优化了计算效率,还在处理大规模离散分布问题上提供了新的思路。文章详细介绍了Huffman树的构建、节点编码、概率计算及基于Gensim的实现方法,并讨论了工程实现中的优化策略与应用实践。
84 15
基于Huffman树的层次化Softmax:面向大规模神经网络的高效概率计算方法
|
2月前
|
运维 监控 安全
公司监控软件:SAS 数据分析引擎驱动网络异常精准检测
在数字化商业环境中,企业网络系统面临复杂威胁。SAS 数据分析引擎凭借高效处理能力,成为网络异常检测的关键技术。通过统计分析、时间序列分析等方法,SAS 帮助企业及时发现并处理异常流量,确保网络安全和业务连续性。
64 11
|
2月前
|
域名解析 缓存 网络协议
优化Lua-cURL:减少网络请求延迟的实用方法
优化Lua-cURL:减少网络请求延迟的实用方法
|
3月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
253 1
|
3月前
|
安全 算法 网络安全
量子计算与网络安全:保护数据的新方法
量子计算的崛起为网络安全带来了新的挑战和机遇。本文介绍了量子计算的基本原理,重点探讨了量子加密技术,如量子密钥分发(QKD)和量子签名,这些技术利用量子物理的特性,提供更高的安全性和可扩展性。未来,量子加密将在金融、政府通信等领域发挥重要作用,但仍需克服量子硬件不稳定性和算法优化等挑战。
|
4月前
|
机器学习/深度学习 计算机视觉
TPAMI 2024:计算机视觉中基于图神经网络和图Transformers的方法和最新进展
【10月更文挑战第3天】近年来,图神经网络(GNNs)和图Transformers在计算机视觉领域取得显著进展,广泛应用于图像识别、目标检测和场景理解等任务。TPAMI 2024上的一篇综述文章全面回顾了它们在2D自然图像、视频、3D数据、视觉与语言结合及医学图像中的应用,并深入分析了其基本原理、优势与挑战。GNNs通过消息传递捕捉非欧式结构,图Transformers则结合Transformer模型提升表达能力。尽管存在图结构构建复杂和计算成本高等挑战,但这些技术仍展现出巨大潜力。论文详细内容见:https://arxiv.org/abs/2209.13232。
256 3