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

news2024/11/15 11:06:06

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

问题描述

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

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

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

解决方案

  如下是上述问题的解决方案,仅供参考:

  在处理嵌入式设备网口在 down 和 up 状态之间的自动链接问题时,有几个关键点和步骤需要注意。以下是一些可能帮助你解决问题的建议和步骤:

1. 检查 PHY 驱动程序配置

确保你的 PHY 驱动程序正确地处理了 PHY 的自动协商和链接恢复。通常,PHY 驱动程序的 resume 函数和 config_aneg 函数需要确保在网络接口被重新启用时,PHY 能够自动恢复到正常工作状态。

  • resume 函数:该函数应重新初始化 PHY 的配置,确保 PHY 在 ifconfig eth1 up 时能够恢复到正确的状态。检查该函数是否调用了 PHY 配置函数,例如设置自协商、速度和双工模式。

  • config_aneg 函数:该函数负责配置 PHY 的自协商和其它相关参数。确保在该函数中对 PHY 进行正确的配置,特别是在接口重新启用时。

2. 检查网络接口驱动

确保网络接口的驱动(如 ethtool 的配置)在 ifconfig eth1 up 时能够正确地处理 PHY 的状态恢复。驱动可能需要在网络接口恢复时重新配置 PHY 参数。

3. 调整 PHY 初始化过程

PHY 初始化过程应确保在接口变为 up 时,PHY 能够执行必要的初始化步骤以恢复正常工作状态。你可以检查和调整 PHY 驱动的初始化流程。

4. 检查 PHY 寄存器设置

确保 PHY 寄存器的设置在接口被重新启用时是正确的。具体来说,检查以下寄存器设置:

  • 自协商寄存器(如寄存器 0x00):确保自协商被启用(写入 0x1200)。

  • 速度和双工模式寄存器(如寄存器 0x01):确保速度和双工模式被正确设置(写入 0x140)。

5. 调试和日志记录

增加调试信息和日志记录以帮助识别问题所在。可以在 resumeconfig_aneg 函数中添加日志输出,记录寄存器设置和状态变化情况。这有助于确定问题发生的确切位置。

6. 参考 PHY 和交换机文档

查阅 PHY 和交换机芯片的文档,确保理解所有寄存器的作用和设置要求。确认 PHY 和交换机的配置完全符合文档中的要求。

7. 补丁和更新

检查是否有可用的驱动程序补丁或更新,这些可能修复了你遇到的问题。检查 PHY 和交换机厂商的支持网站和社区。

示例修改(假设在 resume 函数中)

假设你在 resume 函数中添加了必要的寄存器设置代码,如下所示:

static int yt8521_resume(struct net_device *dev) {
    struct phy_device *phydev = dev->phydev;

    // Enable auto-negotiation
    phy_write(phydev, MII_BMCR, BMCR_ANENABLE);

    // Set speed and duplex mode
    phy_write(phydev, MII_ADVERTISE, ADVERTISE_1000FULL);

    // Perform a software reset
    phy_write(phydev, MII_BMCR, BMCR_RESET);

    return 0;
}

总结

确保 PHY 驱动程序和网络接口驱动在 ifconfig eth1 up 时能够正确地恢复 PHY 状态,可能需要检查和调整 PHY 寄存器的配置。增加调试信息和日志记录以帮助诊断问题,并确保你的 PHY 驱动程序和网络接口驱动都符合硬件的要求和规范。

  希望如上措施及解决方案能够帮到有需要的你。

  PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

  若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。

☀️写在最后

  如上问题有的来自我自身项目开发,有的收集网站,有的来自读者…如有侵权,立马删除。再者,针对此专栏中部分问题及其问题的解答思路或步骤等,存在少部分搜集于全网社区及人工智能问答等渠道,若最后实在是没能帮助到你,还望见谅!并非所有的解答都能解决每个人的问题,在此希望屏幕前的你能够给予宝贵的理解,而不是立刻指责或者抱怨!如果你有更优解,那建议你出教程写方案,一同学习!共同进步。

  ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏《CSDN问答解惑-专业版》,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。

码字不易,如果这篇文章对你有所帮助,帮忙给 bug菌 来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿哇。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2157891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[ComfyUI]又降了,只需10G显存玩转CogVideoX5B图生视频,效果太惊艳!

在数字艺术和创意领域,[ComfyUI]一直致力于为用户提供最优质的技术和工具。今天,我们激动地宣布,[ComfyUI]再次取得重大突破——只需10G显存,用户就能轻松玩转CogVideoX5B图生视频,创造出令人惊艳的效果! …

【人工智能】在大型活动中的应用案例

人工智能在娱乐大型活动中的应用 ## 作者主页: 知孤云出岫 目录 **人工智能在娱乐大型活动中的应用****1. 引言****2. 智能票务与入场管理****2.1 动态定价与票务预测****2.2 生物识别技术快速入场****2.3 区块链技术防伪票务管理** **3. 智能观众互动与个性化体验****3.1 个性…

Java语言程序设计基础篇_编程练习题**18.35(H 树分形)

目录 题目:**18.35(H 树分形) 代码示例 代码解释 输出结果 题目:**18.35(H 树分形) 一个H 树分形(本章开始部分介绍过,如图18-1)如下定义: 1)从字母H开始。H的三条线长度一样,如图 18-1a 所示。 2)字母H(以它的 sans-serif …

归并算法实现

1.归并算法图解 2.归并算法代码 package com.suanfa.sort;import java.util.Arrays;/*** 归并算法*/ public class MergeSort {/*** 拆的时间复杂度logn * 并的时间复杂度n nlogn** param arr* param left* param right*/public static void sortMerge(int[] arr, int left, …

第十一章 从0-1搭建一个简单的JavaWeb系统(三)

目录 一、工程代码结构 二、代码实现 三、运行效果 四、未完待续 本章节的每一段代码,建议全部自己敲一遍,加深印象,切勿直接复制黏贴。 一、工程代码结构 本章节实现注销(退出)功能,以下图片中标红的…

19个邮件群发小技巧,最大水平充分利用邮件营销

邮件群发在现代通信中占据着非常重要的位置。无论是在商业环境还是个人生活中,它都有着广泛的应用。无论您是公司的市场推广专家,还是社交团体的筹办者,掌握有效的邮件群发技巧会帮助您更好地传递信息、节约时间和提升工作效率。 确定目标受众…

【Ubuntu】Ubuntu安装编译C/C++环境简易版教程

环境 操作系统:ubuntu-22.04.4-desktop-amd64.iso 安装 第一步:更新软件包列表,检查可用的软件包更新 sudo apt update在这一步,我们可以确保系统中的软件包列表是最新的,以便后续的软件包管理操作。 第二步:安装…

craco-less使用问题

craco-less使用问题 问题背景 前端是用React搭建,使用craco配置,相关库或插件版本如下 "craco/craco": "^7.1.0","react-scripts": "^5.0.1","craco-less": "^3.0.1"在生产环境&#xff…

JAVA开源项目 甘肃非物质文化网站 计算机毕业设计

本文项目编号 T 043 ,文末自助获取源码 \color{red}{T043,文末自助获取源码} T043,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

【无人机设计与控制】基于蜣螂优化算法求解多无人机集群路径规划问题

摘要 本文基于蜣螂优化算法(Dung Beetle Optimization, DBO)研究了多无人机路径规划问题。目标是优化多无人机的飞行轨迹,在避免障碍物的同时,尽量减少能量消耗并保持集群内的通信。为提高搜索效率和准确性,对DBO进行…

AJAX 入门 day3 XMLHttpRequest、Promise对象、自己封装简单版的axios

目录 1.XMLHttpRequest 1.1 XMLHttpRequest认识 1.2 用ajax发送请求 1.3 案例 1.4 XMLHttpRequest - 查询参数 1.5 XMLHttpRequest - 数据提交 2.Promise 2.1 Promise认识 2.2 Promise - 三种状态 2.3 案例 3.封装简易版 axios 3.1 封装_简易axios_获取省份列表 3…

Spring Boot 中实现任务后台处理的几种常见方式

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 在现代应用程序中,后台处理对于处理发送电子邮件、处理文件、生成报告等任务至关重要。 Spring Boot 提供了多种机制来高效地实现后台任务。本文探讨了在 Spring Boot 中处理后台处理的各…

STM32调试TIC12400笔记

工作中需要用到,但是有关这个芯片的参考资料好少,自己写一下调试过程,持续更新中,还没调完。 用的是正点原子的mini板,芯片是stm32f103RCT,需要知道spi的相关知识,先配置spi,用cube…

Ubuntu初期配置常见问题汇总

ubuntu配置vim 代码配色 终端配置 ubuntu配置vim 代码配色 终端配置_ubuntu的vim配置-CSDN博客https://blog.csdn.net/GM2418/article/details/134195020小缺点是无法自动补齐 ubuntu中vim实现代码补全等功能_ubuntu vim 自动补全-CSDN博客https://blog.csdn.net/weixin_4580…

图纸加密软件有哪些?2024好用不踩雷的10款图纸加密软件推荐!

在当今数字化时代,图纸作为工程设计、建筑规划等领域的重要文件,其安全性至关重要。为了保护这些敏感信息不被泄露,图纸加密软件应运而生。本文将为您推荐2024年10款好用且不踩雷的图纸加密软件,帮助您选择最适合的工具来保护您的…

【machine learning-十-grading descent梯度下降实现】

grading descent 梯度下降参数更新方法 --导数和学习率 从导数项直观理解梯度下降 grading descent 算法就是更新参数,今天来学习下如何更新w和b 梯度下降 还是以线性回归的均方差损失函数如下为例: 损失函数的可视化图如下 : 横轴和纵轴分…

平价头戴式蓝牙耳机哪个牌子好?四大平价爆款头戴式耳机品牌推荐

在追求高品质音乐生活的同时,我们往往被高昂的价格所困扰,然而随着科技的进步和市场竞争的加剧,越来越多的平价头戴式蓝牙耳机品牌开始崭露头角,它们以出色的音质、舒适的佩戴体验和亲民的价格赢得了广大消费者的喜爱,…

数据结构之线性表(python)

华子目录 线性表的定义前驱与后继 1.顺序表(顺序存储结构)python列表与数组的区别列表数组 1.1插入数据实例 1.2删除元素实例 1.3查找元素1.4修改元素1.5综合示例 2.单链表2.1单链表的初始化2.2插入元素示例注意 2.3删除元素示例 2.4修改元素2.5查找元素…

【网络】TCP协议的简单使用

目录 echo_service server 单进程单线程 多进程 多线程 线程池 client echo_service_code echo_service 还是跟之前UDP一样,我们先通过实际的代码来实现一些小功能,简单的来使用TCP协议进行简单的通信,话不多说,我们先实现…

LabVIEW提高开发效率技巧----合理使用数据流与内存管理

理使用数据流和内存管理是LabVIEW开发中提高性能和稳定性的关键,特别是在处理大数据或高频率信号时,优化可以避免内存消耗过大、程序卡顿甚至崩溃。 1. 使用 Shift Register 进行内存管理 Shift Register(移位寄存器) 是 LabVIE…