飞腾CPU FT-2000/4 uboot下PHY调试记录

简介: 飞腾CPU FT-2000/4 uboot下PHY调试记录

科技背景_副本 公众号_副本.png
一、环境说明

板子是FT-2000/4的开发板

固件版本:

ft-2004c_u-boot-v2-Ver0.3_202112231001.tar.gz

ft2004c_v2.06_image_fix.rar


二、调试命令说明

调试PHY主要用到的命令是mii,先查看下可用的命令:

mii device,缩写mii dev,查看网络控制器mac

mii device,缩写mii dev,用来切换mac控制器

mii info,用来扫描当前网络控制器mac下的phy有哪些

mii read/write是用来读写寄存器的

mii dump,用来显示寄存器状态值,其中addr是通过mii info扫描,确定其PHY地址后,填入的。

三、MII命令使用

3.1 mii dev查看网络控制器

首先通过命令看看配置了几个网络控制器mac。因为FT-2000/4内有两个网络控制器,理论上应该能看到2个mac。


FT2004C#mii dev

MII devices: 'ethernet0@2820c000' 'ethernet1@28210000'

Current device: 'ethernet0@2820c000'

能看出来是两个mac控制器都在ethernet0@2820c000ethernet1@28210000,这个东西是哪里设置的呢?是uboot的设备树里配置的,如果改过设备树,比如注释了ethernet1,那这里就只能看到一个ethernet0了。

设备树位置:


3.2 mii info扫描PHY

飞腾板子上用了两个AR8035的PHY芯片


查看当前mac下的phy有没有:

FT2004C#mii dev

MII devices: 'ethernet0@2820c000' 'ethernet1@28210000'

Current device: 'ethernet0@2820c000'

可以看到当前使用的是第1个mac控制器

Mii info扫描:

FT2004C#mii info

PHY 0x04: OUI = 0x1374, Model = 0x07, Rev = 0x02,  10baseT, HDX

能够在这个mac下扫到一个地址为0x04的PHY,这个地址是通过PHY的管脚来配出来的。在mii info下能扫到这么一个PHY,说明mac的MDIO是通的。要是这里硬件上设计了一个PHY,但是这里没有扫到,那么就要去查硬件了,要是PHY都没扫到,后面测网络也白测



切换mac后再看看其下面有没有phy。

FT2004C#mii dev 'ethernet1@28210000'

上面命令是切换到第2个网络控制器。

FT2004C#mii dev

MII devices: 'ethernet0@2820c000' 'ethernet1@28210000'

Current device: 'ethernet1@28210000'

可以看到,已经切换到了第2个mac控制器


FT2004C#mii info

PHY 0x04: OUI = 0x1374, Model = 0x07, Rev = 0x02,  10baseT, HDX

同样,在这个mac下也看到了一个地址为0x04的PHY。


因为飞腾的RGMII控制器是每个单独的MDIO接口,所以可以将板上的两个PHY地址设成一样的。

有些芯片是多个MAC共用一个mdio,这种情况的话就需要将PHY的地址设成不同的了,可以简单的把MDIO接口理解为IIC。


3.3 mii dump转储寄存器信息

现在把网线插到板子双网络的上面的网口,从电路上是对应第一个mac下的phy网口。

查看'ethernet0@2820c000'下PHY的link状态。

使用mii dump命令可以查看phy0~56个寄存器(使用mii read命令不存在这个说法,所有寄存器都能看 )。因为我们的PHY地址是0x04,所以mii dump里的addr我们填0x04,reg部分我们从0填到5就能看全所有的寄存器了。现在是插着网线的,所以可以看到“(0004:0004) 1. 2    =     1    link status”表示link成功了,拔掉网线这里就=0了((0004:0000) 1. 2    =     0    link status)。这也同时印证了PHY的MDIO是通的。还是那句话,这里的PHY link状态都读不到,那就去查硬件看看吧。MDIO都没通,不用着急去ping包。


FT2004C#mii dev 'ethernet0@2820c000'

FT2004C#mii dump 0x04 0

0.     (1000)                 -- PHY control register --

 (8000:0000) 0.15    =     0    reset

 (4000:0000) 0.14    =     0    loopback

 (2040:0000) 0. 6,13 =   b00    speed selection = 10 Mbps

 (1000:1000) 0.12    =     1    A/N enable

 (0800:0000) 0.11    =     0    power-down

 (0400:0000) 0.10    =     0    isolate

 (0200:0000) 0. 9    =     0    restart A/N

 (0100:0000) 0. 8    =     0    duplex = half

 (0080:0000) 0. 7    =     0    collision test enable

 (003f:0000) 0. 5- 0 =     0    (reserved)



FT2004C#mii dump 0x04 1

1.     (796d)                 -- PHY status register --

 (8000:0000) 1.15    =     0    100BASE-T4 able

 (4000:4000) 1.14    =     1    100BASE-X  full duplex able

 (2000:2000) 1.13    =     1    100BASE-X  half duplex able

 (1000:1000) 1.12    =     1    10 Mbps    full duplex able

 (0800:0800) 1.11    =     1    10 Mbps    half duplex able

 (0400:0000) 1.10    =     0    100BASE-T2 full duplex able

 (0200:0000) 1. 9    =     0    100BASE-T2 half duplex able

 (0100:0100) 1. 8    =     1    extended status

 (0080:0000) 1. 7    =     0    (reserved)

 (0040:0040) 1. 6    =     1    MF preamble suppression

 (0020:0020) 1. 5    =     1    A/N complete

 (0010:0000) 1. 4    =     0    remote fault

 (0008:0008) 1. 3    =     1    A/N able

 (0004:0004) 1. 2    =     1    link status

 (0002:0000) 1. 1    =     0    jabber detect

 (0001:0001) 1. 0    =     1    extended capabilities



FT2004C#mii dump 0x04 2

2.     (004d)                 -- PHY ID 1 register --

 (ffff:004d) 2.15- 0 =    77    OUI portion



FT2004C#mii dump 0x04 3

3.     (d072)                 -- PHY ID 2 register --

 (fc00:d000) 3.15-10 =    52    OUI portion

 (03f0:0070) 3. 9- 4 =     7    manufacturer part number

 (000f:0002) 3. 3- 0 =     2    manufacturer rev. number



FT2004C#mii dump 0x04 4

4.     (11e1)                 -- Autonegotiation advertisement register --

 (8000:0000) 4.15    =     0    next page able

 (4000:0000) 4.14    =     0    (reserved)

 (2000:0000) 4.13    =     0    remote fault

 (1000:1000) 4.12    =     1    (reserved)

 (0800:0000) 4.11    =     0    asymmetric pause

 (0400:0000) 4.10    =     0    pause enable

 (0200:0000) 4. 9    =     0    100BASE-T4 able

 (0100:0100) 4. 8    =     1    100BASE-TX full duplex able

 (0080:0080) 4. 7    =     1    100BASE-TX able

 (0040:0040) 4. 6    =     1    10BASE-T   full duplex able

 (0020:0020) 4. 5    =     1    10BASE-T   able

 (001f:0001) 4. 4- 0 =     1    selector = IEEE 802.3



FT2004C#mii dump 0x04 5

5.     (cde1)                 -- Autonegotiation partner abilities register --

 (8000:8000) 5.15    =     1    next page able

 (4000:4000) 5.14    =     1    acknowledge

 (2000:0000) 5.13    =     0    remote fault

 (1000:0000) 5.12    =     0    (reserved)

 (0800:0800) 5.11    =     1    asymmetric pause able

 (0400:0400) 5.10    =     1    pause able

 (0200:0000) 5. 9    =     0    100BASE-T4 able

 (0100:0100) 5. 8    =     1    100BASE-X full duplex able

 (0080:0080) 5. 7    =     1    100BASE-TX able

 (0040:0040) 5. 6    =     1    10BASE-T full duplex able

 (0020:0020) 5. 5    =     1    10BASE-T able

 (001f:0001) 5. 4- 0 =     1    selector = IEEE 802.3


要是想看详细的寄存器位描述,就查手册就好了


3.4 mii read write读写寄存器

我们来尝试read、write一下。

mii read                

mii write  

这里的可以填手册里有的地址,AR8035有0x00~0x1F这么些寄存器。我们先使用read,看看读上来的是啥。


FT2004C#mii read 0x04 0

1000


这里是把整个寄存器的16位都读上来了,也就说我们要控制寄存器的某一位,需要自己在进制里配置好,转换完再配进去。

我们先看,这里读上来的0x1000。这里需要注意的是,uboot显示speed selection是bit6+bit13。所以要是看dump显示和read的对应关系,这里要注意一下。要是你直接从手册寄存器表里去查,那就没这个注意事项了。


当然你也可以去读其他的寄存器值,读到后对应手册去查寄存器含义就好了。


我们write下试试,就操作speed selection寄存器吧,这个代表速度选择用控制寄存器。修改speed为2'b10 = 1000Mbps。寄存器0的值为0x1040。配置完再读一下看,是配置进去了。

MDIO这边就这样了。MDIO能操作是调网络的基础。


3.5 网络测试ping

剩下就是ping测试了。

print一下环境变量,简单的话就是默认环境变量不动,改PC机那边的,改成和环境变量中serverip一样的。

改完后从uboot这边去ping PC机就好了。


或者改uboot那边的ipaddr、gatewayip、serverip,改成你想要的。之后通过PC去ping板子。


相关文章
|
网络协议 Ubuntu Linux
飞腾CPU如何使用PXE方式安装麒麟桌面系统?
飞腾CPU如何使用PXE方式安装麒麟桌面系统?
2219 0
飞腾CPU如何使用PXE方式安装麒麟桌面系统?
|
11月前
|
C++ 索引 Windows
调试实战——程序CPU占用率飙升,你知道如何快速定位吗?
程序CPU占用率飙升,你知道如何快速定位吗?
|
运维 Linux Anolis
6 月直播 7 场干货全剧透!明天:飞腾CPU调优原理及方法 | 第 19 期
今天下午4点,飞腾平台软件调优方法技术直播开讲!
6 月直播 7 场干货全剧透!明天:飞腾CPU调优原理及方法 | 第 19 期
|
Ubuntu 算法 Linux
飞腾CPU BIOS固件生成教程
飞腾CPU BIOS固件生成教程
478 1
|
Arthas 运维 安全
线上项目CPU,内存都跑满了,怎么调试?
Arthas在线上的使用技七及介绍
140 0
|
NoSQL IDE 物联网
RISC-V生态全景解析(八):平头哥玄铁CPU调试系统介绍
编辑语: 芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。
2071 0
RISC-V生态全景解析(八):平头哥玄铁CPU调试系统介绍
|
NoSQL IDE 物联网
平头哥玄铁CPU调试系统介绍
本文将简单介绍CPU的调试系统,并深入描述玄铁CPU的调试系统。
1945 1
平头哥玄铁CPU调试系统介绍
|
NoSQL Linux Ubuntu
linux cpu占有率居高不下 调试
今天调试程序,使用top命令后,发现程序的cpu占有率很高,一直在99,这很可怕,所以来调试。 使用top命令,得如下结果 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1997 root 20 0 358m 71m 3208 S 99.
1489 0
|
应用服务中间件 Windows Java
Windows平台下tomcat+java的web程序持续占cpu问题调试
<div class="markdown_views"> <h2 id="1问题">1、问题</h2> <p>Tomcat服务器跑了一段时间后,发现Tomcat进程占用的CPU资源在80%-100%间,加上其它的进程,整个服务器的CPU处理100%运行状态。</p> <h2 id="2通过process-explorer查看tomcat进程下的线程">2、通过proce
5155 0
|
NoSQL Linux
Linux 多线程调试(内存占用、死循环、CPU占用率高……)
文章出处:http://www.cnblogs.com/cy568searchx/archive/2013/10/28/3391790.html     你的软件在某个时刻停止服务,CPU占用达到100%+,这种问题一个可能的原因是产生了死循环,假设程序某处存在潜在的死循环,并在某种条件下会引发,本文以一个示例来定位出现死循环的位置。
2575 0