博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结
阅读量:6208 次
发布时间:2019-06-21

本文共 1551 字,大约阅读时间需要 5 分钟。

首先调试检查硬件,再调试软件

首先仔细阅读phy和主芯片datesheet ,尤其着重阅读mii寄存器,它是mac和phy交换信息的媒介。

硬件注意:关于phy的芯片需要注意的有几点:1、mdio接口和rgmii或者mii接口是否正确。2、电源是否稳定,晶振是否起振并且频率匹配。3、phy地址的配置是否正确,不能是0地址,因为0地址默认是所以芯片的地址。4、phy芯片输出时钟是否正确。4、phy和主芯片rgmii接口电平是否匹配。5、phy间的线序是否正确以及线路是否完好。6、mac和phy间的数据速率是否匹配即都是千兆百兆或10兆。

关于主芯片mac部分接口注意:1、rgmii或者mii以及mdio接口是否正确。2、mdio时序是否正确。3、rgmii时钟是否正确。

 

需要了解自协商过程以及mac->phy->phy->mac中间的连接,如果有一个断了就不能正确通信,因此首先得确保每段连接的接口物理和时序是正确的:对于phy间就是自协商成功,对于mac和phy间就是rgmii的时序正确即确保都是相同的数据速率(千兆百兆或10兆)。

 

mii寄存器解读:Status Register 0x01以及Extended Status Register 0x0F是用来显示phy自身能力以及当前状态的寄存器,因此有些值是默认的不能修改的,Link Partner Ability Register 0x05是用来显示连接伙伴能力的寄存器,而最终的协商结果是在Control Register 0x00的6、13 SPEED SELECTION和8 DUPLEX MODE位中的,因此程序中读取phy连接速度时应该读取该寄存器的值,而不是自身能力寄存器的值。海思的uboot中就出现了该错误。

 

注意mdio接口是主从接口可以一拖多,所以地址尤为重要,00地址是广播地址,不能使用该地址,uboot mii命令的使用,其可以驱动mdio接口,可以用此来调试phy芯片寄存器!!关于其应用可以在common/cmd_mii.c 文件结尾出看到,或者此博文中http://www.cnblogs.com/pengdonglin137/p/3682637.html

 

关于RGMII时序问题,rgmii的发送和接收时钟一直是125Mhz,不过在100M和10M模式时,数据的采样频率会延迟一些时钟,因此在mac端的数据要保持一些时钟,否则时序会出错!!

 

关于phy芯片的配置,正常情况下phy寄存器因为是mii标准寄存器,所以用原厂自带uboot配置就可以,除非自己调试phy芯片自带的功能,才配置其特殊功能寄存器,比如回环测试等。

 

在调试ar8031时可以通过loopback来测试环路是否通,有本地回环测试和远端回环测试,这样分别检查本地和远端回路是否联通,这样很容易发现哪边不通,具体看ar8031手册2.5.2,来通过mii配置寄存器。100M loopback: register 0x0 = 0xA100是错误的应该是6100。

本地回环测试就是ping自己的ip地址,这样数据就会接收回来。

远端回环测试

 

 

 

软件方面注意:需要分两部分来调试:1、phy芯片mii标准寄存器的配置以及phy工作原理,以及主芯片mac部分的寄存器配置和时钟配置是否正确,phy接口配置正确,mdio部分配置是否正确。

2、详细了解uboot下mac和phy驱动架构。3、在uboot代码中跟踪调试。

 

 

 

下面介绍uboot-2010.06中hi3531的mac phy驱动架构以及工作流程。

 

 

未完待续。。。。

 

http://blog.csdn.net/xiaoaid01/article/details/51104837

你可能感兴趣的文章
Android 自定义跑马灯
查看>>
值得收藏的 Android Studio 插件
查看>>
机器学习之GBDT(简单理解)
查看>>
流量隔离方案 Dpath 护航双十一新零售
查看>>
阿里巴巴开源 Spring Cloud Alibaba,加码微服务生态建设
查看>>
学习大数据福音!分布式计算入门
查看>>
Android Studio自定义模板 做开发竟然可以如此轻松 前篇
查看>>
Laravel 开源电商体验与部署
查看>>
for循环异步操作问题小结
查看>>
Dubbo的总体架构
查看>>
记一次spring cloud踩坑
查看>>
Android使用SVG矢量图打造酷炫动效!
查看>>
Heap(堆结构/优先队列)-Swift实现
查看>>
原型与原型链
查看>>
Java中的Type类型详解
查看>>
dubbo源码解析-服务引用原理
查看>>
UI2Code智能生成Flutter代码--整体设计篇
查看>>
ES6系统学习----从Apollo Client看解构赋值
查看>>
使用EHPC实现“完美并行”的高效批处理方案
查看>>
区块链简单研读笔记
查看>>