uboot找不到phy地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uboot找不到phy地址相关的知识,希望对你有一定的参考价值。
参考技术A uboot找不到phy地址,如果是UBOOT下,那就用mii read [addr] 2),一个个地址去尝试,如果能获取到PHY的ID信息与手册匹配,那就100%是它啦。 参考技术B ) 查看phy 地址是否和硬件上⼀致,读半天寄存器读不到值,结果phy地址给错了(2)读芯⽚Id 02 03寄存器 看和芯⽚⼿册是否⼀致,不⼀致可能mdio 通讯有问题。
(3)link 问题。读取01控制寄存器,看⾃协商是否开着。开着以后,插⽹线之前读取状态寄存器, 插⽹
线之后再读取状态寄存器。看前后值是否有变化,没有变 化就说明link 不上,硬件可能存在问题,link
过程是phy 和⽹线之间的协商
⽹络不通可以查看状态寄存器,状态寄存器是只读的。
hi3531 SDK 编译 uboot, 改动PHY地址, 改动 uboot 參数 .
一,编译uboot
SDK文档写得比較清楚了,写一下须要注意的地方吧.
1. 之前用SDK里和别人给的已经编译好的uboot,使用fastboot工具都刷不到板子上.最后自己用SDK里uboot源代码编译的则成功刷了进去,不知道详细什么问题,可是一直没试试有点不应该了.
2. 文档中说要用一个Excel表格做配置然后用mkboot.sh将配置文件和uboot.bin文件一起生成终于的uboot,我一直纠结那个Excel不能配置,里面的參数也看不懂.谁知道事实上不用配影响也不大.
3. 之前用别人的uboot刷到板子上一直提示SPI 不识别,用自己编译的就能够了,可能我用的是最新的SDK,SPI支持的比較多吧.
二, 改动PHY 地址
板子之前事实上就有uboot, 可是网口不通,这是PHY地址设置的问题. 事实上到如今我对PHY地址了解的仍然不太多.PHY应该就是网络OSI模型的物理层(Physical),Hi3531 芯片支持双网卡,因此有两个 PHY 地址,PHYADDR0,PHYADDR1, 如今就是要把PHY地址设对,详细原理不太懂,反正就一个个的试吧.网友给了好多帮助,以下是一位网友从海思那边得到的邮件回复内容.
1. 内核下的方法:
在osdvr/kernel/linux -3.0.y文件夹下执行
“make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- menuconfig”
在 menuconfig 菜单下, 选择下面选项:
Device Drivers --->
[*] Network device support --->
[*] Ethernet (1000 Mbit) --->
<M> STMicroelectronics 10/100/1000 Ethernet driver --->
(1) STMMAC MAC #0 PHY ID << 表示 phy 地址是 1.
(2) STMMAC MAC #1 PHY ID << 表示 phy 地址是 2.
2. u-boot 代码中, 改动方法例如以下:
u-boot代码中,改动 “include\configs\godnet.h” 文件:
#define CONFIG_NET_STMMAC
#define CONFIG_TNK
#ifdef CONFIG_NET_STMMAC
#define STMMAC_GMACADDR (0x101c0000)
#define STMMAC_DMAADDR (0x101c1000)
#define STMMAC_IOSIZE (0x10000)
#define STMMAC_FRQDIV (0)
#define STMMAC_PHYADDR0 (1) << 表示 phy 地址是 1.
#define STMMAC_PHYADDR1 (2) << 表示 phy 地址是 2.
#define STMMAC_PHYNAME "0:01"
#define STMMAC_RGMII
#define CONFIG_PHY_GIGE
#endif /* CONFIG_NET_STMMAC */
详细我没试过哦!
在osdvr/kernel/linux -3.0.y文件夹下执行
“make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- menuconfig”
在 menuconfig 菜单下, 选择下面选项:
Device Drivers --->
[*] Network device support --->
[*] Ethernet (1000 Mbit) --->
<M> STMicroelectronics 10/100/1000 Ethernet driver --->
(1) STMMAC MAC #0 PHY ID << 表示 phy 地址是 1.
(2) STMMAC MAC #1 PHY ID << 表示 phy 地址是 2.
2. u-boot 代码中, 改动方法例如以下:
u-boot代码中,改动 “include\configs\godnet.h” 文件:
#define CONFIG_NET_STMMAC
#define CONFIG_TNK
#ifdef CONFIG_NET_STMMAC
#define STMMAC_GMACADDR (0x101c0000)
#define STMMAC_DMAADDR (0x101c1000)
#define STMMAC_IOSIZE (0x10000)
#define STMMAC_FRQDIV (0)
#define STMMAC_PHYADDR0 (1) << 表示 phy 地址是 1.
#define STMMAC_PHYADDR1 (2) << 表示 phy 地址是 2.
#define STMMAC_PHYNAME "0:01"
#define STMMAC_RGMII
#define CONFIG_PHY_GIGE
#endif /* CONFIG_NET_STMMAC */
详细我没试过哦!
这个是海思给我的
看了这个至少能定位到uboot改动的位置了,但一開始一直在改下 边 0:01 类似
以上是关于uboot找不到phy地址的主要内容,如果未能解决你的问题,请参考以下文章