YT8521S PHY驱动调试

文章描述了一次针对交换机OOB口网络连接时常断开问题的内核调试过程。主要涉及MAC驱动和PHY驱动的查找与移植,包括CTCMAC驱动、YT8521SPHY的识别与初始化,以及各种回环测试。经过一系列排查,问题定位在MAC和PHY之间的信号衰减导致的链路协商问题。
摘要由CSDN通过智能技术生成

调试交换机的OOB口遇到网口时常断开的问题,根据此问题调试linux内核;

内核版本:4.9.X

mac和phy之间的连接方式如下:

RJ-45---MDI---YT8521S---Serdes---RGMII/SGMII---MAC

1、查找mac驱动

mac芯片使用的是CTC提供的,驱动也是直接用盛科的,模式配置为sgmii-mac;

内核的配置文件中通过加载CONFIG_NET_VENDOR_CENTEC=y控制

2、查找phy驱动

查看phy手册,找到YT8521S的phyid,通用寄存器的0x02,0x03得到phy id为0x0000011a;

通过phy_device通用驱动扫描phy地址发现不存在,即内核目前没有加载phy驱动或者不需要phy驱动;

3、移植phy驱动

移植树莓派的YT系列phy驱动,发现现状和原来一样,阅读驱动代码发现phy初始化也只是一些常规操作,设置UTP模式,初始化phy结构体,关闭睡眠;这些默认就已经在配置好了,或者uboot初始化配置了;

4、根据封装一致性替换成RTK、mvl、bcm的phy驱动;

现象没有改变,调试过程确认内核phy驱动没用用到phy地址参数,内核操作phy是根据mdio协议phy id操作的;

5、根据YT调试手册设置mac自环,没有link down出现,设置phy自环,发下任然有link down,数据的读写都正常;

YT8521S 分为 UTP 回环与 Serdes 回环。
phy mii 0x00 寄存器 Bit14=1, UTP-Internal loopback
phy ext 0x0A  寄存器 Bit4=1 , UTP- External loopback
Common 0xA006 寄存器 Bit5=1 , UTP -Remote Loopback
sds mii 0x00 寄存器 Bit14 = 1, Serdes Internal loopback
sds 回环线硬件连接即可,进入 serdes External Loopback
common 0xa006 寄存器 Bit6 = 1,且 sds mii 0x00 寄存器 Bit15=1, serdes Remote Loopback

确定问题出现在phy和mac连接的问题上;

6、通过硬件手段直接断开mdio的数据总线,发现任然有link up/down的现象,说明uboot的配置没有太大的影响,

最终判断是mac和phy之间的信号衰减导致的协商导致;

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值