vxworks phy调试续

VxWorks设备驱动程序开发指南(三)---驱动程序的分类 设备驱动程序的分类 1、Introduction 本章讨论和基于VxBus驱动程序模型的VxWorks设备驱动程序的相关核心概念,并特别剖析了VxBus设备驱动程序框架,主要包括以下信息: 设备驱动程序相关的文件和目录结构VxBus方法VxBus设备驱动程序的生命周期 除此之外,本章还包括了在SMP环境下开发设备驱动程序的guidline。本章解释的一些概念通常适用于所有的Device 阅读详情
LOCAL STATUS etsecPhyRead
    (
    VXB_DEVICE_ID pDev,
    UINT8 phyAddr,
    UINT8 regAddr,
    UINT16 *dataVal
    )
    {
    ETSEC_DRV_CTRL * pDrvCtrl;
    STATUS rval = ERROR;
    FUNCPTR miiRead;
    int i;


    pDrvCtrl = pDev->pDrvCtrl;


    if (CSR_READ_4(pDev, ETSEC_ECNTRL) & ETSEC_ECNTRL_TBIM)
        {
        if (regAddr == MII_PHY_ID1_REG)
            {
            *dataVal = TBI_ID1;
            return (OK);
            }
        if (regAddr == MII_PHY_ID2_REG)
            {
            *dataVal = TBI_ID2;
            return (OK);
            }
        }
    else
        {
        /* Avoid tripping over the TBI management port */


        if (phyAddr == pDrvCtrl->etsecTbiAddr)
            {
            *dataVal = 0xFFFF;
            return (ERROR);
            }
        }


    if (phyAddr != pDrvCtrl->etsecMiiPhyAddr && phyAddr < 0x20)
        {
        *dataVal = 0xFFFF;
        return (ERROR);
        }




    if (phyAddr > 0x1F)
        phyAddr -= 32;
/*this is a false phy*/
if(pDrvCtrl->etsecMiiPhyAddr == 0x7){
       *dataVal = 0x1234;
       return (OK);

}



    /*
     * If we're not the management device (ETSEC0), then
     * forward the read request.
     */


    if (pDrvCtrl->etsecMiiDev != pDev && pDrvCtrl->etsecMiiPhyRead != NULL)
        {
        miiRead = pDrvCtrl->etsecMiiPhyRead;
        phyAddr += 32;
        return (miiRead (pDrvCtrl->etsecMiiDev, phyAddr, regAddr, dataVal));
        }


    semTake (pDrvCtrl->etsecDevSem, WAIT_FOREVER);


    CSR_WRITE_4(pDev, ETSEC_MIIMADD, regAddr | (phyAddr << 8));
    CSR_WRITE_4(pDev, ETSEC_MIIMCOM, 0);
    CSR_WRITE_4(pDev, ETSEC_MIIMCOM, ETSEC_MIIMCOM_READ);


    for (i = 0; i < ETSEC_TIMEOUT; i++)
        {
        if ((CSR_READ_4(pDev, ETSEC_MIIMIND) &
            (ETSEC_MIIMIND_BUSY|ETSEC_MIIMIND_NOT_VALID)) == 0)
            break;
        }


    if (i == ETSEC_TIMEOUT)
        *dataVal = 0xFFFF;
    else
        {
        *dataVal = CSR_READ_4(pDev, ETSEC_MIIMSTAT) & 0xFFFF;
        rval = OK;
        }


    semGive (pDrvCtrl->etsecDevSem);


    return (rval);
    }
ZYNQ7平台vxWorks6.9引导实战:从UBOOT编译到网络启动全解析 本文详细解析了在ZYNQ7平台上实现vxWorks6.9从UBOOT编译到网络启动的全流程。内容涵盖开发环境搭建、UBOOT源码编译、设备树定制、网络启动配置及vxWorks镜像调试等关键步骤,特别针对ZC702开发板提供了实战经验与常见问题解决方案,助力开发者高效完成嵌入式系统开发。 阅读详情

相关推荐

VxWorks 6.9 BSP 移植:正点原子领航者7020串口与网口3处关键配置修改

本文详细介绍了VxWorks 6.9 BSP在正点原子领航者7020开发板上的移植过程,重点解析了串口控制器切换、网络PHY地址配置和时钟树调整三处关键修改。通过Wind River Workbench开发环境和Xilinx Vivado工具链的配合,开发者可以快速完成硬件适配,确保系统稳定启动和运行。

weixin_33738982的博客 420

VxWorks千兆网卡驱动开发之认识网卡

网卡也叫网络适配器,是实现计算机进行网络通讯的设备。网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建

zhdi1986的专栏 4171

VxWorks下GPIO模拟MDC/MDIO驱动PHY调试实战

MDIO是IEEE 802.3定义的管理接口,用于MAC与PHY间寄存器读写。其原理基于SMI帧结构,通过MDC时钟同步MDIO数据线传输。在嵌入式开发中,硬件SMI控制器常因引脚复用或缺失而不可用,此时软件模拟成为关键备选方案。GPIO模拟通过精确控制引脚翻转时序,实现PHY寄存器访问,技术价值在于提供可控、可观测的调试通道,适用于板级bring-up、国产化平台移植等场景。本文聚焦VxWorks系统,详细阐述如何利用GPIO模拟MDC/MDIO时序,并集成到mii框架,解决PHY调试难题。

weixin_42531588的博客 240

ZYNQMP_XAZU3EG_VxWorks7 添加GEM 千兆网卡

1.修改设备树文件 &gem3 { status = "okay"; phy-handle = <&phy3>; phy3: ethernet-phy@12 { compatible = "genericPhy"; reg = <12>; rgmii-delay = <0x3>; rx-internal-delay = <0x8>...

u014689277的博客 1259

VxWorks下GPIO模拟MDC/MDIO驱动:PHY寄存器调试的保底方案

在嵌入式网络驱动开发中,MDC/MDIO是访问PHY芯片寄存器的标准接口,常与SMI总线、MII管理子层关联。当硬件MDIO控制器受引脚复用限制或状态机异常时,调试PHY寄存器往往陷入困境。GPIO模拟方案通过普通IO口按帧协议精确翻转时序,自主控制时钟极性、采样点和数据方向切换,实现可靠的寄存器读写。该技术价值在于不依赖片上外设,可提前在VxWorks BSP初始化阶段验证PHY链路,快速定位上拉电阻、PHY地址、时序裕量等硬件问题,是网络驱动适配、板级调试及硬件改版后的高效兜底手段。本文从SMI帧协议拆

weixin_29163797的博客 286

VxWorks下GPIO模拟MDIO:SMI时序驱动开发与PHY调试实战

SMI(Station Management Interface)是IEEE 802.3定义的MAC与PHY间管理接口,通过MDC时钟和MDIO双向数据线读写PHY寄存器。其原理基于32位帧格式,由主控在MDC上升沿采样MDIO完成通信。在嵌入式开发中,当硬件未引出专用MAC控制器时,利用GPIO模拟SMI时序成为关键调试手段,可实现对PHY ID读取、自协商配置及链路状态监控。该技术广泛应用于VxWorks BSP移植、网络设备驱动开发及硬件故障排查场景。本文聚焦GPIO模拟MDIO的驱动分层设计、时序拆

weixin_29170327的博客 30

针对P1010项目vxworks5.5网卡驱动开发的问题记录

目前针对p1010的网卡驱动开发进行了一个阶段,但思路一直不是很清晰,目前两路网卡均用SGMII模式,phy使用的是88e1512,目前在vxWorks下进行驱动调试,1路不通,2路可以进网卡的接收中断,但无法进发送中断,两路均无法ping通。

1105

VxWorks下GPIO模拟MDIO时序驱动PHY寄存器读写实战

MDIO(管理数据输入输出)是IEEE 802.3定义的双线串行接口,用于MAC与PHY之间的寄存器访问。其核心原理是通过MDC时钟同步,以32位帧格式(含前导码、操作码、地址和数据)实现读写,其中读操作需在TA阶段切换总线方向。在嵌入式网络开发中,当硬件缺乏专用SMI控制器时,常采用GPIO模拟(bit-banging)方式实现MDIO时序,从而完成PHY初始化、自协商配置与链路状态监测。该技术广泛应用于VxWorks等实时操作系统下的网络底层驱动开发,尤其适合非标准接线的板卡调试。本文以GPIO模拟MD

weixin_31887307的博客 243

vxWorks6.6下基于vxBus的以太网驱动开发

最近更换mpc8313的phy芯片,由原来的lxt972Phy更换为DP83849I,在此记录下本人在驱动开发过程中的点滴记录,以备日后查询,基于vxbus的网络驱动,vxBus驱动的注册遵循一致的方法,驱动接口为: device_method_t dp83849PhyMethods[] = { DEVMETHOD(miiModeGet, dp83849PhyModeGet), DEVMETHOD(miiModeSet, dp83849PhyModeSet),...

harhy的专栏 1220

VxWorks下GPIO模拟MDC/MDIO驱动PHY寄存器读写实战

在嵌入式网络开发中,MDC/MDIO(SMI)是MAC与PHY之间配置和读取状态的标准接口,通常由MAC内置的SMI控制器实现。然而,当硬件设计将MDC/MDIO引脚连接至通用GPIO,或SMI控制器不可用时,就需要通过软件模拟时序。其原理是精确控制GPIO翻转,模拟Clause 22帧格式的MDC时钟与MDIO数据线,实现PHY寄存器读写。这种GPIO模拟方法为VxWorks BSP移植和网络底层调试提供了灵活的技术手段,尤其适用于PHY必须配置但硬件SMI受限的场景。本文分享的驱动代码包,可直接用于此类

weixin_34216614的博客 304

GPIO模拟MDC/MDIO时序读写PHY寄存器实战(VxWorks实现)

在嵌入式网络驱动开发中,PHY芯片的配置与管理依赖MDIO总线协议。当主控芯片缺乏专用MDIO控制器时,通过GPIO模拟MDC/MDIO时序便成为关键替代方案。本文从SMI接口的基本原理出发,解析MDC时钟与MDIO数据线的时序要求,并基于VxWorks平台给出了完整的GPIO模拟实现,涵盖帧格式、读写寄存器流程以及常见故障排查。利用GPIO引脚的电平翻转,即可稳定读取PHY ID、配置工作模式并监控链路状态,有效解决无SMI控制器场景下的PHY管理难题。该方法适用于BSP移植、网络驱动适配及低成本硬件设计

weixin_31815843的博客 322

vxworks phy调试

1.  在BDdrv/*.c文件中编译target/config/mpc8377/vxbEtsecEnd.c#include "vxbEtsecEnd.c" STATUS myPhyRead ( VXB_DEVICE_ID pDev, char phyAddr,char regAddr ) { UINT16 dataVal; ETSEC_DRV_CTRL *

qingfengtsing的专栏 6321

VxWorks下用GPIO模拟MDC/MDIO驱动PHY:SMI总线实现与避坑指南

在嵌入式开发中,MDC/MDIO作为IEEE 802.3定义的串行管理接口(SMI),承担着CPU与PHY芯片之间寄存器读写的关键职责。当硬件MDIO控制器不可用或引脚被复用,GPIO模拟MDC/MDIO便成为高效替代方案。其核心在于完全通过软件控制时序,按SMI协议帧格式逐位生成MDC时钟并双向切换MDIO数据线,实现PHY寄存器读写。这种方法不仅规避了硬件控制器时序兼容性问题,也为调试PHY驱动提供了更大灵活性。工程实践中,常用在VxWorks等RTOS环境下,借助GPIO实现PHY ID探测、回环测试

weixin_29184075的博客 180

zynq7020 vxWorks移植问题笔记:网卡无法ping通,phy无法识别

一、问题描述 1. KSZ9031 在vxWorks移植过程中无法被识别,网卡无法在vxWorks 中显示且不能ping通 2. 网卡能在vxWorks 显示后,无法ping通,打开驱动调试信息,报错hresp not ok 二、解决办法 1.phy识别:研究原理图,发现phy芯片连接方式计算的phy地址错误,改变后,phy能正确识别 修改hwconf文件中网卡资源定义 2.hre...

Surest的博客 7225

VxWorks下GPIO模拟MDC/MDIO实现PHY寄存器读写的驱动方案解析

在嵌入式网络开发中,PHY芯片的配置与管理高度依赖MDC/MDIO总线(又称SMI接口),而硬件MDIO控制器缺失或复用冲突是常见痛点。通过普通GPIO引脚模拟MDC时钟与MDIO数据线,基于位操作精确复现SMI帧时序,即可实现完整的PHY寄存器读写。这种软件化方案不依赖特定硬件控制器,具备良好的可移植性与调试透明度,尤其适配VxWorks等实时系统下的驱动开发场景。工程实践中需重点处理时序精度、GPIO方向切换和总线采样窗口等关键环节,本文从协议帧格式出发,完整解析了这一方案的驱动实现与调试方法。

weixin_29185167的博客 96

DM9000A VxWorks嵌入式网络驱动移植与调试指南

DM9000A是一种广泛应用于工控、电力RTU和军用通信模块的16位以太网控制器,其VxWorks驱动开发属于典型的裸金属级嵌入式网络底座构建。核心原理在于寄存器级内存映射、MDIO协议模拟、PHY自协商状态机控制及END框架下的中断与缓冲区管理。技术价值体现在对硬件时序的精确把控与实时操作系统网络栈的深度适配,支撑高可靠工业场景下的稳定通信。典型应用场景包括PowerPC/MIPS架构板卡(如MV2100、PPC405EX)上的网络功能启用、BSP层地址映射校准、以及VxWorks 5.5–6.9多版本兼

weixin_29193359的博客 146

vxworks下gmac调试的总结

1:3280芯片手册详解过程: MAC 控制器支持 DMA 接收和发送,内部在接收和发送方向各有一个 2048 字节的 FIFO作为缓存。由于 FIFO 深度所限,MAC 控制器不支持硬件自动流控机制。 模式和带宽的切换 1:在做 MII 和 RMII 之间的切换前,应该先掉电 2:上电后软件重新配置芯片系统控制模块中MAC 的工作接口模式寄存器,之后再启动 MAC 控制器 3:需要注意...

duwenhan320712的博客 3732

别再瞎调参数了!分子动力学模拟新手必看的力场选择与验证实战指南

本文为分子动力学模拟新手提供力场选择与验证的实战指南,详细解析主流力场特性及适用场景,并通过水分子案例演示完整的验证流程。文章重点对比SPC/E、TIP3P和OPLS-AA三种力场在GROMACS中的表现,帮助读者避免常见参数调整误区,提升模拟准确性。

weixin_26934905的博客 426

vxworks issue: PCIE Bar Base Address Unalignment

文章目录1. 问题现象2. 分析过程Step 1. 排查网卡驱动(vxbGei825xxEnd.c)Step 2. 综合分析(相关知识)Step 3. 排查PCIE物理地址和CPU物理地址转换(vxbPci.c)Step 4. 排查PCIE物理地址的配置(vxbPciAutoCfg.c)3. 结论 1. 问题现象 在调试 Am5728 + vxworks + 外部pcie网卡(i210) 时,发现可以找到pcie设备,但是网口不通。 现象1.可以在vxbus上看到pcie控制器和i210网卡的相关设备和驱

pwl999的博客 2490

C#调用Halcon程序三种方法

C#调用Halcon程序三种方法 1.halcon导出C#文件,在C#里面调用 2.在C#里面使用Halcon引擎调用Halcon程序 3.在C#里面使用Halcon引擎调用.hdev下本地函数或者.hdvp外部函数 Halcon引擎手册:C:/Program Files/MVTec/HALCON-21.11-Progress/doc_en_US/html/manuals/programmers_guide/programmers_guide_0120.html 1.导出C#(代码我只给出类,需要调用)

A541925504的博客 1万+

碳化硅外延层厚度测量:红外干涉光谱与FFT技术详解

薄膜厚度测量是半导体制造中的关键工艺控制环节,其核心原理基于光的干涉现象。当光在薄膜上下界面反射并叠加时,会产生与厚度相关的干涉条纹。通过分析这些条纹,可以非接触、无损地获取薄膜的精确厚度信息。这项技术的核心价值在于实现了对关键工艺参数的在线、快速监控,对于提升器件性能与生产良率至关重要。在第三代半导体,尤其是碳化硅功率器件的制造中,外延层厚度直接决定了器件的击穿电压和导通电阻等核心性能。红外干涉光谱法因其对碳化硅材料在红外波段的良好透过性,成为该领域主流的厚度测量方案。通过快速傅里叶变换(FFT)对采集到

weixin_29032489的博客 309
上一篇: uboot环境变量与内核MTD分区关系
下一篇: linux字符设备驱动框架理解
qingfengtsing
博客等级 码龄15年 343粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值