平台:Hi3531

PHY:RTL8211

现象:在uboot中执行ping命令的时候,总是超时。

过程:

使用uboot自带的phy操作命令mii读出的数据全是0xff。这里要介绍一下uboot中的phy寄存器操作命令mii。

关于uboot中的mii命令可以参见common/cmd_mii.c。

注意:在使用mii命令之前应该执行一次ping或者其他的会发生联网动作的命令(如tftp、dhcp)。

使用范例:

mii write 0 0 0x8000    向地址为0的phy芯片的0寄存器写入0x8000

mii  read 0 0     读取地址为0的phy芯片的寄存器0的值

mii dump  0 0     读取地址为0的phy芯片的寄存器0的值。结果更具可读性:

mii dump 0 1   读取地址为0的phy芯片的寄存器1的值。结果更具可读性:

接着上面的内容:

由于对uboot代码不是很熟,刚开始走了些弯路,直接去分析uboot代码了,因为这个版本的硬件跟上一个没什么区别,使用的也是同一款phy芯片。然后有分析了是不是3531与rtl8211的接口工作模式不对(支持RGMII和MII,实际使用的是RGMII),是不是与RGMII接口相关的管脚复用功能出错,是不是phy芯片的地址有问题(phy的地址是设计PCB板子的时候定死的),是不是RGMII的接口错了(我的意思是:因为3531支持两个GMAC,所以有RGMII0和RGMII1,实际使用的是RGMII0),是不是没有有效的芯片复位

经过一番折腾,最后发现时3531配置rtl8211是使用的MDIO的管脚在修改硬件时忘记去掉了下拉电阻。具体情况是这个样子:

3531的BOOTROMSEL和MDCK是复用的,刚开始BOOTROM_SEL是接了一个4.7k的电阻接地的,这种情况下不支持从fastboot启动,为了调试方便,需要从fastbot启动,需要将BOOTROM_SEL拉高,所以又在BOOTROM_SEL引脚上焊了一个0欧姆的电阻接到VCC3.3上,而没有去掉那个4.7K的下拉电阻。这种情况他下可能导致MDCK的时钟信号不正常。

解决办法: 将那个4.7k的下拉电阻去掉,焊到刚才那个0欧姆电阻的位置上。

所以以后如果遇到在芯片基本没动的情况下遇到的问题,最好先确认一下是不是硬件的问题(如地址、接口),如果刚开始就用示波器量一下MDCK的波形是不是正常就不是走弯路了。

在用mii命令读phy寄存器时,如果读到的全是ff,可能的问题:phy的地址、mdio接口。

最新文章

  1. 在Silverlight宿主html页面添加按钮无法显示
  2. python生成带参数二维码
  3. 25个有用的jQuery日历和日期选取插件
  4. JSF 2 link, commandLink and outputLink example
  5. SVN服务器的搭建 分类: 网络 2014-11-27 01:18 204人阅读 评论(4) 收藏
  6. 读书笔记之 - javascript 设计模式 - 观察者模式
  7. 基于visual Studio2013解决面试题之0503取最大数字字符串
  8. hdu 4864 Task(贪婪啊)
  9. .NET链接Oracle 参数绑定问题
  10. SSH项目的pom.xml文件
  11. Python(Django)项目与Apache的管理
  12. Mysql修改字段类型,修改字段名
  13. [c++]base64编解码 and image
  14. MYSQL Range
  15. vs2013中,自定义mvc 添加视图脚手架
  16. 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理
  17. 用UNetbootin轻松把Linux操作系统装进U盘
  18. 【树状DP】星象仪
  19. Spark源码分析 – SparkContext
  20. java内存区域的分布

热门文章

  1. 第一百九十二天 how can I 坚持
  2. centos下apache安装后无法访问
  3. Codeforces 710 E. Generate a String (dp)
  4. StructLayout特性
  5. react native listview 一个有用的属性,用作两列布局
  6. yii缓存设置使用
  7. Web服务器与Web系统发布
  8. Java调用Telnet示例
  9. (剑指Offer)面试题29:数组中出现次数超过一半的数字
  10. js 判断pc与手机