如何使用gpio模拟mdio通信?

原创 一口Linux 2024-11-11 11:51

点击左上方蓝色“一口Linux”,选择“设为星标

第一时间看干货文章 

【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式知识点-思维导图-免费获取
【就业】一个可以写到简历的基于Linux物联网综合项目
【就业】找工作简历模版



 

一、前言

实际项目开发中,由于设计原因,会将phy的mdio引脚连接到SoC的2个空闲gpio上,

这样就无法通过Gmac自有的架构实现修改phy,

因此只能通过GPIO模拟的方式实现MDIO,

好在Linux支持MDIO via GPIO功能。

该功能需要用到内核驱动mdio-bitbang.c和mdio-gpio.c。

本例 :

  • 平台:
复旦微
  • kernel 版本:
linux 4.14.55-xxxxx
  • phy芯片
yt8521
  • phy连接到
gmac0
  • mdio总线连接到:
gpioc 2
portc 3

二、mdio基础概念

1、SMI接口

SMI是MAC内核访问PHY寄存器接口,它由两根线组成,双工:

  • MDC(Management Data Clock)为时钟,

  • MDIO(Management Data Input/Output)为双向数据通信,

原理上跟I2C总线很类似,也可以通过总线访问多个不同的phy。

MDIO协议是以太网标准IEEE802.3中专门用于MAC和PYH之间管理的串行接口总线,该接口主要用于MAC控制器对PYH层的状态读取和设置(寄存器操作)、获取链路状态,控制物理层协商等操作。

MDC/MDIO基本特性:

  • 两线制    :MDC(时钟线)和MDIO(数据线)。分主从设备。
  • 时钟频率:2.5MHz
  • 通信方式:总线制,可同时接入的PHY数量为32个
  • 通过SMI接口,MAC芯片主动的轮询PHY层芯片,获得状态信息,并发出命令信息。

其中主设备称作STA,从设备称作MDI,一个主设备可以对多个从设备进行命令读写操作。

三、mdio协议波形

1、MDIO接口数据帧

在IEEE802.3协议中,把MDIO接口数据帧分为两种,一种是Clause22,另一种是Clause45

前者主要用于百兆千兆以太网,后者用于千兆以上的以太网。

2、Clause22

MDIO 接口的读写通信协议如下图所示:

CLAUSE22 数据帧协议


  • Preamble:

    32 位前导码,由 MAC 端发送 32 位逻辑“1”,用于同步 PHY 芯片。

  • ST(Start of Frame):

    2 位帧开始信号,用 01 表示。

  • OP(Operation Code):

    2 位操作码,读:10 写:01。

  • PHYAD(PHY Address):

    5 位 PHY 地址,用于表示与哪个 PHY 芯片通信,因此一个 MAC 上可以连 接多个 PHY 芯片。

  • REGAD(Register Address):

    5 位寄存器地址,可以表示共 32 位寄存器。

  • TA(Turnaround):

    2 位转向,

    在读命令中,MDIO 在此时由 MAC 驱动改为 PHY 驱动,在第一个 TA 位,MDIO 引脚为高阻状态,第二个 TA 位,PHY 将 MDIO 引脚拉低,准备发送数据;

    在写命令中,不需 要 MDIO 方向发生变化,MAC 固定输出 2’b10,随后开始写入数据。

  • DATA:

    16 位数据,在读命令中,PHY 芯片将读到的对应 PHYAD 的 REGAD 寄存器的数据写到 DATA 中;在写命令中,PHY 芯片将接收到的 DATA 写入 REGAD 寄存器中。需要注意的是,在 DATA 传 输的过程中,高位在前,低位在后。

  • IDLE:

    空闲状态,此时 MDIO 为无源驱动,处于高阻状态,但一般用上拉电阻使其上拉至高电平。

波形举例

向phy:3 寄存器0x00 写入 数据0x4140

3、Clause45

四、YT8521

YT8521S是一款高度集成的以太网收发器,符合10BASE-Te、100BASE-TX和1000BASE-T IEEE 802.3标准。

1、引脚

其中与mdio相关引脚:

14  MDC         Management Data Clock
15  MDIO        Input/Output of Management Data.
      Pull up 3.3V/2.5V/1.8V for 3.3V/2.5V/1.8V I/O respectively

2、模块图

3、MDIO协议时序-[重要]

下面YT8521的SMI时序图:

上升沿读数据,下降沿写数据

五、驱动移植

1、驱动文件及移植

mdio-gpio.c
mdio-bitbang.c
在这里插入图片描述

勾选 下面几项:

  │ │                   <*>   Bitbanged MDIO buses                                            │ │  
  │ │                   <*>   GPIO controlled MDIO bus multiplexers                           │ │  
  │ │                   <*>   MMIO device-controlled MDIO bus multiplexers                    │ │  

2、移植设备树

 aliases {
    …………
     mdio-gpio0 = &mdio0;
 };
 
 mdio0: mdio {
     compatible = "virtual,mdio-gpio";
     gpios = <&portc 2 0 >,<&portc 3 0>;                                               
     #address-cells = <1>;
     #size-cells = <0>;
   
     phy0: ethernet-phy@7 {
         reg = <0x7>;
         yt,phy-delay = <0xfc>;
         phy-connection-type = "rgmii-id";
     };
 };
 &gmac0 {
  status = "okay";
  phy-handle = <&phy0>;
 };

由设备树可知,

  1. 我们创建了1个独立的mdio设备节点,
  2. 当用命令mdio修改phy时,就会根据gmac0的phy-handle,
  3. 找到mdio0节点从而调用mdio-gpio驱动模块来配置phy:8521。

下图,是phy直接连接到gmac0的mdio接口,mdio命令执行的通路:

下图是phy连接到gpio口,mdio命令执行的通路:

3、查看log

开机有以下log,说明驱动 移植成功:

# dmesg | grep MDIO
[    3.257270] libphy: GPIO Bitbanged MDIO: probed
[    3.274202] libphy: Fixed MDIO Bus: probed
# cd /sys/class/mdio_bus/
# ls
fixed-0   gpio-0    stmmac-0  stmmac-1
# cd gpio-0/
# ls
device     gpio-0:03  of_node    power      subsystem  uevent
# cd gpio-0\:03/
# ls
attached_dev    phy_has_fixups  power
driver          phy_id          subsystem
of_node         phy_interface   uevent

4、操作

修改eth0为百兆速率,则设置Speed_Selection位为01,同时自动协商为Autoneg_En要禁用,即设置该寄存器值为0x2140:

# mdio eth0 0x00 0x2140
 write phy addr: 0x3  reg: 0x0  value : 0x2140

抓取波形如下:

end



一口Linux 


关注,回复【1024】海量Linux资料赠送


精彩文章合集

文章推荐

【专辑】ARM
【专辑】粉丝问答
【专辑】所有原创
专辑linux入门
专辑计算机网络
专辑Linux驱动
【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式所有知识点-思维导图


一口Linux 写点代码,写点人生!
评论 (0)
  • 在影像软的发展历程中,美图曾凭借着美图秀秀等一系列产品,在“颜值经济”的赛道上占据了领先地位,成为了人们日常生活中不可或缺的一部分,也曾在资本市场上风光无限,2016 年上市时,市值一度超过46亿美元,备受瞩目。 然而,随着市场的不断发展和竞争的日益激烈,美图逐渐陷入了困境。商业模式单一,过度依赖在线广告收入,使得其在市场波动面前显得脆弱不堪;多元化尝试,涉足手机、电商、短视频、医美等多个领域,但大多以失败告终,不仅未能带来新的增长点,反而消耗了大量的资源。更为严峻的是,用户流失问题日
    用户1742991715177 2025-04-05 22:24 65浏览
  • 引言:POPO声的成因与影响在语音芯片应用中,WT588F08A作为一款支持DAC+功放输出的高集成方案,常因电路设计或信号处理不当,在音频播放结束后出现POPO声(瞬态噪声)。这种噪声不仅影响用户体验,还可能暴露电路设计缺陷。本文将基于实际案例,解析POPO声的成因并提供系统化的解决方案。一、POPO声的根源分析1. 功放电路状态切换的瞬态冲击当DAC输出的音频信号突然停止时,功放芯片的输入端若处于高阻态或无信号状态,其内部放大电路会因电源电压突变产生瞬态电流,通过喇叭表现为POPO声。关键因
    广州唯创电子 2025-04-07 09:01 91浏览
  • 在追求环境质量升级与产业效能突破的当下,温湿度控制正成为横跨多个行业领域的核心命题。作为环境参数中的关键指标,温湿度的精准调控不仅承载着人们对舒适人居环境的期待,更深度关联着工业生产、科研实验及仓储物流等场景的运营效率与安全标准。从应用场景上看,智能家居领域要求温湿度系统实现与人体节律的协同调节,半导体洁净车间要求控制温湿度范围及其波动以保障良品率,而现代化仓储物流体系则依赖温湿度的实时监测预防各种产品的腐损与锈化。温湿度传感器作为实现温湿度监测的关键元器件,其重要性正在各行各业中凸显而出。温湿
    华普微HOPERF 2025-04-07 10:05 77浏览
  • 文/杜杰编辑/cc孙聪颖‍2025年的3月,成功挺过造车至暗时刻的小米创始人雷军,接连迎来人生的高光。(详情见:雷军熬过黑夜,寄望小米SU7成为及时雨)在颜值即正义的舆论导向之下,全国两会期间,雷军凭借得体的衣着、挺拔的身姿赢得赞誉。面对雷军的压人表现,连行事一向沉稳、不愿跟风的海尔,都推出“leadership”组合拳,试图助力自家boss,不落下风。(详情见:两会声音|本届全国两会,周云杰为海尔省了多少广告费?)喜事接连不断,紧接着的3月18日,雷军重磅宣布小米 “史上最强年报”。雷军的公关
    华尔街科技眼 2025-04-03 20:30 42浏览
  • 一、为什么流量可见性如此重要?在网络管理中,及时掌握流量状况至关重要,这不仅有助于快速排查故障、优化性能,还能提升安全防护能力。为了实现这一目标,企业通常依赖 SPAN 端口(交换机端口镜像)或 网络 TAP(测试接入点)来捕获和分析流量。然而,这两种方法在数据完整性、性能影响和监控能力上存在显著差异。如何选择合适的方案,以确保网络监控的精准性和高效性?本文将深入解析 SPAN 端口与网络 TAP 的核心区别,帮助你做出明智决策。二、SPAN 端口:简单易用,但有局限SPAN 端口也称为镜像端口
    艾体宝IT 2025-04-03 16:41 39浏览
  • 及时生产 JIT(Just In Time)的起源JIT 起源于 20 世纪 70 年代爆发的全球石油危机和由此引发的自然资源短缺,这对仰赖进口原物料发展经济的日本冲击最大。当时日本的生产企业为了增强竞争力、提高产品利润,在原物料成本难以降低的情况下,只能从生产和流通过程中寻找利润源,降低库存、库存和运输等方面的生产性费用。根据这种思想,日本丰田汽车公司创立的一种具有特色的现代化生产方式,即 JIT,并由此取得了意想不到的成果。由于它不断地用于汽车生产,随后被越来越多的许多行业和企业所采用,为日
    优思学院 2025-04-07 11:56 88浏览
  • 伴随无线技术的迅速发展,无线路由器市场商机日益庞大。现代消费者在选购无线路由器(Wi-Fi AP)时,通常依赖的是该产品在无干扰的实验室环境中,量测得到的数据报告。然而,这些数据往往是在受控的RF隔离环境中进行测试,无法完全反映真实使用场景。这种情况导致许多消费者抱怨,他们购买的产品效能与宣称的数据不符。在实际应用中,消费者常因Wi-Fi讯号不稳定、传输速度不如预期或设备过热而产生客诉。产品仰赖实验室的数据够吗?无线路由器(Wi-Fi AP)ODM供货商遇到什么挑战?一家台湾知名的无线路由器(W
    百佳泰测试实验室 2025-04-05 00:12 55浏览
  • 医疗影像设备(如CT、MRI、超声诊断仪等)对PCB的精度、可靠性和信号完整性要求极高。这类设备需要处理微伏级信号、高频数据传输,同时需通过严格的EMC/EMI测试。制造此类PCB需从材料选择、层叠设计、工艺控制等多维度优化。以下是关键技术与经验分享。 1. 材料选择:高频与生物兼容性优先医疗影像设备PCB常采用 Rogers RO4000系列 或 Isola FR4高速材料,以降低介电损耗并保证信号稳定性。例如,捷多邦在客户案例中曾为某超声探头厂商推荐 Rogers RO4350B
    捷多邦 2025-04-07 10:22 76浏览
  • 【拆解】+南孚测电器拆解 之前在天猫上买了一盒南孚电池,他给我送了一个小东西—测电器。今天我们就来拆解一下这个小东西,看看它是怎么设计和工作的。 三颗指示灯显示电池剩余电量。当点亮3颗LED时,则表示点亮充足。当点亮2颗LED时,则表示还能用。当点亮1颗LED时,表示点亮地建议更换,当无法点亮LED时,则表示没电了。外壳上还印有正负极,以免用户将电池放反。 这个小东西拆解也很方便,一个螺丝刀稍微撬几下。外壳就下来了,它是通过卡扣连接。 开盖后,测电线路板清晰呈现在眼前。 让我们看看小小的线路板有
    zhusx123 2025-04-05 15:41 53浏览
  • 引言:小型化趋势下的语音芯片需求随着消费电子、物联网及便携式设备的快速发展,产品设计对芯片的小型化、高集成度和低功耗提出了更高要求。厂家凭借其创新的QFN封装技术,推出WTV系列(如WTV380)及WT2003H系列语音芯片,以超小体积、高性能和成本优势,为紧凑型设备提供理想解决方案。产品核心亮点1. QFN封装技术赋能超小体积极致尺寸:WTV380采用QFN32封装,尺寸仅4×4毫米,WT2003H系列同样基于QFN工艺,可满足智能穿戴、微型传感器等对空间严苛的场景需求。高密度集成:QFN封装
    广州唯创电子 2025-04-07 08:47 68浏览
  • 【拆解】+沈月同款CCD相机SONY DSC-P8拆解 这个清明假期,闲来无事,给大伙带来一个老古董物品的拆解--索尼SONY DSC-P8 CCD相机。这个产品是老婆好几年前在海鲜市场淘来的,由于显示屏老化,无法正常显示界面了,只有显示背光。但是这也无法阻止爱人的拍照。一顿盲操作依旧可以拍出CCD古董相机的质感。如下实拍: 由于这个相机目前都在吃灰。我就拿过来拆解,看看里面都是怎样个设计,满足下电子爱好者的探索。 首先给大伙展示下这台老相机的全貌。正视图  后视图 
    zhusx123 2025-04-06 17:38 86浏览
  • 在科技浪潮奔涌的当下,云计算领域的竞争可谓是如火如荼。百度智能云作为其中的重要参与者,近年来成绩斐然。2024年,百度智能云在第四季度营收同比增长26%,这样的增速在行业内十分惹眼。回顾全年,智能云业务的强劲增长势头也十分明显,2024年第一季度,其收入达到47亿元,同比增长12%;第二季度营收51亿元,同比增长14%。从数据来看,百度智能云在营收方面一路高歌猛进,展现出强大的发展潜力。然而,市场对百度智能云的表现似乎并不完全买账。2024年,尽管百度智能云数据亮眼,但百度股价却在震荡中下行。在
    用户1742991715177 2025-04-06 20:25 63浏览
  •   安全生产预警系统作为现代工业与安全管理的重要组成部分,正以前所未有的技术引领力,创新性地塑造着未来的安全管理模式。这一系统通过集成多种先进技术,如物联网、大数据、人工智能、云计算等,实现了对生产环境中潜在危险因素的实时监测、智能分析与及时预警,为企业的安全生产提供了坚实的技术保障。   技术引领:   物联网技术:物联网技术使得各类安全监测设备能够互联互通,形成一张覆盖全生产区域的安全感知网络。传感器、摄像头等终端设备实时采集温度、压力、气体浓度、人员位置等关键数据,为预警系统提供丰富的
    北京华盛恒辉软件开发 2025-04-05 22:18 76浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦