也就是说,可以通过读取PHY芯片相应寄存器的方法来看默认的工作模式。...经验总结:遇到RGMII接口调试时,最关键的是要查看PHY芯片的型号,查阅PHY芯片手册,通过MDIO读取PHY芯片寄存器的值,看RGMII接口上数据和时钟是否偏移2ns,再决定FPGA对应管脚约束是否进行偏移...用VIO方法读取或配置PHY芯片的寄存器 在没有CPU的情况下,对PHY芯片中寄存器在线读取的最好办法使用VIO通过MDIO接口对PHY芯片中的寄存器进行读取。...具体的测试步骤为:通过VIO配置MDIO管理模块PHY地址、寄存器地址,然后选择读操作读取某一PHY芯片的寄存器的值,结合PHY的工作状态,判断该寄存器是否被正确读取。...由于执行读操作时是采用先写入地址,在读取数据的方式,因此只测试读操作就可以完整的测试MDIO管理模块的功能。以下是VIO对应的调用代码。
MDIO是类似IIC的总线,MAC提供时钟MDC,数据线MDIO是双向的,既可以读PHY的寄存器,也可以写PHY的寄存器。 !...PHY的驱动代码是drivers\net\phy目录下的phy.c,以及厂家相关代码,比如dp83867.c。 2.4. 设备树 UBoot/Linux的驱动代码需要设备树提供一些参数。...检查MDIO 让软件发起PHY寄存器的读写操作,检查MDC/MDIO是否有跳变及其信号质量。 3.2. 检查PHY 让软件读PHY的ID等寄存器,对照手册,看寄存器值是否正确。...让软件读PHY寄存器的自协商结果寄存器,检查单板侧PHY自协商的结果。 3.4. RGMII时钟 对RGMII而言,TX_Clk是MAC发出的,RX_Clk是PHY发出的。...Linux测试 在MAC自环和PHY自环测试成功后,可以在Linux测试以太网,比如可以检查Linux启动后,能否通过DHCP得到IP地址,能否成功ping其它主机。
Linux系统的arm芯片想要网络,可以直接通过mac和网卡芯片连接获取,这时候就需要通过RGMII接口或者MII接口 和 MDIO 连接网卡芯片。...OP Code:2bits的操作码,10表示读,01表示写。PHYAD:5bits的PHY地址。REGAD:5bits的寄存器地址,即要读或写的寄存器。...Data:16bits数据,在读命令中,PHY芯片将读到的对应PHYAD的REGAD寄存器的数据写到Data中,在写命令中,MAC将要写入对应PHYAD的REGAD寄存器的值写入Data中。...也就是说不管你用的哪个厂家的 PHY 芯片,其中 0~15 这 16 个寄存器是一模一样的。仅靠这 16 个寄存器是完全可以驱动起 PHY 芯片的,至少能保证基本的网络数据通信。...以上内容是海翎光电的小编看了大量的参考文献和一步步的实践总结的经验,通过实践,把每一层都走一遍,把变压器去掉,把phy去掉,linux系统的网卡函数看了一遍,phy芯片的手册有看了很多。
另外,可通过 MDIO 接口对 PHY 芯片进行配置(如PHY芯片寄存器读写),而 PHY 和 MAC 通过 MII/RMII 进行数据传输。...= "fec_enet_mii_bus"; // 总线名字 -> fep->mii_bus->read = fec_enet_mdio_read; // 总线的读函数...; //执行匹配的fixups -> device_add(&phydev->dev); // 注册到linux...() `-| { | val = phy_read(phydev, MII_BMSR); // 读取 mdio 0x01 寄存器来确定 phy 的 10/100M 能力 |...网卡 fec 和 Phy 的协作 在 linux 内核中,以太网 mac 会被注册成 struct net_device,phy 芯片会被注册成 struct phy_device。
文章目录 一、读寄存器 二、写寄存器 一、读寄存器 ---- 调用 ptrace(PTRACE_GETREGS, m_nPid, NULL, regs) 读取进程运行时的寄存器 ; 读取寄存器时 , 进程必须处于...WUNTRACED 状态 , 否则就会出错 ; 参数一设置为 PTRACE_GETREGS , 代表本次操作是读取寄存器值 ; 完整代码 : int CPtrace::getRegister(REGS...PTRACE_GETREGS failed pid %d", m_nPid); return PTERR_GETREG_FAILED; } return PTERR_SUCCESS; } 二、写寄存器...---- 调用 ptrace(PTRACE_SETREGS, m_nPid, NULL, regs) 向进程运行时的寄存器写入值 ; 写寄存器时 , 进程必须处于 WUNTRACED 状态 , 否则就会出错...; 参数一设置为 PTRACE_SETREGS, 代表本次操作是向寄存器写入值 ; int CPtrace::setRegister(const REGS* regs) { if (ptrace(PTRACE_SETREGS
但一般来说,PHY的功能是单独做到一个PHY芯片内部的,集成了PHY的网络设备芯片(CPU、交换机芯片等等)一般也有接口连接单独的PHY。...图片 SMI(MDC/MDIO)接口 有很多PHY芯片有许多的接口和功能,需要根据自己的需求进行选择配置,配置的方法就是配置PHY内部的寄存器,而SMI接口就是PHY专门用于管理这些寄存器的一个标准协议...现在一些简单的PHY内部的寄存器使用的是802.3的第22条款,只有32个寄存器,功能简单,比如一些千兆百兆PHY。...而一些复杂的PHY使用的是802.3的第45条款,可以将寄存器扩展至65536个寄存器。 ...注:虽然对于PHY芯片的寄存器有相关标准的规定,但厂家有可能不按照标准设计,所以最好是查看对应的芯片手册了解寄存器的功能。
,就强制执行自动协商(读取phy寄存器、并设置通讯速率、半双工或全双工模式、等) PHY_CHANGELINK, //9 当连接时,会换到PHY_RUNNING,当断网时,会切到PHY_NOLINK...phy_read(phydev, MII_BMSR); //读取phy的状态寄存器 if ((status & BMSR_LSTATUS) == 0) //phy 的链路状态 phydev->link...*/ int ctl = phy_read(phydev, MII_BMCR); //获取模式控制寄存器,详见该链接对该寄存器的定义:https://wenku.baidu.com/view/b8704335ee06eff9aef807bd.html...标准寄存器的定义 /* Generic MII registers. */ //控制寄存器 #define MII_BMCR 0x00 /* Basic mode control register...的寄存器定义详见:https://wenku.baidu.com/view/b8704335ee06eff9aef807bd.html 第5页 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人
在 Windows 及 Linux 里面可以用 arp -a 的命令查看 ARP 表。...寄存器中各位的详细说明如下: 100BASE-T4 ability: 当读为逻辑1时,位1.15指示PHY有能力使用100BASE-T4信令规范执行链路发送和接收。...当读为逻辑0时,位1.15表示PHY缺乏使用100BASE-T4信令规范执行链路发送和接收的能力。...当读为逻辑0时,位1.5指示自动协商过程尚未完成,并且扩展寄存器的内容由自动协商协议的当前状态定义,或者为手动配置写入。 如果自动协商通过清除位0.12禁用,则PHY应在位1.5返回零值。...Auto-Negotiation ability: 当读为逻辑1时,位1.3指示PHY有能力执行自动协商。 当读为逻辑0时,位1.3指示PHY缺乏执行自动协商的能力。
1 01 Read:10Write:01 5bit 5bit Read:z0Write:10 16 bit z MDIO的寄存器读时序波形如下图所示。...图8‑34 MDIO的寄存器读时序波形 MDIO的寄存器写时序波形如下图所示。 ?...,高电平有效 mdio_read_en input MDIO接口读寄存器使能信号,高电平有效 phy_address[4:0] input PHY芯片地址 register_address[4:0] input...需要读或写的寄存器地址 mdio_write_done output 写寄存器完成指示信号 mdio_read_done output 读寄存器完成指示信号 write_register_data[15...PHY芯片的寄存器的写入和读取。
管理帧格式:读操作时序写操作时序报头: 每个读写均可通过报头字段启动,报头字段对应于MDIO线上32个连续的逻辑“1”位以及MDC的32个周期,该字段用于与PHY设备建立同步起始: 起始由模式定义操作...3.3 PHY基础知识简介PHY是IEEE 802.3规定的一个标准模块,SOC可以通过MDIO对PHY进行配置或者读取phy相关状态,PHY内部寄存器必须满足PHY芯片的寄存器地址空间是5位,一般由外部硬件连接决定...地址空间031共32个寄存器,IEEE定义了015这16个寄存器的功能,16-31这16个寄存器由厂商自行实现。也就是说不管哪个厂商的PHY芯片,其中0~15这16个寄存器是一模一样的。...因此 Linux 内核有通用 PHY 驱动,按道理来讲,不管你使用的是哪个厂家的 PHY 芯片,都可以使用 Linux 的这个通用 PHY 驱动来验证网络工作是否正常。...随着现在PHY芯片性能越来越强大,32个寄存器已经无法满足厂商的需求,因此很多厂商采用了分页机制来开展寄存器地址空间,以求定义更多的寄存器。
本身MDIO接口的时序也不是很难,非常类似I2C接口,内部寄存器的读写控制都是通过MDIO接口来实现。在MDIO的协议中,有一个PHY ADDR,这个是由PHY芯片的硬件决定的。...image-20211101195933529 Xilinx的IP也提供了mdio接口,我们可以直接通过配置IP内部寄存器来实现MDIO接口的配置。...image-20211101201757328 读其他寄存器时,有的可读可写,有的读出来都是0,但跟手册中就是不一样。...一直没有怀疑过PHY ADDR的问题,因为有些寄存器是可读可写的,就以为应该是通了的。 只能重新看手册,把IP中需要填参数的地方看了一下,当看到PHY ADDR时,发现是这么写的。...再去读PHY芯片的寄存器,就跟手册中是一样的了。
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。...读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。 MSR指令: 对状态寄存器CPSR和SPSR进行写操作。...与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。...CPSR控制位、 4.使用MRS和MSR来设置2440位管理模式,实例: mrs r0,cpsr 读状态寄存器cpsr的数据到r0中 bic r0,r0...当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。
和10M/100M/1000M PHY的寄存器结构有较大的不同。...IEEE Clause 22 原理介绍 MDC/MDIO时序图介绍: 读时序图: 写时序图: MDC/MDIO编码结构: PHY寄存器结构: IEEE Clause 22 PHY寄存器为两级寻址结构,...若PHY的一个Port中需要操作的寄存器的数量远大于32个,这时可以用Shadow进行扩展就会显得捉襟见肘,必须引入全新的寄存器结构。 3....IEEE Clause 45 原理介绍 MDC/MDIO时序图: 读时序图: 写时序图: MDC/MDIO编码结构: PHY寄存器结构图: PHY寄存器结构描述: IEEE Clause 45 PHY寄存器为三级寻址结构...Frame的“ReadInc型”可以对Reg地址连续的寄存器执行批量的读,可以大幅度提高效率。
1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。...读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。 MSR指令: 对状态寄存器CPSR和SPSR进行写操作。...与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。...CPSR控制位、 4.使用MRS和MSR来设置2440位管理模式,实例: mrs r0,cpsr //读状态寄存器cpsr的数据到r0中 bic r0,r0,#0x1f //对...当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。
phy_addr的低八位,将它放入变量regval中,这里应该是取PHY的地址,然后先看下 mii_free队列中有无元素,也即是判断有无可用的MII命令队列,如果有,则把寄存器的值(即是要读写PHY的哪个寄存器...fec_mii_data,这里的值应该是PHY芯片通过MII接口返回上次要求读的寄存器 的值,然后如果有mip->mii_func的话就回调这个函数,接着移动mii_head和mii_free队列,最后再写入下一个要读...(写) 的PHY的寄存器。...,它先将要读的寄存器MII_REG_PHYIR1通过宏mk_mii_read转换成MII寄存器的格式,然后写入fec_mii_data 寄存器,表示我想读取PHY芯片的MII_REG_PHYIR1寄存器的值...,而读寄存器写完后,FEC的MII模块会产生一个中断表示说这 个PHY寄存器的读已经完成,然后中断处理函数fec_enet_mii中,会读取PHY返回的刚才我想要读取的寄存器的值给 fec_mii_data
STM32参考手册中对MAC的讲解主要分为三部分: 1、MAC的接口MII和RMII。 参考手册中对这一部分讲解的比较详细,也比较容易理解,建议初学者务必读一读。我们这里就不将其复制粘贴过来了。...手册中给出了DMA方式的发送和接收的初始化顺序,在下一章节讲解底层驱动的时候结合驱动代码会理解的更好,建议初学者也读一遍。...这些PHY芯片都大同小异,基本寄存器都是一样的,只有扩展寄存和厂商专门设置的寄存器不同。...如果用户将其中一个PHY驱动成功了,驱动另一个也是非常方便的,下面是DP83848和DM9161/9162的基本寄存器和扩展寄存器: /* DP83848C and DM9161 PHY Registers...5.6 总结 本章节就为大家讲解这么多,主要是为下章节的讲解做个铺垫。学习完毕本章节后,务必将STM32参考手册中MAC章节读一遍。
[表格] Notice: 有的PHY有低功耗模式,必须正确设置非低功耗模式才能正常读写phy寄存器配置。 低功耗模式现象: 1,复位后再解除复位LED一直不亮。...正常的模式下复位后解除复位LED会一直亮。 2,用示波器抓取mdc和mdio波形,读PHY寄存器没有数据响应。
1000BASE-X自协商实践 芯片寄存器 笔者以曾经实践过的Broadcom公司的BCM53286的四个1000BASE-X Serdes口举例[与自协商相关的寄存器属于IEEE802.3标准寄存器,...故不同厂家不同型号的PHY该部分实现大同小异],与1000BASE-X自协商相关的7个寄存器内容分别如下。...)(利用此功能可以让远端设备提前做一些保护动作); 2b01 指示本端设备检测到link failure [同步丢失或者C码交互超时(默认超时时间为10ms)会触发link failure](软件通过读状态位...LINK_DOWN_SYNC_LOSS进行判决); 2b11 指示本端设备检测到自协商错误(软件通过读状态位AUTONEG_RES_ERR进行判决); 2b00 指示本端设备一切正常; bit8:7 PS2...软件通过本端和远端的bit8:7的各种组合进行对本端MAC的tx和rx方向的802.3流控进行设置,具体规则如下表: “MAC-PCS控制寄存器”需要软件根据“PHY-AN广告寄存器”和“PHY-AN
在一个结构体中定义各连续的寄存器(每个寄存器占四个字节),然后将offset 首地址ioremap,得到的地址传给结构体指针。然后操作寄存器的时候,就操作结构体成员就ok了。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
领取专属 10元无门槛券
手把手带您无忧上云