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

首先仔细阅读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调试总结的更多相关文章

  1. 嵌入式开发之zynq---Zynq PS侧I2C驱动架构

    http://blog.chinaunix.net/uid-24148050-id-120532.html http://bbs.csdn.net/topics/390538368?page=1 ht ...

  2. 嵌入式开发之NorFlash 和NandFlash

    http://blog.csdn.net/tigerjibo/article/details/9322035 [摘要]:作为一个嵌入式工程师,要对NorFlash 和NandFlash要有最起码的认知 ...

  3. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScale+  MPSoC架构 Xilinx新一代Zynq针对控制.图像和网络应用推出了差异化的产品系,这 ...

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

    author:pkf qq:1327706646 1.官方hi3519默认是硬件3byte 地址模式,配置完ddr始终后,sdkv100.020是可以支持正常启动,用到低位16Mflash内存 2.如 ...

  5. 嵌入式开发之zynq——赛灵思的一款两a9加一fpga芯片的开发板

    没办法,回家入职新公司,做通信的,用到这款zynq加ad9163射频架构的开发版,要我做驱动,这可是初次接触zynq,带fpga的集成芯片,心里还是有点惊喜和忧愁,忧愁怎么最快啃下这个硬骨头,好吧上网 ...

  6. Jetty 开发指南: 嵌入式开发之HelloWorld

    Jetty 嵌入式之 HelloWorld 本节提供一个教程,演示如何快速开发针对Jetty API的嵌入式代码. 1. 下载 Jar 包 Jetty被分解为许多jar和依赖项,通过选择最小的jar集 ...

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

    在一个嵌入式系统中使用最多的莫过于 通用输入输出 GPIO口.看到论坛中经常有朋友问海思为什么没有提供GPIO驱动.其实不然. 在海思SDK  xxx/osdrv/tools/board_tools/ ...

  8. 嵌入式开发之uart---rs232 和rs485 和rj45和usb简介

    (1) profilebus和can(control控制器局域网)和hub(集线器) (uart)通用异步传输 rs232: ibm 提出的,两根线,按位bit传输,是端到端的单信号电平模式,理论上有 ...

  9. 嵌入式开发之makefile---交叉编译静态库和动态库的生成和调用

    c和cpp 混合的动态库生成: $(LIBSO): $(COBJS) $(CPPOBJS) $(CPP) -shared -o $@ $^ $(LIBS) ////////////////////// ...

随机推荐

  1. Codeforces.264E.Roadside Trees(线段树 DP LIS)

    题目链接 \(Description\) \(Solution\) 还是看代码好理解吧. 为了方便,我们将x坐标左右反转,再将所有高度取反,这样依然是维护从左到右的LIS,但是每次是在右边删除元素. ...

  2. Codeforces 989E A Trance of Nightfall 矩阵快速幂+DP

    题意:二维平面上右一点集$S$,共$n$个元素,开始位于平面上任意点$P$,$P$不一定属于$S$,每次操作为选一条至少包含$S$中两个元素和当前位置$P$的直线,每条直线选取概率相同,同一直线上每个 ...

  3. kaggle PredictingRedHatBusinessValue 简单的xgboost的交叉验证

    PredictingRedHatBusinessValue 这个超级简单的比赛 随手在一个kernels上面随便改了改,交叉验证的xgboost: 感觉还是稍微有一点借鉴意义的(x 注释的部分是One ...

  4. oracle中的decode的使用(转)

    地址:http://www.cnblogs.com/juddhu/archive/2012/03/07/2383101.html 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值 ...

  5. MVVM设计模式和在WPF中的实现(四) 事件绑定

    系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中的实现(三)命令绑定 MVVM模式解析和在WPF中的 ...

  6. FT232H FT2232H FT4232H

    The FT232H is the single channel version, the FT2232H is the dual-channel, and there is also anFT423 ...

  7. 在AngularJS中实现一个延迟加载的Directive

    所谓的延迟加载通常是:直到用户交互时才加载.如何实现延迟加载呢? 需要搞清楚三个方面: 1.html元素的哪个属性需要延迟加载?2.需要对数据源的哪个字段进行延迟加载?3.通过什么事件来触发延迟加载? ...

  8. Android GUI之View绘制流程

    在上篇文章中,我们通过跟踪源码,我们了解了Activity.Window.DecorView以及View之间的关系(查看文章:http://www.cnblogs.com/jerehedu/p/460 ...

  9. Spark2.3(三十五)Spark Structured Streaming源代码剖析(从CSDN和Github中看到别人分析的源代码的文章值得收藏)

    从CSDN中读取到关于spark structured streaming源代码分析不错的几篇文章 spark源码分析--事件总线LiveListenerBus spark事件总线的核心是LiveLi ...

  10. art.template 循环里面分组。

    后台提供给我们一个数组,我们要用模版实现上面的格式输出怎么版呢? 下面就是解决方案: <h2>循环4个一组</h2> <script type="text/ht ...