PMON 与 U-Boot 下的网络调试

近期工作上的bug比较多,故整理一下。

PMON 下的便捷调试命令

因为PMON 下没有内建 mii 命令,所以有些读 PHY 内部寄存器的操作很不容易实现。

d4 0xc0000000
m2 0xc0000000 0x080c
龙芯2K1000的 MAC 控制器是 DesignWire 设计的,驱动是 stmicro 编写的,查询dw手册得知:

MAC 寄存器基址 + 0x10是 MAC 控制器通过 MDIO 读取 PHY 内部寄存器的 控制寄存器,例如:

PMON> d4 0xc0000010 
ffffffffc0000010             0000080c

MAC 寄存器基址 + 0x14是 MAC 控制器通过 MDIO 读取 PHY 内部指定寄存器的值的 数据寄存器,例如:

PMON> d4 0xc0000014 
ffffffffc0000014             00000141

读 PHY 寄存器流程
设置你要读的 PHY 的地址、总线时钟、寄存器号,另外要使能写入位和总线忙位。

m2 0xc0000010  0x080d

0x080d 的10~6位为寄存器号,共32个 。
11~15位为当前 PHY 的地址、也是32个,最后一位为1

如,此时输入上述数据,会读出:

PMON> d4 0xc0000014 
ffffffffc0000014             00001140

有些高级的 PHY 会有两个特殊的寄存器 EXT_PAGE 和 EXT_STAT,一个是额外页面寄存器,一个是额外页面状态寄存器,这个具体的写入就要看具体的 PHY 了。

UBOOT 下的便捷调试命令

uboot 下可以使用mii read [地址] [寄存器] 进行读取

PHY的通用寄存器定义

REG0 [Control Register]

寄存器0是PHY控制寄存器,通过Control Register可以对PHY的主要工作状态进行设置。重点关注的有以下几位:

Bit15 Reset

该位控制的是PHY复位功能,在该位置写入1实现对PHY的复位操作。复位后该端口PHY的其他控制、状态寄存器将恢复到默认值,每次PHY复位应该在0.5s的时间内完成,复位过程中Bit15保持为1,复位完成之后该位应该自动清零。一般要改变端口的工作模式(如速率、双工、流控或协商信息等)时,在设置完相应位置的寄存器之后,需要通过Reset位复位PHY来使配置生效。

Bit14 Loopback

该位是一个调试以及故障诊断中常用的功能,Bit14置1之后,PHY和外部MDI的连接在逻辑上将被断开,从MAC经过MII/GMII(也可能是其他的MAC/PHY接口)发送过来的数据将不会被发送到MDI上,而是在PHY内部(一般在PCS)回环到本端口的MII/GMII接收通道上,通过Loopback功能可以检查MII/GMII以及PHY接口部分是否工作正常,对于端口不通的情况可用于故障定位。需要注意的是,很多时候PHY设置Loopback后端口可能就Link down了,MAC无法向该端口发帧,这时就需要通过设置端口Force Link up才能使用Loopback功能。

Bit12 Auto-Negotiation Enable

自动协商(AN)开关。设置为1表示打开AN功能,端口的工作模式通过和连接对端进行AN来确定。如果设置为0则AN功能关系,端口的工作模式通过Control Register相应位置的配置决定。必须注意的是,对于1000BASE-T接口,自动协商必须打开。

Bit11 Power Down

电源失能开关,置1,一般用于写完寄存器配置后,和Bit15同时置位进行保存配置操作。

Bit9 Restart Auto-Negotiation

重启自协商,一般用于初始化完成后的自协商网络链接。

REG1 [Status Register]

寄存器1是PHY状态寄存器,主要包含PHY的状态信息,大多数bit的值都是由芯片厂家确定的,不过也有公用的值,需要注意的有以下几位:

Bit5 Auto-Negotiation Complete

AN完成状态指示位。Bit5指示的是端口AN进程是否完成的状态位。在AN Enable的情况下,Bit5=1表示自动协商进程已经成功结束,此时PHY的其他和Link状态相关的寄存器才是正确可靠的。如果AN进程没有完成,则这些状态信息可能是错误的。在调试以及异常故障处理时,可以通过该位寄存器的状态判断AN是否成功,从而进一步的检查AN相关的设置是否正确,或者芯片的AN功能是否正常等。

Bit2 Link Status

Link状态指示位。Bit2=1代表端口Link up,0则代表端口Link down。实际应用中一般都是通过Bit2来判断端口的状态。而且,一般的MAC芯片也是通过轮询PHY的这个寄存器值来判断端口的Link状态的(这个过程可能有不同的名称,比如BCM叫做Link Scan,而Marvell叫做PHY Polling。)如前所述,在AN Enable的情况下,Link Status的信息只有在Auto-Negotiation Complete指示已经完成的情况下才是正确可靠的,否则有可能出错。

REG2 [PHY ID Register]
REG3 [PHY ID Register]

寄存器2、3是PHY ID寄存器,如果你需要对特定类型的 PHY 进行单独配置,可以将这两个寄存器读出来进行校验。

REG4 [Auto-Negotiation Advertisement Register]
REG5 [Auto-Negotiation Link Partner Base Page Ability Register]
REG6 [Auto-Negotiation Expansion Register]
REG7 [Auto-Negotiation NEXT Page Register]
REG8 [Auto-Negotiation Link Partner Received NEXT Page Register]

寄存器4、5、6、7、8是自协商寄存器,这五个寄存器值一般会跟随具体的环境进行改变,需要参考具体的芯片手册。

REG9 [1000 BASE-T Control]

寄存器9保存的是1000BASE-T模式的配置信息,控制PHY的AN信息中与1000BASE-T相关的协商信息,以及PHY在1000BASE-T模式下的工作模式。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值