嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结相关的知识,希望对你有一定的参考价值。

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

首先仔细阅读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

以上是关于嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式开发之hi3519---fifo ringbuffer

嵌入式开发之hisilicon---hi3536 处理器简介

嵌入式开发之hi3519---spi nor flash启动

嵌入式开发之hi3516---GV7601 SPI通信问题

嵌入式开发之hi3519---GPIO 驱动

嵌入式开发之hi3519--- pcie dma和dma cache 缓存更新sync memery