飞腾CPU FT-2000/4 uboot下PHY调试记录
飞腾爱好者技术交流群码
公众号“乌拉大喵喵”
一、环境说明
板子是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@2820c000、ethernet1@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命令可以查看phy的0~5的6个寄存器(使用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板子。
欢迎飞腾爱好者加入微信交流群。
群内大家可以畅所欲言。
在群内不需要表露自己的公司和身份,可以群内交流遇到的问题,分享自己的调试心得。
希望大家共建飞腾友谊!
飞腾爱好者技术交流群码
公众号“乌拉大喵喵”
飞腾CPU FT-2000/4 uboot下PHY调试记录的更多相关文章
- 《Troubleshooting SQL Server》读书笔记-CPU使用率过高(下)
<Troubleshooting SQL Server>读书笔记-CPU使用率过高(下) 第三章 High CPU Utilization. CPU使用率过高的常见原因 查询优化器会尽量从 ...
- 嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结
首先调试检查硬件,再调试软件 首先仔细阅读phy和主芯片datesheet ,尤其着重阅读mii寄存器,它是mac和phy交换信息的媒介. 硬件注意:关于phy的芯片需要注意的有几点:1.mdio接口 ...
- 关于uboot下data abort的问题
在uboot下,常常会出现一些很让人揪心的问题. 解决这些问题的关键就是方法与方向.把握好这两点,一切问题都能够迎刃而解.同一时候也要自信.例如以下: 有时我们会遇到例如以下的出错信息,这时CPU会r ...
- Linux和Uboot下eMMC boot分区读写
关键词:eMMC boot.PARTITION_CONFIG.force_ro等. 1. eMMC的分区 大部分eMMC都有类似如下的分区,其中BOOT.RPMB和UDA一般是默认存在的,gpp分区需 ...
- tensorflow安装过程cpu版-(windows10环境下)---亲试可行方案
tensorflow安装过程cpu版-(windows10环境下)---亲试可行方案 一, 前言:本次安装tensorflow是基于Python的,安装Python的过程不做说明 二, 安装环境: ...
- [命令]在uboot下查看文件系统的目录结构
在uboot下敲help可以查看该版本的uboot支持哪些命令 ls mmc 1:1 ls mmc 1:2 可以查看mmc设备上对应的文件目录,支持多种文件系统格式,如fat32/ext
- uboot下emmc内容烧写(拷贝)步骤
一.目的:嵌入式开发板,通过emmc上的内核文件加载启动linux操作系统,以及存放其他程序文件.需要将所需文件先写入emmc中. 二.总体步骤是:uboot启动后,进入linux下,将emmc分区并 ...
- uboot下的网络终端/控制台
许多linux设备可能没有外置串口,这是就需要一个网络终端来在uboot下操作设备,如升级镜像等. uboot下的网络终端为netconsole,代码drivers/net/netconsole.c. ...
- uboot 下更改NAND的分区 fdisk
uboot 下更改NAND的分区 fdisk 分类: S5PXX(三星)2012-07-01 18:59 8946人阅读 评论(7) 收藏 举报 flash平台cacheandroid三星null 关 ...
- uboot下tftp传输文件
uboot下通过tftp工具传输文件,tftp与ftp是完全不同的工具或协议. 1) 下载并安装程序 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是 ...
随机推荐
- IT工具知识-08:如何使用Openwrt下的SMB服务(第一次使用时)?
0.背景知识 使用固件:Lean的R20.5.9由flippy打包 需要软件:ssh客户端(我用的xshell),浏览器(最好是chrome内核) 1.使用教程 1.1 注释掉SAMBA模板中的某条指 ...
- 使用 Transformers 在你自己的数据集上训练文本分类模型
最近实在是有点忙,没啥时间写博客了.趁着周末水一文,把最近用 huggingface transformers 训练文本分类模型时遇到的一个小问题说下. 背景 之前只闻 transformers 超厉 ...
- Matlab %伍
第五章:初级绘图进阶 Special Plots loglog semilogx semilogy plotyy hist bar pie polar Logarithm Plots x = lo ...
- 4.3Dsmax捕捉工具
平面视图: Line 线 多用于平面视图(按住shift可创建水平或垂直的线) Cirde 圆 Arc 弧形 NGon 多边形 Text 文本 输入中文会出现方框,换一下字体即可 Egg 鹅卵形 re ...
- Svn安装客户端鼠标右键报错SendRpt.exe not found
kill 掉 重启资源管理器就好了
- ubuntu 16.04 安装VNC远程桌面 安装wine+hfs
1.安装$sudo apt-get install xfce4 $sudo apt-get install vnc4server$sudo apt-get install xrdp 2.启动VNC s ...
- loadrunner添加/清除 cookies
web_add_cookie("reloadCount=1;domain={Host}"); 清除 cookies web_cleanup_cookies():
- Python第一次作业(20220909)
实例01:根据身高.体重计算BMI指数 ①:分别定义两个变量"height"和"weight",用于储存身高(单位:米)和体重(单位:千克).使用内置的prin ...
- ls和mkdir
ls 查看当前目录的内容 1) ls -l 显示详细列表 2) Ls -lh 吧文件大小以人性化的方式展开 3) ls -a 显示所有的文件,包括隐藏文件,隐藏文件是已.开头的文件 4) ll 等于 ...
- Bootstarp5第二弹
四.网格系统 网格系统根据设备屏幕尺寸大小分为6类: col-<!--任意屏幕--> col-sm-<!--平板 - 屏幕宽度等于或大于 576px.--> col-md-&l ...