PHY调试经验

这篇具有很好参考价值的文章主要介绍了PHY调试经验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. PHY调试过程

        1.设备树中配置正确的PHY ADDR、PHY ID、clause 45或者22协议,PHY ADDR配置不正确会导致MDC/MDIO通信不正常或失败,PHY ID用于匹配PHY驱动程序。

        2.通过MDC/MDIO读写PHY ID并对比datasheet中的PHY ID,确认MDC/MDIO通信是否正常。

        3.MDC/MDIO通信正常的情况下,读写PHY的寄存器查看PHY的状态是否正常,比如主从、RGMII模式、Link状态。

        4.确认TXCLK是否正常,2.5MHZ对应10M速度,25MHZ对应100M速度,125MHZ对应1000兆速度,当自动协商不成功的时候,可以在设备树中配置fixed-link节点强制配置MAC工作在某种状态,比如100兆全双工。

fixed-link {
    speed = <100>;
	full-duplex;
};

        5.确认SOC侧MAC RGMII接口是否有配置delay,如果没有,PHY侧需要配置delay。

        6.确认SOC侧MAC是否工作正常,通过devmem dump寄存器信息确认RGMII模式、全双工/半双工模式、link状态、speed状态。

2. phy驱动开发步骤说明

        针对phy 驱动而言,主要实现两部分的内容:

        1.实现probe、remove、suspend、resume接口,用于完成phy_driver的注册与注销,以及针对linux设备-总线-驱动模型的基础;

        2.实现phy device处理相关的接口:

config_init
config_aneg
read_status
ack_interrupt
config_intr
did_interrupt
match_phy_device
ts_info
hwtstamp
rxtstamp
txtstamp
set_wol
get_wol

        2.1其中config_init主要是对phy device进行一些初始化配置;

        2.2而config_aneg、read_status主要用于设置phy device的自适应机制已经获取phy的状态(主要用于获取适配速率、双工模式等),一般这两个接口直接使用genphy_config_aneg、genphy_read_status即可,触发该phy device有特殊的定义;

        2.3而ack_interrupt、config_intr、did_interrupt主要用于phy device的link up/down相关的中断处理,这个与具体的phy device有关,查看相应的芯片手册说明即可;

        2.4而针对ts_info、hwtstamp、rxtstamp、txtstamp、set_wol、get_wol主要是时间戳相关的处理,大多数phy device均不需实现这几个接口。

        2.5match_phy_device主要用于实现phy_device与phy_driver的匹配检测,若一个phy_driver支持多个类型的phy_device,则最好实现该接口,若该phy_driver只适配某一个型号的phy_device,则不需要实现该接口,只需要设置支持的phy_id与phy_mask即可。

        以上即是实现phy driver的大体步骤,一般情况下若phy device不是很特殊,完全可以不实现phy driver,而在mdiobus_register时针对没有匹配phy_driver的设备,会将其与genphy_driver进行绑定,而genphy_driver基本上对大多数phy device而言,均可以正常驱动。但若我们仅需要在phy driver的probe接口中进行一些配置(如设置phy device的led mode 等),则完全可以将config_ange、read_status等接口使用genphy_driver中的接口,仅实现probe接口即可。

3. Claus45读写接口封装

        SOC芯片:高通默认不支持C45协议

        PHY芯片:marvell 88q1110,支持寄存器13&14扩展控制PCS/PMA寄存器

        path:Linux/include/phy.h文章来源地址https://www.toymoban.com/news/detail-447515.html

static inline int phy_write_c45(struct phy_device *phydev, u32 dev_id, u32 regnum, u16 val)
{
        mdiobus_write(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0d, dev_id);
        mdiobus_write(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0e, regnum);
        mdiobus_write(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0d, 0x4000 | dev_id);
        return mdiobus_write(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0e, val);
}

static inline int phy_read_c45(struct phy_device *phydev, u16 dev_id, u32 regnum)
{       
        mdiobus_write(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0d, dev_id);
        mdiobus_write(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0e, regnum); 
        mdiobus_write(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0d, 0x4000 | dev_id);
        return mdiobus_read(phydev-&gt;mdio.bus, phydev-&gt;mdio.addr, 0x0e);
}

到了这里,关于PHY调试经验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zephyr 设备树中的特殊节点

    在zephyr中包含一部分特殊节点,他们的功能各不相同,节点如下: aliases chosen zephyr,user aliases 是对设备树中其他节点起的别名,别名用于为节点提供较短的名称,该名称可用于设备树的其他部分以引用节点。 在Zephyr中,chosen节点是一个特殊的设备树节点,用于指定一些系统级

    2024年02月02日
    浏览(25)
  • linux驱动之中断(一) --- 设备树中描述中断

    本文仅介绍如何在Linux驱动中使用中断 linux中的中断不可嵌套(中断不可打断其他中断) 不宜在中断中做耗时长的事情 耗时的事情应当放在中断下半部中 中断下半部是可以被其他中断打断的, 而且可以用线程来执行 内核对中断下半部有三种方式 1,软中断 2, tasklet(用软中断实现

    2024年02月03日
    浏览(22)
  • RTL8201 以太网PHY芯片 调试记录

    为了尽量给甲方降低成本,决定使用较低成本的PHY芯片RTL8201F-VB-CG芯片。移植官网的以太网demo程序,git上下载了一份很好看的rtl8201F的驱动程序,用来替换官方demo的lan8742程序。并没有直接通,于是开始了调试之路。 芯片型号:stm32h753 官网例程文件名:STM32Cube_FW_H7_V1.10.0 使用

    2023年04月20日
    浏览(33)
  • 展锐UDX710:LAN7800 PHY驱动调试

    内核:Linux 4.14.98 Modem:展锐UDX710 驱动:LAN78XX PHY驱动 USB PHY:LAN7800 将展锐UDX710 Type A(USB3.0)配置为主模式,确保可以识别从设备LAN7800 PHY: 将LAN7800 USB口连接到UDX710的Type A(USB3.0)口,然后将RJ45连接到PC的网口供PC上网使用。 在内核中按照如下打开编译选项开启内核LAN78XX驱

    2024年02月06日
    浏览(44)
  • PHY6222_手机上使用蓝牙调试助手交互

    PHY6222是蓝牙芯片,simpleBLEPeripheral这个工程就是含有蓝牙连接的例程,所以在学习外设的使用之前想先看下怎么在手机上连接这个蓝牙,进行数据收发。需要在手机上安装“BLE蓝牙助手”,直接在浏览器搜索下载即可。 到BUMBLE这个设备,点击连接; 连上之后,就会看到4个蓝

    2024年02月09日
    浏览(30)
  • 针对“您的计算机配置似乎是正确的,但该设备或资源(DNS 服务器)没有响应“问题解决

    解决思路: 1.在“开始”中找到“运行”(或者直接【Win】+【R】),然后输入“cmd”进入管理员操作界面。 2.在管理员界面中输入命令:ipconfig/all然后按Enter键确认即可显示WindowsIP配置,在这里我们可以查看我们的DNS服务器地址。  IPv4 地址 . . . . . . . . . . . . :   默认网关. .

    2024年02月07日
    浏览(35)
  • PHY芯片的使用(二)使用Vivado SDK调试网络

    在使用ZYNQ或者FMQL的以太网时都需要在Vivado BD中勾选Enet0/1, 最好也勾选上UART0/1。 如果就使用这两个外设就可是直接生成bit然后导出硬件启动SDK了。 SDK建立工程中有以太网相关的工程,选用最简单的即可如下图。 使用这个工程除了选Enet还要选用串口,否则工程无法建立。 建

    2024年02月11日
    浏览(27)
  • 飞腾CPU FT-2000/4 uboot下PHY调试记录

    飞腾爱好者技术交流群码 公众号“乌拉大喵喵”   一、环境说明 板子是FT-2000/4的开发板: 固件版本: ft-2004c_u-boot-v2-Ver0.3_202112231001.tar.gz ft2004c_v2.06_image_fix.rar   二、调试命令说明 调试PHY主要用到的命令是mii,先查看下可用的命令: mii device,缩写mii dev,查看网络控制器m

    2023年04月24日
    浏览(45)
  • 【驱动】TI AM437x(内核调试-06):网卡(PHY和MAC)、七层OSI

    第一层:物理层。 1)需求: 两个电脑之间如何进行通信? 具体就是一台发比特流,另一台能够收到。于是就有了物理层:主要是定义设备标准,如网线的额接口类型、管线的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流,就是从1/0转化为电流强弱来进

    2024年01月17日
    浏览(51)
  • Windows下关于windbg 调试 dump文件过程的环境配置以及注意事项

    在windows下,异常的调试很便捷,除了使用vs调试外还可以使用微软的windbg,windbg一般在安装vs的时候可以选装(windows开发套件),如果你是使用vs的开发者,那可以去磁盘中搜索windbg.exe看看有没有在安装vs的时候安装windbg,如图: 如果没有安装windbg也没关系,可以去微软的官网下载 下载

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包