UBOOT-在uboot中确定网络连接问题

本文详细介绍了在U-Boot环境下如何利用MDIO命令读取和写入PHY寄存器,以检查网络状态和配置。通过具体实例展示了mdiolist、mdioread和mdiowrite命令的用法,帮助理解网络芯片的基本控制和状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文的方法就是通过在uboot中读取phy寄存器的状态来判断网络,所以当前状况下必须保证MDIO总线没有问题,否则无法读取PHY寄存器

zynq-uboot> mdio
mdio - MDIO utility commands
Usage:
mdio list           - List MDIO buses
mdio read <phydev> [<devad>.]<reg> - read PHY's register at <devad>.<reg>
mdio write <phydev> [<devad>.]<reg> <data> - write PHY's register at <devad>.<reg>
<phydev> may be:
   <busname>  <addr>
   <addr>
   <eth name>
<addr> <devad>, and <reg> may be ranges, e.g. 1-5.4-0x1f.

以上是uboot中的mdio的帮助说明。

zynq-uboot> mdio list
Gem.e000b000:
3 - Generic PHY <--> Gem.e000b000

根据mdio可以看到当前uboot中只有一个phy_dev为3的phy芯片

下一步便是读取寄存器

zynq-uboot> mdio read 3 0   
3 is not a known ethernet
Reading from bus Gem.e000b000
PHY at address 3:
0 - 0x1140
zynq-uboot> mdio read 3 0-15
3 is not a known ethernet
Reading from bus Gem.e000b000
PHY at address 3:
0 - 0x1140
1 - 0x796d
2 - 0x22
3 - 0x1622
4 - 0x1e1
5 - 0xcde1
6 - 0xd
7 - 0x2001
8 - 0x4ae2
9 - 0x300
10 - 0x7800
11 - 0x0
12 - 0x0
13 - 0x0
14 - 0x0
15 - 0x3000

可以读取一个寄存器,也可以读取一个范围内的寄存器,我们关注的一般为0寄存器(基本控制寄存器Basic Control)和1寄存器(Basic  status),来确定我们是否已经link up和当前的链接速率。这两个寄存器为标准IEEE 802.3 Specification中明确规定的

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值