Z1667956094 2024-09-03 22:59 采纳率: 0%
浏览 9
已结题

嵌入式设备网口down后再up时不能link?

使用国产裕泰8521phy芯片,芯片工作在sgmac-to-rgphy 模式,对端接东土的交换芯片,交换芯片已经设置为强制前兆,sgmii 模式。使用的phy驱动为yt8521的专用驱动motircomm,我启动时需要设置一下寄存器的值以便phy工作在正常模式,相关启动脚本如下:

img

第一次启动后,可以正常link 到千兆模式,但我使用ifconfig eth1 down 后,发现不再自动link ,如下

img

img


但是速度与双工模式均正确,此时我再执行命令mdio eth1 0 0x1200 midi eth1 0 0x140 后又可再次link ,查阅芯片手册寄存器写1200是使能自协商,写140是工作在千兆全双工模式,现在想要实现使用ifconfig eth1 up时自动link,而不是手动执行,我在phy驱动的resume 函数和config_aneg函数中均做过修改,但似乎没有效果,应该如何修改?或者跟哪些函数有关?请各位指教

  • 写回答

16条回答 默认 最新

  • 吃不了席 2024-09-03 23:00
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    要解决这个问题,首先确保在phy驱动的resume()函数中设置了正确的寄存器值。这里是一个可能的解决方案:

    #!/bin/bash
    
    # 假设phy驱动的resume函数名为resume()
    
    # 在resume函数中设置正确的寄存器值
    resume() {
        # 寄存器地址
        REG_ADDR=0x140
    
        # 设置PHY地址
        if [[ $1 == "eth1" ]]; then
            echo "eth1"
            shift
            REG_ADDR=$1
        elif [[ $1 == "ethl" ]]; then
            echo "ethl"
            shift
            REG_ADDR=$1
        fi
    
        # 设置PHY地址
        echo "Setting PHY address to $REG_ADDR"
    
        # 设置PHY控制寄存器
        sed -i "s/$REG_ADDR/0x$REG_ADDR/" /root/yt8521/drivers/phy/mii/bus/stmmac-0:03/config.txt
    
        # 重启PHY
        reboot
    }
    
    resume eth1
    

    在这个示例中,我们首先检查输入参数是否包含eth1ethl。如果是,我们就将相应的PHY地址作为参数传递给函数。然后,我们在resume函数中设置PHY控制寄存器,并通过sed命令更新它。最后,我们通过reboot命令重启PHY以应用更改。

    请注意,这只是一个基本示例,实际操作可能会根据具体的硬件和软件环境有所不同。此外,你需要确保你的phy驱动程序支持设置PHY控制寄存器。如果你遇到问题,建议查看相关的硬件和软件文档,了解如何设置这些寄存器。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月4日
  • 赞助了问题酬金15元 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?